; RUN: if [ %llvmver -lt 10 ]; then %opt < %s %loadEnzyme -enzyme -enzyme-preopt=false -mem2reg -instsimplify -adce -loop-deletion -correlated-propagation -simplifycfg -S | FileCheck %s; fi
; RUN: if [ %llvmver -lt 10 ]; then %opt < %s %newLoadEnzyme -enzyme-preopt=false -passes="enzyme,function(mem2reg,instsimplify,adce,loop(loop-deletion),correlated-propagation,%simplifycfg)" -S | FileCheck %s; fi

source_filename = "ode.cpp"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

%"class.std::ios_base::Init" = type { i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider" = type { i8* }
%union.anon = type { i64, [8 x i8] }
%"class.adept::Stack" = type <{ %"class.adept::internal::StackStorageOrig", double*, %"class.std::vector", %"class.std::vector", %"class.std::__cxx11::list", %"struct.std::_List_iterator", i32, i32, i32, i32, i8, i8, i8, i8, i8, [3 x i8] }>
%"class.adept::internal::StackStorageOrig" = type { %"struct.adept::internal::Statement"*, double*, i32*, i32, i32, i32, i32 }
%"struct.adept::internal::Statement" = type { i32, i32 }
%"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 { i32*, i32*, i32* }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl" }
%"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl" = type { %"struct.std::_List_node" }
%"struct.std::_List_node" = type { %"struct.std::__detail::_List_node_base", %"struct.__gnu_cxx::__aligned_membuf" }
%"struct.std::__detail::_List_node_base" = type { %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"* }
%"struct.__gnu_cxx::__aligned_membuf" = type { [8 x i8] }
%"struct.std::_List_iterator" = type { %"struct.std::__detail::_List_node_base"* }
%"struct.adept::internal::EndIndex" = type { i8 }
%"class.adept::internal::AllIndex" = type { i8 }
%"class.boost::detail::multi_array::extent_gen" = type { %"class.boost::array" }
%"class.boost::array" = type { [1 x %"class.boost::detail::multi_array::extent_range"] }
%"class.boost::detail::multi_array::extent_range" = type { %"struct.std::pair" }
%"struct.std::pair" = type { i64, i64 }
%"struct.boost::detail::multi_array::index_gen" = type { %"class.boost::array.30" }
%"class.boost::array.30" = type { [1 x %"class.boost::detail::multi_array::index_range"] }
%"class.boost::detail::multi_array::index_range" = type <{ i64, i64, i64, i8, [7 x i8] }>
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::new_allocator" = type { i8 }
%"class.adept::invalid_operation" = type { %"class.adept::array_exception" }
%"class.adept::array_exception" = type { %"class.adept::exception" }
%"class.adept::exception" = type { %"class.std::exception", %"class.std::__cxx11::basic_string" }
%"class.std::exception" = type { i32 (...)** }
%"class.__gnu_cxx::new_allocator.4" = type { i8 }
%"class.std::allocator.0" = type { i8 }
%"class.adept::stack_already_active" = type { %"class.adept::autodiff_exception" }
%"class.adept::autodiff_exception" = type { %"class.adept::exception" }
%"class.adept::gradients_not_initialized" = type { %"class.adept::autodiff_exception" }
%"struct.std::_List_const_iterator" = type { %"struct.std::__detail::_List_node_base"* }
%"struct.adept::Gap" = type { i32, i32 }
%"struct.std::_List_node.73" = type { %"struct.std::__detail::_List_node_base", %"struct.__gnu_cxx::__aligned_membuf.74" }
%"struct.__gnu_cxx::__aligned_membuf.74" = type { [8 x i8] }
%"class.std::basic_ostream" = type { i32 (...)**, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", %"class.std::basic_ostream"*, i8, i8, %"class.std::basic_streambuf"*, %"class.std::ctype"*, %"class.std::num_put"*, %"class.std::num_get"* }
%"class.std::ios_base" = type { i32 (...)**, i64, i64, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"class.std::locale" }
%"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"class.std::ios_base"*, i32)*, i32, i32 }
%"struct.std::ios_base::_Words" = type { i8*, i64 }
%"class.std::locale" = type { %"class.std::locale::_Impl"* }
%"class.std::locale::_Impl" = type { i32, %"class.std::locale::facet"**, i64, %"class.std::locale::facet"**, i8** }
%"class.std::locale::facet" = type <{ i32 (...)**, i32, [4 x i8] }>
%"class.std::basic_streambuf" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"class.std::locale" }
%"class.std::ctype" = type <{ %"class.std::locale::facet.base", [4 x i8], %struct.__locale_struct*, i8, [7 x i8], i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8, [6 x i8] }>
%"class.std::locale::facet.base" = type <{ i32 (...)**, i32 }>
%struct.__locale_struct = type { [13 x %struct.__locale_data*], i16*, i32*, i32*, [13 x i8*] }
%struct.__locale_data = type opaque
%"class.std::num_put" = type { %"class.std::locale::facet.base", [4 x i8] }
%"class.std::num_get" = type { %"class.std::locale::facet.base", [4 x i8] }
%"class.adept::feature_not_available" = type { %"class.adept::exception" }
%"class.adept::Array" = type { float*, %"class.adept::Storage"*, %"class.adept::ExpressionSize", %"class.adept::ExpressionSize" }
%"class.adept::Storage" = type opaque
%"class.adept::ExpressionSize" = type { [2 x i32] }
%"class.adept::SpecialMatrix" = type { float*, %"class.adept::Storage"*, i32, i32 }
%"class.adept::SpecialMatrix.9" = type { float*, %"class.adept::Storage"*, i32, i32 }
%"class.adept::Array.12" = type { double*, %"class.adept::Storage.14"*, %"class.adept::ExpressionSize", %"class.adept::ExpressionSize" }
%"class.adept::Storage.14" = type <{ double*, i32, i32, i32, [4 x i8] }>
%"class.adept::SpecialMatrix.15" = type { double*, %"class.adept::Storage.14"*, i32, i32 }
%"class.adept::SpecialMatrix.17" = type { double*, %"class.adept::Storage.14"*, i32, i32 }
%"struct.adept::internal::Packet" = type { %union.anon.19 }
%union.anon.19 = type { <2 x double> }
%"struct.adept::Block" = type { [2 x double] }
%"class.std::bad_alloc" = type { %"class.std::exception" }
%"class.adept::dependents_or_independents_not_identified" = type { %"class.adept::autodiff_exception" }
%"class.__gnu_cxx::__normal_iterator" = type { i32* }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl" }
%"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl" = type { %"struct.adept::Block"*, %"struct.adept::Block"*, %"struct.adept::Block"* }
%"class.std::allocator.22" = type { i8 }
%"class.__gnu_cxx::new_allocator.23" = type { i8 }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { i32 (...)**, i64 }
%"class.std::basic_ostream.base" = type { i32 (...)** }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_iostream" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base", %"class.std::basic_ios" }
%"class.adept::Array.25" = type { float*, %"class.adept::Storage"*, %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27" }
%"class.adept::ExpressionSize.27" = type { [1 x i32] }
%"class.adept::Array.28" = type { double*, %"class.adept::Storage.14"*, %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27" }
%"struct.adept::internal::GradientIndex" = type { i8 }
%struct.timeval = type { i64, i64 }
%"class.boost::array.31" = type { [2048 x double] }
%"class.adept::Array.32" = type { %"struct.adept::internal::GradientIndex.34", double*, %"class.adept::Storage.14"*, %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27" }
%"struct.adept::internal::GradientIndex.34" = type { i32 }
%"class.adept::Active" = type <{ double, i32, [4 x i8] }>
%"class.adept::ActiveReference" = type <{ double*, i32, [4 x i8] }>
%"struct.adept::internal::BinaryOperation" = type { %"class.adept::Active"*, %"struct.adept::internal::BinaryOperation.38" }
%"struct.adept::internal::BinaryOperation.38" = type { %"class.adept::Active"*, %"class.adept::Active"* }
%"struct.adept::internal::BinaryOperation.40" = type { [8 x i8], %"struct.adept::internal::BinaryOperation.42", %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOperation.42" = type { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOperation.44" = type { [8 x i8], %"struct.adept::internal::BinaryOperation.46", %"class.adept::Active"* }
%"struct.adept::internal::BinaryOperation.46" = type { %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.64" }
%"struct.adept::internal::BinaryOperation.48" = type { [8 x i8], %"struct.adept::internal::BinaryOperation.50", %"class.adept::Active"* }
%"struct.adept::internal::BinaryOperation.50" = type { %"struct.adept::internal::BinaryOperation.52", %"class.adept::Active"* }
%"struct.adept::internal::BinaryOperation.52" = type { %"class.adept::Active"*, %"struct.adept::internal::BinaryOperation.54" }
%"struct.adept::internal::BinaryOperation.54" = type { %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOpScalarLeft"* }
%"struct.adept::internal::BinaryOperation.56" = type { [8 x i8], %"struct.adept::internal::BinaryOperation.58", %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOperation.58" = type { [8 x i8], %"struct.adept::internal::BinaryOperation.60", %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOperation.60" = type { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOpScalarLeft" = type { %"struct.adept::internal::Packet.63", %"class.adept::ActiveReference"* }
%"struct.adept::internal::Packet.63" = type { i32 }
%"struct.adept::internal::BinaryOperation.64" = type { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* }
%"struct.adept::internal::BinaryOpScalarRight" = type <{ %"class.adept::Active"*, %"struct.adept::internal::Packet.63", [4 x i8] }>
%"struct.adept::internal::BinaryOperation.67" = type { %"struct.adept::internal::BinaryOperation.69", %"class.adept::Active"* }
%"struct.adept::internal::BinaryOperation.69" = type { %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.71" }
%"struct.adept::internal::BinaryOperation.71" = type { %"class.adept::Active"*, %"class.adept::ActiveReference"* }
%"struct.adept::Expression.36" = type { i8 }
%"struct.adept::Expression.35" = type { i8 }
%"struct.adept::Expression.39" = type { i8 }
%"struct.adept::Expression.37" = type { i8 }
%"struct.adept::Expression.43" = type { i8 }
%"struct.adept::Expression.41" = type { i8 }
%"struct.adept::Expression.61" = type { i8 }
%"struct.adept::Expression.59" = type { i8 }
%"struct.adept::Expression.57" = type { i8 }
%"struct.adept::Expression.62" = type { i8 }
%"struct.adept::Expression.55" = type { i8 }
%"struct.adept::Expression.53" = type { i8 }
%"struct.adept::Expression.51" = type { i8 }
%"struct.adept::Expression.49" = type { i8 }
%"struct.adept::Expression.66" = type { i8 }
%"struct.adept::Expression.65" = type { i8 }
%"struct.adept::Expression.47" = type { i8 }
%"struct.adept::Expression.45" = type { i8 }
%"struct.adept::Expression.72" = type { i8 }
%"struct.adept::Expression.70" = type { i8 }
%"struct.adept::Expression.68" = type { i8 }
%"struct.adept::internal::BinaryOperation.79" = type { %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80" }
%"struct.adept::internal::BinaryOperation.80" = type { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* }
%"struct.adept::internal::BinaryOpScalarRight.82" = type { %"class.adept::Active"*, %"struct.adept::internal::Packet" }
%"struct.adept::Expression.83" = type { i8 }
%"struct.adept::Expression.81" = type { i8 }
%"struct.adept::Expression.78" = type { i8 }
%struct.timezone = type { i32, i32 }
%"class.std::allocator.3" = type { i8 }
%"class.__gnu_cxx::new_allocator.1" = type { i8 }
%"class.std::basic_istream" = type { i32 (...)**, i64, %"class.std::basic_ios" }
%"struct.std::__allocated_ptr" = type { %"class.std::allocator.3"*, %"struct.std::_List_node.73"* }
%"class.adept::invalid_dimension" = type { %"class.adept::array_exception" }
%"class.adept::internal::ScratchVector" = type { i8 }
%"class.adept::ExpressionSize.75" = type { i8 }
%"class.adept::internal::ScratchVector.76" = type { [3 x double] }
%"struct.adept::internal::Divide" = type { i8 }
%"struct.adept::internal::Multiply" = type { i8 }
%"class.adept::internal::ScratchVector.77" = type { [2 x double] }
%"struct.adept::internal::Add" = type { i8 }
%"struct.adept::internal::Subtract" = type { i8 }
%"class.adept::internal::ScratchVector.84" = type { [5 x double] }
%"struct.adept::internal::Scalar" = type { i32 }
%"class.adept::gradient_out_of_range" = type { %"class.adept::autodiff_exception" }

$_ZN5adept17invalid_operationC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EED2Ev = comdat any

$_ZNSt6vectorIiSaIiEED2Ev = comdat any

$_ZN5adept20stack_already_activeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZNK5adept5Stack25gradients_are_initializedEv = comdat any

$_ZN5adept25gradients_not_initializedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv = comdat any

$_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_ = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv = comdat any

$_ZNKSt14_List_iteratorIN5adept3GapEEptEv = comdat any

$_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_ = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E = comdat any

$_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E = comdat any

$_ZNSt14_List_iteratorIN5adept3GapEEppEi = comdat any

$_ZNKSt14_List_iteratorIN5adept3GapEEdeEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE6insertESt20_List_const_iteratorIS2_EOS2_ = comdat any

$_ZN5adept3GapC2Ei = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9push_backEOS2_ = comdat any

$_ZNSt14_List_iteratorIN5adept3GapEEmmEi = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE4backEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8pop_backEv = comdat any

$_ZN5adept3GapC2Eii = comdat any

$_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv = comdat any

$_ZNKSt20_List_const_iteratorIN5adept3GapEEneERKS2_ = comdat any

$_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE3endEv = comdat any

$_ZNKSt20_List_const_iteratorIN5adept3GapEEptEv = comdat any

$_ZNSt20_List_const_iteratorIN5adept3GapEEppEi = comdat any

$_ZNK5adept5Stack12n_statementsEv = comdat any

$_ZNK5adept5Stack22n_allocated_statementsEv = comdat any

$_ZNK5adept5Stack12n_operationsEv = comdat any

$_ZNK5adept5Stack22n_allocated_operationsEv = comdat any

$_ZNK5adept5Stack22n_gradients_registeredEv = comdat any

$_ZNK5adept5Stack13max_gradientsEv = comdat any

$_ZNK5adept5Stack10i_gradientEv = comdat any

$_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE4sizeEv = comdat any

$_ZNK5adept5Stack21n_allocated_gradientsEv = comdat any

$_ZNK5adept5Stack12n_dependentsEv = comdat any

$_ZNK5adept5Stack14n_independentsEv = comdat any

$_ZNKSt6vectorIiSaIiEE4sizeEv = comdat any

$_ZNKSt6vectorIiSaIiEEixEm = comdat any

$_ZN5adept8internal9StatementC2Ev = comdat any

$_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZN5adept9exceptionD2Ev = comdat any

$_ZN5adept3invIfEENS_5ArrayILi2ET_Lb0EEERKS3_ = comdat any

$_ZN5adept3invIfLNS_8internal21SymmMatrixOrientationE0EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_ = comdat any

$_ZN5adept3invIfLNS_8internal21SymmMatrixOrientationE1EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_ = comdat any

$_ZN5adept3invIdEENS_5ArrayILi2ET_Lb0EEERKS3_ = comdat any

$_ZN5adept3invIdLNS_8internal21SymmMatrixOrientationE0EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_ = comdat any

$_ZN5adept3invIdLNS_8internal21SymmMatrixOrientationE1EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_ = comdat any

$_ZN5adept8internal6PacketIdEC2Ev = comdat any

$_ZN5adept8internal6PacketIdEC2EPKd = comdat any

$_ZN5adept8internal6PacketIdEC2Ed = comdat any

$_ZN5adept8internalmlERKNS0_6PacketIdEES4_ = comdat any

$_ZN5adept8internal6PacketIdEpLERKS2_ = comdat any

$_ZNK5adept8internal6PacketIdE3putEPd = comdat any

$_ZN5adept5BlockILi2EdEC2Ev = comdat any

$_ZN5adept5BlockILi2EdEixEi = comdat any

$_ZNK5adept5Stack13n_independentEv = comdat any

$_ZN5adept8internal13alloc_alignedIdEEPT_i = comdat any

$_ZNK5adept5Stack11n_dependentEv = comdat any

$_ZN5adept8internal12free_alignedIdEEvPT_ = comdat any

$_ZNKSt6vectorIiSaIiEE5emptyEv = comdat any

$_ZN5adept41dependents_or_independents_not_identifiedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZNSt6vectorIiSaIiEEixEm = comdat any

$_ZNSaIN5adept5BlockILi2EdEEEC2Ev = comdat any

$_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_ = comdat any

$_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv = comdat any

$_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm = comdat any

$_ZN5adept5BlockILi2EdE4zeroEv = comdat any

$_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EED2Ev = comdat any

$_ZStorSt13_Ios_OpenmodeS_ = comdat any

$_ZN5adept5solveIfEENS_5ArrayILi1ET_Lb0EEERKNS1_ILi2ES2_Lb0EEERKS3_ = comdat any

$_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIfEENS_5ArrayILi2ET_Lb0EEERKS3_S5_ = comdat any

$_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIdEENS_5ArrayILi1ET_Lb0EEERKNS1_ILi2ES2_Lb0EEERKS3_ = comdat any

$_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIdEENS_5ArrayILi2ET_Lb0EEERKS3_S5_ = comdat any

$_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_ = comdat any

$_ZN5adept5ArrayILi1EdLb0EEC2Ei = comdat any

$_ZN5adept5ArrayILi1EdLb0EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valuentLb0EERdE4typeES5_ = comdat any

$_ZN5adept5ArrayILi1EdLb0EED2Ev = comdat any

$_ZN5boost6detail11multi_array10extent_genILm0EEC2Ev = comdat any

$_ZN5boost6detail11multi_array9index_genILi0ELi0EEC2Ev = comdat any

$_ZN5boost5arrayIdLm2048EE7c_arrayEv = comdat any

$_ZNK5boost5arrayIdLm2048EE4dataEv = comdat any

$_ZN5boost5arrayIdLm2048EE4dataEv = comdat any

$_ZN5boost5arrayIdLm2048EEixEm = comdat any

$_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_ = comdat any

$_ZN5adept6ActiveIdEC2IdNS_15ActiveReferenceIdEEEERKNS_10ExpressionIT_T0_EEPNS_8internal9enable_ifIXaaeqsrS7_4rankLi0EsrS7_9is_activeEvE4typeE = comdat any

$_ZN5adept15ActiveReferenceIdED2Ev = comdat any

$_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE = comdat any

$_ZN5adeptdvINS_6ActiveIdEENS_8internal15BinaryOperationIdS2_NS3_8MultiplyES2_EEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINS8_4typeENS9_4typeEE4typeES8_NS3_6DivideES9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSJ_ISC_S9_EE = comdat any

$_ZN5adeptmlINS_6ActiveIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE = comdat any

$_ZN5adept6ActiveIdEaSIdNS_8internal15BinaryOperationIdS1_NS3_6DivideENS4_IdS1_NS3_8MultiplyES1_EEEEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSA_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SA_EE = comdat any

$_ZN5adeptmlINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE = comdat any

$_ZN5adeptmlINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE = comdat any

$_ZN5adept6ActiveIdEC2IdNS_8internal15BinaryOperationIdNS4_IdNS_15ActiveReferenceIdEENS3_8MultiplyES6_EES7_S6_EEEERKNS_10ExpressionIT_T0_EEPNS3_9enable_ifIXaaeqsrSC_4rankLi0EsrSC_9is_activeEvE4typeE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSO_4typeENSP_4typeEE4typeESO_S8_SP_EEE4typeERKNS_10ExpressionISR_SO_EERKNSY_ISS_SP_EE = comdat any

$_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EENS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSN_4typeENSO_4typeEE4typeESN_SC_SO_EEE4typeERKNS_10ExpressionISQ_SN_EERKNSX_ISR_SO_EE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSI_4typeENSJ_4typeEE4typeESI_S8_SJ_EEE4typeERKNS_10ExpressionISL_SI_EERKNSS_ISM_SJ_EE = comdat any

$_ZN5adeptmlINS_6ActiveIdEENS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS_15ActiveReferenceIdEENS3_3AddES6_EES7_S6_EES7_S6_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiNS3_8MultiplyES6_EEEEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINSH_4typeENSI_4typeEE4typeESH_SD_SI_EEE4typeERKNS_10ExpressionISK_SH_EERKNSR_ISL_SI_EE = comdat any

$_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSD_4typeENSE_4typeEE4typeESD_NS1_8SubtractESE_EEE4typeERKNS_10ExpressionISG_SD_EERKNSO_ISH_SE_EE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS9_4typeENSA_4typeEE4typeES9_S5_SA_EEE4typeERKNS_10ExpressionISC_S9_EERKNSJ_ISD_SA_EE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE = comdat any

$_ZN5adeptplINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_3AddES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE = comdat any

$_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_ = comdat any

$_ZN5adeptmlIiNS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT_EE5valueENS3_18BinaryOpScalarLeftINS3_7promoteIS5_NT0_4typeEE4typeES5_NS3_8MultiplyES8_EEE4typeERKS5_RKNS_10ExpressionIS9_S8_EE = comdat any

$_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS_15ActiveReferenceIdEEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINSA_4typeENSB_4typeEE4typeESA_NS1_8MultiplyESB_EEE4typeERKNS_10ExpressionISE_SA_EERKNSM_ISF_SB_EE = comdat any

$_ZN5adeptplINS_6ActiveIdEEiEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_3AddES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_ = comdat any

$_Z13brusselator_fIN5adept6ActiveIdEEET_S3_S3_S3_ = comdat any

$_ZN5adept6ActiveIdEC2ERKS1_ = comdat any

$_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_S6_EES8_S6_EESC_NS4_IdNS3_19BinaryOpScalarRightIdS6_S8_iEES7_S1_EEEES8_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSP_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SP_EE = comdat any

$_ZN5adept6ActiveIdED2Ev = comdat any

$_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSK_4typeENSL_4typeEE4typeESK_SC_SL_EEE4typeERKNS_10ExpressionISN_SK_EERKNSU_ISO_SL_EE = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEENS2_IdS4_S5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE = comdat any

$_ZN5adeptmlINS_6ActiveIdEENS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS5_15BinaryOperationINS5_7promoteINS7_4typeENS8_4typeEE4typeES7_NS5_8MultiplyES8_EEE4typeERKNS_10ExpressionISB_S7_EERKNSJ_ISC_S8_EE = comdat any

$_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_NS4_IdS6_S7_S1_EEEESC_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSL_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SL_EE = comdat any

$_ZN5adept5StackC2Eb = comdat any

$_ZN5adept5ArrayILi1EdLb1EEC2Ei = comdat any

$_ZN5adept15ActiveReferenceIdEaSIdEENS_8internal9enable_ifIXsr17is_not_expressionIT_EE5valueERS1_E4typeERKS5_ = comdat any

$_ZNK5boost5arrayIdLm2048EEixEm = comdat any

$_ZN5adept5Stack13new_recordingEv = comdat any

$_ZNK5adept15ActiveReferenceIdE12set_gradientIdEEvRKT_ = comdat any

$_ZNK5adept15ActiveReferenceIdE12get_gradientEv = comdat any

$_ZN5adept5ArrayILi1EdLb1EED2Ev = comdat any

$_ZN5adept15array_exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZN5adept17invalid_operationD0Ev = comdat any

$_ZNK5adept9exception4whatEv = comdat any

$_ZN5adept9exceptionC2Ev = comdat any

$_ZN5adept15array_exceptionD0Ev = comdat any

$_ZNSt9exceptionC2Ev = comdat any

$_ZN5adept9exceptionD0Ev = comdat any

$__clang_call_terminate = comdat any

$_ZNSt14pointer_traitsIPcE10pointer_toERc = comdat any

$_ZSt9addressofIcEPT_RS0_ = comdat any

$_ZSt11__addressofIcEPT_RS0_ = comdat any

$_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_ = comdat any

$_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_ = comdat any

$_ZNSt11char_traitsIcE6assignERcRKc = comdat any

$_ZN9__gnu_cxx13new_allocatorIcED2Ev = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE8_M_clearEv = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEED2Ev = comdat any

$_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv = comdat any

$_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE7destroyIS2_EEvRS4_PT_ = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE21_M_get_Node_allocatorEv = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_put_nodeEPSt10_List_nodeIS2_E = comdat any

$_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv = comdat any

$_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE7destroyIS3_EEvPT_ = comdat any

$_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE10deallocateERS4_PS3_m = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE10deallocateEPS4_m = comdat any

$_ZN5adept18autodiff_exceptionC2Ev = comdat any

$_ZN5adept20stack_already_activeD0Ev = comdat any

$_ZN5adept18autodiff_exceptionD0Ev = comdat any

$_ZN5adept25gradients_not_initializedD0Ev = comdat any

$_ZN5adept21feature_not_availableD0Ev = comdat any

$_ZN5adept8internal6PacketIdEC2EDv2_d = comdat any

$_ZN5adept41dependents_or_independents_not_identifiedD0Ev = comdat any

$_ZN5adept8internal16StackStorageOrigC2Ev = comdat any

$_ZNSt6vectorIiSaIiEEC2Ev = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EEC2Ev = comdat any

$_ZN5adept8internal16StackStorageOrig10initializeEi = comdat any

$_ZNSt12_Vector_baseIiSaIiEEC2Ev = comdat any

$_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev = comdat any

$_ZNSaIiEC2Ev = comdat any

$_ZN9__gnu_cxx13new_allocatorIiEC2Ev = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EEC2Ev = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE10_List_implC2Ev = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE7_M_initEv = comdat any

$_ZNSaISt10_List_nodeIN5adept3GapEEEC2Ev = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEEC2Ev = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_set_sizeEm = comdat any

$_ZNSt10_List_nodeImE9_M_valptrEv = comdat any

$_ZN9__gnu_cxx16__aligned_membufImE6_M_ptrEv = comdat any

$_ZN9__gnu_cxx16__aligned_membufImE7_M_addrEv = comdat any

$_ZN5adept8internal16StackStorageOrig11clear_stackEv = comdat any

$_ZN5adept5Stack18clear_independentsEv = comdat any

$_ZN5adept5Stack16clear_dependentsEv = comdat any

$_ZN5adept5Stack15clear_gradientsEv = comdat any

$_ZN5adept8internal16StackStorageOrig8push_lhsERKi = comdat any

$_ZNSt6vectorIiSaIiEE5clearEv = comdat any

$_ZNSt6vectorIiSaIiEE15_M_erase_at_endEPi = comdat any

$_ZSt8_DestroyIPiiEvT_S1_RSaIT0_E = comdat any

$_ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv = comdat any

$_ZSt8_DestroyIPiEvT_S1_ = comdat any

$_ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_ = comdat any

$_ZN9__gnu_cxx13new_allocatorIcEC2Ev = comdat any

$_ZNSt14pointer_traitsIPKcE10pointer_toERS0_ = comdat any

$_ZSt9addressofIKcEPT_RS1_ = comdat any

$_ZSt11__addressofIKcEPT_RS1_ = comdat any

$_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm = comdat any

$_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_ = comdat any

$_ZNSt11char_traitsIcE6lengthEPKc = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPKcEEvT_S8_St12__false_type = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag = comdat any

$_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_ = comdat any

$_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_ = comdat any

$_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag = comdat any

$_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_ = comdat any

$_ZNSt11char_traitsIcE4copyEPcPKcm = comdat any

$_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev = comdat any

$_ZStorSt12_Ios_IostateS_ = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_ = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_ = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type = comdat any

$_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag = comdat any

$_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_ = comdat any

$_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_ = comdat any

$_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag = comdat any

$_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_ = comdat any

$_ZN9__gnu_cxx14__alloc_traitsISaIcEE15_S_always_equalEv = comdat any

$_ZStneIcEbRKSaIT_ES3_ = comdat any

$_ZSt15__alloc_on_moveISaIcEEvRT_S2_ = comdat any

$_ZSt18__do_alloc_on_moveISaIcEEvRT_S2_St17integral_constantIbLb1EE = comdat any

$_ZNSt12_Vector_baseIiSaIiEED2Ev = comdat any

$_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim = comdat any

$_ZN9__gnu_cxx13new_allocatorIiED2Ev = comdat any

$_ZNSt16allocator_traitsISaIiEE10deallocateERS0_Pim = comdat any

$_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim = comdat any

$_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE = comdat any

$_ZNSt14_List_iteratorIN5adept3GapEEmmEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8_M_eraseESt14_List_iteratorIS2_E = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_dec_sizeEm = comdat any

$_ZNKSt20_List_const_iteratorIN5adept3GapEE13_M_const_castEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE7emplaceIJS2_EEESt14_List_iteratorIS2_ESt20_List_const_iteratorIS2_EDpOT_ = comdat any

$_ZSt4moveIRN5adept3GapEEONSt16remove_referenceIT_E4typeEOS4_ = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE14_M_create_nodeIJS2_EEEPSt10_List_nodeIS2_EDpOT_ = comdat any

$_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_inc_sizeEm = comdat any

$_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_get_nodeEv = comdat any

$_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEC2ERS4_PS3_ = comdat any

$_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE9constructIS2_JS2_EEEvRS4_PT_DpOT0_ = comdat any

$_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEaSEDn = comdat any

$_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEED2Ev = comdat any

$_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE8allocateERS4_m = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8allocateEmPKv = comdat any

$_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8max_sizeEv = comdat any

$_ZSt11__addressofISaISt10_List_nodeIN5adept3GapEEEEPT_RS5_ = comdat any

$_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE9constructIS3_JS3_EEEvPT_DpOT0_ = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9_M_insertIJS2_EEEvSt14_List_iteratorIS2_EDpOT_ = comdat any

$_ZNSt20_List_const_iteratorIN5adept3GapEEC2EPKNSt8__detail15_List_node_baseE = comdat any

$_ZNKSt10_List_nodeIN5adept3GapEE9_M_valptrEv = comdat any

$_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv = comdat any

$_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv = comdat any

$_ZNKSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE13_M_node_countEv = comdat any

$_ZNKSt10_List_nodeImE9_M_valptrEv = comdat any

$_ZNK9__gnu_cxx16__aligned_membufImE6_M_ptrEv = comdat any

$_ZNK9__gnu_cxx16__aligned_membufImE7_M_addrEv = comdat any

$_ZNSt9bad_allocC2Ev = comdat any

$_ZN9__gnu_cxxeqIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_ = comdat any

$_ZNKSt6vectorIiSaIiEE5beginEv = comdat any

$_ZNKSt6vectorIiSaIiEE3endEv = comdat any

$_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv = comdat any

$_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2ERKS2_ = comdat any

$_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2Ev = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_ = comdat any

$_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EE21_M_default_initializeEm = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EED2Ev = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE12_Vector_implC2ERKS3_ = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE17_M_create_storageEm = comdat any

$_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev = comdat any

$_ZNSaIN5adept5BlockILi2EdEEEC2ERKS2_ = comdat any

$_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2ERKS4_ = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE11_M_allocateEm = comdat any

$_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE8allocateERS3_m = comdat any

$_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8allocateEmPKv = comdat any

$_ZNK9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8max_sizeEv = comdat any

$_ZSt27__uninitialized_default_n_aIPN5adept5BlockILi2EdEEmS2_ET_S4_T0_RSaIT1_E = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE19_M_get_Tp_allocatorEv = comdat any

$_ZSt25__uninitialized_default_nIPN5adept5BlockILi2EdEEmET_S4_T0_ = comdat any

$_ZNSt27__uninitialized_default_n_1ILb0EE18__uninit_default_nIPN5adept5BlockILi2EdEEmEET_S6_T0_ = comdat any

$_ZSt10_ConstructIN5adept5BlockILi2EdEEJEEvPT_DpOT0_ = comdat any

$_ZSt11__addressofIN5adept5BlockILi2EdEEEPT_RS3_ = comdat any

$_ZSt8_DestroyIPN5adept5BlockILi2EdEEEvT_S4_ = comdat any

$_ZNSt12_Destroy_auxILb1EE9__destroyIPN5adept5BlockILi2EdEEEEvT_S6_ = comdat any

$_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE13_M_deallocateEPS2_m = comdat any

$_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE10deallocateERS3_PS2_m = comdat any

$_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE10deallocateEPS3_m = comdat any

$_ZSt8_DestroyIPN5adept5BlockILi2EdEES2_EvT_S4_RSaIT0_E = comdat any

$_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_ = comdat any

$_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv = comdat any

$_ZN5adept8internal13GradientIndexILb0EEC2Ei = comdat any

$_ZN5adept14ExpressionSizeILi1EEC2Ev = comdat any

$_ZN5adept5ArrayILi1EdLb0EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii = comdat any

$_ZN5adept5ArrayILi1EdLb0EE6resizeEPKib = comdat any

$_ZN5adept7StorageIdE11remove_linkEv = comdat any

$_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_ = comdat any

$_ZN5adept8internal18exception_locationB5cxx11EPKci = comdat any

$_ZN5adept17invalid_dimensionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZN5adept5ArrayILi1EdLb0EE5clearEv = comdat any

$_ZN5adept14ExpressionSizeILi1EE4copyEPKi = comdat any

$_ZN5adept5ArrayILi1EdLb0EE16pack_contiguous_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb0EE5pack_Ev = comdat any

$_ZN5adept14ExpressionSizeILi1EEixEi = comdat any

$_ZNK5adept5ArrayILi1EdLb0EE4sizeEv = comdat any

$_ZN5adept7StorageIdEC2Eib = comdat any

$_ZN5adept7StorageIdE4dataEv = comdat any

$_ZN5adept8internal13GradientIndexILb0EE3setIdEEvPKT_PKNS_7StorageIS4_EE = comdat any

$_ZN5adept7StorageIdED2Ev = comdat any

$_ZSt4moveIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEONSt16remove_referenceIT_E4typeEOS8_ = comdat any

$_ZN5adept17invalid_dimensionD0Ev = comdat any

$_ZN5adept14ExpressionSizeILi1EE7set_allEi = comdat any

$_ZN5adept8internal13GradientIndexILb0EE5clearEv = comdat any

$_ZN5adept5ArrayILi1EdLb0EE26pack_row_major_contiguous_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb0EE18pack_column_major_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb0EE15pack_row_major_Ev = comdat any

$_ZNK5adept14ExpressionSizeILi1EEixEi = comdat any

$_ZN5adept5Stack18register_gradientsERKi = comdat any

$_ZN5adept8internal18get_index_with_lenEii = comdat any

$_ZN5boost5arrayINS_6detail11multi_array12extent_rangeIlmEELm1EEC2Ev = comdat any

$_ZN5boost6detail11multi_array12extent_rangeIlmEC2Ev = comdat any

$_ZNSt4pairIllEC2IiiLb1EEEOT_OT0_ = comdat any

$_ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE = comdat any

$_ZN5boost5arrayINS_6detail11multi_array11index_rangeIlmEELm1EEC2Ev = comdat any

$_ZN5boost6detail11multi_array11index_rangeIlmEC2Ev = comdat any

$_ZN5boost6detail11multi_array11index_rangeIlmE10from_startEv = comdat any

$_ZN5boost6detail11multi_array11index_rangeIlmE6to_endEv = comdat any

$_ZNSt14numeric_limitsIlE3minEv = comdat any

$_ZNSt14numeric_limitsIlE3maxEv = comdat any

$_ZNK5adept5ArrayILi1EdLb1EE14gradient_indexEv = comdat any

$_ZN5adept15ActiveReferenceIdEC2ERdi = comdat any

$_ZNK5adept8internal13GradientIndexILb1EE3getEv = comdat any

$_ZN5adept5Stack17register_gradientEv = comdat any

$_ZN5adept8internal16StackStorageOrig18check_space_staticILi1EEEvv = comdat any

$_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5frontEv = comdat any

$_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9pop_frontEv = comdat any

$_ZN5adept8internal16StackStorageOrig11check_spaceEi = comdat any

$_ZN5adept8internal13ScratchVectorILi0EdEC2Ev = comdat any

$_ZN5adept14ExpressionSizeILi0EEC2Ev = comdat any

$_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv = comdat any

$_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi = comdat any

$_ZN5adept5Stack19unregister_gradientERKi = comdat any

$_ZN5adept6ActiveIdEaSERKS1_ = comdat any

$_ZNK5adept10ExpressionIdNS_6ActiveIdEEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_ = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyES4_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE = comdat any

$_ZN5adept8internal16StackStorageOrig18check_space_staticILi3EEEvv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZN5adept8internal13ScratchVectorILi3EdEC2Ev = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE4castEv = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi0ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi0ELi0ELi3EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE27my_value_at_location_store_ILi2ELi0ELi0ELi0ELi3EEENS0_9enable_ifIXeqT_Li2EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal6Divide15operation_storeIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_Rd = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal13ScratchVectorILi3EdEixEi = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi3EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_ = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE10calc_left_ILi0ELi0ELi0ELi3ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE11calc_right_ILi0ELi0ELi0ELi3ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal6Divide9calc_leftILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept8internal13ScratchVectorILi3EdEixEi = comdat any

$_ZNK5adept8internal6Divide10calc_rightILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi3ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept6ActiveIdE13value_stored_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_ = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZN5adept8internal13ScratchVectorILi2EdEC2Ev = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE4castEv = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E24value_at_location_store_ILi0ELi0ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E14calc_gradient_ILi0ELi0ELi0ELi2EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal13ScratchVectorILi2EdEixEi = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E10calc_left_ILi0ELi0ELi0ELi2ES5_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E11calc_right_ILi0ELi0ELi0ELi2ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi1ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi2ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E13value_stored_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E16my_value_stored_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal13ScratchVectorILi2EdEixEi = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_EC2ERKNS_10ExpressionIdS3_EES9_ = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EC2ERKNS_10ExpressionIdS6_EERKNS8_IdS3_EE = comdat any

$_ZN5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEEC2EiRKNS_10ExpressionIdS4_EE = comdat any

$_ZN5adept8internal6PacketIiEC2Ei = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EEE4castEv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal18BinaryOpScalarLeftIdiNS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS7_EERKNSD_IdSB_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEC2ERKNS_10ExpressionIdS3_EERKNSG_IdSE_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EC2ERKNS_10ExpressionIdSF_EERKNSH_IdS3_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EC2ERKNS_10ExpressionIdSG_EERKNSI_IdS3_EE = comdat any

$_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEC2ERKNS_10ExpressionIdS3_EEi = comdat any

$_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS6_EERKNSB_IdS9_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EEE4castEv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEC2ERKNS_10ExpressionIdSH_EERKNSM_IdSK_EE = comdat any

$_ZN5adeptleINS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEdEENS1_9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINSE_4typeESE_EERKSD_ = comdat any

$_ZN5adeptplINS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EES9_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSB_4typeENSC_4typeEE4typeESB_NS1_3AddESC_EEE4typeERKNS_10ExpressionISE_SB_EERKNSM_ISF_SC_EE = comdat any

$_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEES6_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINS8_4typeENS9_4typeEE4typeES8_NS1_8MultiplyES9_EEE4typeERKNS_10ExpressionISC_S8_EERKNSK_ISD_S9_EE = comdat any

$_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_ = comdat any

$_ZN5adeptgeINS_6ActiveIdEEdEENS_8internal9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINS6_4typeES6_EERKS5_ = comdat any

$_ZN5adept6ActiveIdEC2IiEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE12scalar_valueEv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE4castEv = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE = comdat any

$_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE = comdat any

$_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_ = comdat any

$_ZNK5adept6ActiveIdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE = comdat any

$_ZNK5adept8internal6PacketIdE5valueEv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_EC2ERKNS_10ExpressionIdS8_EESE_ = comdat any

$_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EC2ERKNS_10ExpressionIdS6_EESC_ = comdat any

$_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEC2ERKNS_10ExpressionIdS3_EEd = comdat any

$_ZNK5adept10ExpressionIdNS_6ActiveIdEEE12scalar_valueEv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_EC2ERKNS_10ExpressionIdSL_EERKNSN_IdS3_EE = comdat any

$_ZN5adept8internal16StackStorageOrig18check_space_staticILi11EEEvv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZN5adept8internal13ScratchVectorILi5EdEC2Ev = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE4castEv = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal13ScratchVectorILi5EdEixEi = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal8Multiply9operationIidEENS0_7promoteIT_T0_E4typeERKS4_RKS5_ = comdat any

$_ZNK5adept8internal6PacketIiE5valueEv = comdat any

$_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE27my_value_at_location_store_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal3Add9operationIdiEENS0_7promoteIT_T0_E4typeERKS4_RKS5_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E10calc_left_ILi0ELi0ELi0ELi5ESL_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE11calc_right_ILi0ELi0ELi0ELi5ESK_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE10calc_left_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE11calc_right_ILi0ELi1ELi0ELi5ESE_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE16my_value_stored_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal13ScratchVectorILi5EdEixEi = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept6ActiveIdE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE10calc_left_ILi0ELi2ELi0ELi5ES7_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE11calc_right_ILi0ELi2ELi0ELi5ESB_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal8Subtract9calc_leftILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES5_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E10calc_left_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal8Subtract10calc_rightILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi3ELi0ELi5ES4_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi3ELi0ELi5ENS0_6ScalarIiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZN5adept8internal6ScalarIiEC2ERKi = comdat any

$_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept8internal6ScalarIiE13value_stored_ILi0ELi4ELi0ELi5EEEiRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES9_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_ = comdat any

$_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE10calc_left_ILi0ELi5ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_ = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi5ELi0ELi5ENS_6ActiveIdEENS0_6ScalarIiEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_ = comdat any

$_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_ = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE16my_value_stored_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEC2ERKNS_10ExpressionIdSF_EERKNSI_IdSG_EE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEEE4castEv = comdat any

$_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_EC2ERKNS_10ExpressionIdSH_EERKNSJ_IdS3_EE = comdat any

$_ZN5adept8internal16StackStorageOrig18check_space_staticILi9EEEvv = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE25scalar_value_and_gradientERNS_5StackE = comdat any

$_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE4castEv = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE11calc_right_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept6ActiveIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE = comdat any

$_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE = comdat any

$_ZN5adept8internal13GradientIndexILb1EEC2Ei = comdat any

$_ZN5adept5ArrayILi1EdLb1EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii = comdat any

$_ZN5adept5ArrayILi1EdLb1EE6resizeEPKib = comdat any

$_ZN5adept5ArrayILi1EdLb1EE5clearEv = comdat any

$_ZN5adept5ArrayILi1EdLb1EE16pack_contiguous_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb1EE5pack_Ev = comdat any

$_ZNK5adept5ArrayILi1EdLb1EE4sizeEv = comdat any

$_ZN5adept8internal13GradientIndexILb1EE3setIdEEvPKT_PKNS_7StorageIS4_EE = comdat any

$_ZN5adept8internal13GradientIndexILb1EE5clearEv = comdat any

$_ZN5adept5ArrayILi1EdLb1EE26pack_row_major_contiguous_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb1EE18pack_column_major_Ev = comdat any

$_ZN5adept5ArrayILi1EdLb1EE15pack_row_major_Ev = comdat any

$_ZNK5adept7StorageIdE14gradient_indexEv = comdat any

$_ZNK5adept7StorageIdE4dataEv = comdat any

$_ZN5adept5Stack13set_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPKS4_ = comdat any

$_ZN5adept21gradient_out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = comdat any

$_ZN5adept21gradient_out_of_rangeD0Ev = comdat any

$_ZNK5adept5Stack13get_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPS4_ = comdat any

$_ZTSN5adept17invalid_operationE = comdat any

$_ZTSN5adept15array_exceptionE = comdat any

$_ZTSN5adept9exceptionE = comdat any

$_ZTIN5adept9exceptionE = comdat any

$_ZTIN5adept15array_exceptionE = comdat any

$_ZTIN5adept17invalid_operationE = comdat any

$_ZTSN5adept20stack_already_activeE = comdat any

$_ZTSN5adept18autodiff_exceptionE = comdat any

$_ZTIN5adept18autodiff_exceptionE = comdat any

$_ZTIN5adept20stack_already_activeE = comdat any

$_ZTSN5adept25gradients_not_initializedE = comdat any

$_ZTIN5adept25gradients_not_initializedE = comdat any

$_ZTSN5adept21feature_not_availableE = comdat any

$_ZTIN5adept21feature_not_availableE = comdat any

$_ZTSN5adept41dependents_or_independents_not_identifiedE = comdat any

$_ZTIN5adept41dependents_or_independents_not_identifiedE = comdat any

$_ZTVN5adept17invalid_operationE = comdat any

$_ZTVN5adept15array_exceptionE = comdat any

$_ZTVN5adept9exceptionE = comdat any

$_ZTVN5adept20stack_already_activeE = comdat any

$_ZTVN5adept18autodiff_exceptionE = comdat any

$_ZTVN5adept25gradients_not_initializedE = comdat any

$_ZTVN5adept21feature_not_availableE = comdat any

$_ZTVN5adept41dependents_or_independents_not_identifiedE = comdat any

$_ZTSN5adept17invalid_dimensionE = comdat any

$_ZTIN5adept17invalid_dimensionE = comdat any

$_ZTVN5adept17invalid_dimensionE = comdat any

$_ZTSN5adept21gradient_out_of_rangeE = comdat any

$_ZTIN5adept21gradient_out_of_rangeE = comdat any

$_ZTVN5adept21gradient_out_of_rangeE = comdat any

@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1
@_ZN5adept8internal21array_row_major_orderE = dso_local local_unnamed_addr global i8 1, align 1
@_ZN5adept8internal17array_print_styleE = dso_local local_unnamed_addr global i32 2, align 4
@_ZN5adept8internal16vector_separatorB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str = private unnamed_addr constant [3 x i8] c", \00", align 1
@_ZN5adept8internal19vector_print_beforeB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.3 = private unnamed_addr constant [2 x i8] c"{\00", align 1
@_ZN5adept8internal18vector_print_afterB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.5 = private unnamed_addr constant [2 x i8] c"}\00", align 1
@_ZN5adept8internal21array_opening_bracketB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@_ZN5adept8internal21array_closing_bracketB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@_ZN5adept8internal26array_contiguous_separatorB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.10 = private unnamed_addr constant [3 x i8] c",\0A\00", align 1
@_ZN5adept8internal18array_print_beforeB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.12 = private unnamed_addr constant [3 x i8] c"\0A{\00", align 1
@_ZN5adept8internal17array_print_afterB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@_ZN5adept8internal24array_print_empty_beforeB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.15 = private unnamed_addr constant [13 x i8] c"(empty rank-\00", align 1
@_ZN5adept8internal23array_print_empty_afterB5cxx11E = dso_local global %"class.std::__cxx11::basic_string" zeroinitializer, align 8
@.str.17 = private unnamed_addr constant [8 x i8] c" array)\00", align 1
@_ZN5adept8internal18array_print_indentE = dso_local local_unnamed_addr global i8 1, align 1
@_ZN5adept8internal22array_print_empty_rankE = dso_local local_unnamed_addr global i8 1, align 1
@.str.18 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str.19 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@.str.20 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str.21 = private unnamed_addr constant [6 x i8] c"empty\00", align 1
@.str.22 = private unnamed_addr constant [2 x i8] c"[\00", align 1
@.str.23 = private unnamed_addr constant [2 x i8] c"]\00", align 1
@.str.24 = private unnamed_addr constant [3 x i8] c";\0A\00", align 1
@.str.25 = private unnamed_addr constant [33 x i8] c"Array print style not understood\00", align 1
@_ZTVN10__cxxabiv120__si_class_type_infoE = external dso_local global i8*
@_ZTSN5adept17invalid_operationE = linkonce_odr dso_local constant [28 x i8] c"N5adept17invalid_operationE\00", comdat
@_ZTSN5adept15array_exceptionE = linkonce_odr dso_local constant [26 x i8] c"N5adept15array_exceptionE\00", comdat
@_ZTSN5adept9exceptionE = linkonce_odr dso_local constant [19 x i8] c"N5adept9exceptionE\00", comdat
@_ZTISt9exception = external dso_local constant i8*
@_ZTIN5adept9exceptionE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @_ZTSN5adept9exceptionE, i32 0, i32 0), i8* bitcast (i8** @_ZTISt9exception to i8*) }, comdat
@_ZTIN5adept15array_exceptionE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @_ZTSN5adept15array_exceptionE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept9exceptionE to i8*) }, comdat
@_ZTIN5adept17invalid_operationE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @_ZTSN5adept17invalid_operationE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept15array_exceptionE to i8*) }, comdat
@_ZN5adept21_stack_current_threadE = dso_local thread_local global %"class.adept::Stack"* null, align 8
@_ZN5adept28_stack_current_thread_unsafeE = dso_local local_unnamed_addr global %"class.adept::Stack"* null, align 8
@.str.26 = private unnamed_addr constant [78 x i8] c"Attempt to activate an adept::Stack when one is already active in this thread\00", align 1
@_ZTSN5adept20stack_already_activeE = linkonce_odr dso_local constant [31 x i8] c"N5adept20stack_already_activeE\00", comdat
@_ZTSN5adept18autodiff_exceptionE = linkonce_odr dso_local constant [29 x i8] c"N5adept18autodiff_exceptionE\00", comdat
@_ZTIN5adept18autodiff_exceptionE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @_ZTSN5adept18autodiff_exceptionE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept9exceptionE to i8*) }, comdat
@_ZTIN5adept20stack_already_activeE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @_ZTSN5adept20stack_already_activeE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept18autodiff_exceptionE to i8*) }, comdat
@.str.27 = private unnamed_addr constant [107 x i8] c"Gradients not initialized: at least one call to set_gradient(s) is needed before a forward or reverse pass\00", align 1
@_ZTSN5adept25gradients_not_initializedE = linkonce_odr dso_local constant [36 x i8] c"N5adept25gradients_not_initializedE\00", comdat
@_ZTIN5adept25gradients_not_initializedE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @_ZTSN5adept25gradients_not_initializedE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept18autodiff_exceptionE to i8*) }, comdat
@.str.28 = private unnamed_addr constant [5 x i8] c": d[\00", align 1
@.str.29 = private unnamed_addr constant [5 x i8] c"] = \00", align 1
@.str.30 = private unnamed_addr constant [3 x i8] c"0\0A\00", align 1
@.str.31 = private unnamed_addr constant [4 x i8] c" + \00", align 1
@.str.32 = private unnamed_addr constant [4 x i8] c"*d[\00", align 1
@.str.33 = private unnamed_addr constant [2 x i8] c":\00", align 1
@.str.34 = private unnamed_addr constant [26 x i8] c"No gradients initialized\0A\00", align 1
@.str.35 = private unnamed_addr constant [2 x i8] c"-\00", align 1
@.str.36 = private unnamed_addr constant [42 x i8] c"Automatic Differentiation Stack (address \00", align 1
@.str.37 = private unnamed_addr constant [4 x i8] c"):\0A\00", align 1
@.str.38 = private unnamed_addr constant [37 x i8] c"   Currently attached - thread safe\0A\00", align 1
@.str.39 = private unnamed_addr constant [39 x i8] c"   Currently attached - thread unsafe\0A\00", align 1
@.str.40 = private unnamed_addr constant [23 x i8] c"   Currently detached\0A\00", align 1
@.str.41 = private unnamed_addr constant [22 x i8] c"   Recording status:\0A\00", align 1
@.str.42 = private unnamed_addr constant [23 x i8] c"      Recording is ON\0A\00", align 1
@.str.43 = private unnamed_addr constant [27 x i8] c"      Recording is PAUSED\0A\00", align 1
@.str.44 = private unnamed_addr constant [7 x i8] c"      \00", align 1
@.str.45 = private unnamed_addr constant [14 x i8] c" statements (\00", align 1
@.str.46 = private unnamed_addr constant [12 x i8] c" allocated)\00", align 1
@.str.47 = private unnamed_addr constant [6 x i8] c" and \00", align 1
@.str.48 = private unnamed_addr constant [14 x i8] c" operations (\00", align 1
@.str.49 = private unnamed_addr constant [13 x i8] c" allocated)\0A\00", align 1
@.str.50 = private unnamed_addr constant [33 x i8] c" gradients currently registered \00", align 1
@.str.51 = private unnamed_addr constant [16 x i8] c"and a total of \00", align 1
@.str.52 = private unnamed_addr constant [24 x i8] c" needed (current index \00", align 1
@.str.53 = private unnamed_addr constant [3 x i8] c")\0A\00", align 1
@.str.54 = private unnamed_addr constant [33 x i8] c"      Gradient list has no gaps\0A\00", align 1
@.str.55 = private unnamed_addr constant [25 x i8] c"      Gradient list has \00", align 1
@.str.56 = private unnamed_addr constant [8 x i8] c" gaps (\00", align 1
@.str.57 = private unnamed_addr constant [24 x i8] c"   Computation status:\0A\00", align 1
@.str.58 = private unnamed_addr constant [22 x i8] c" gradients assigned (\00", align 1
@.str.59 = private unnamed_addr constant [29 x i8] c"      0 gradients assigned (\00", align 1
@.str.60 = private unnamed_addr constant [22 x i8] c"      Jacobian size: \00", align 1
@.str.61 = private unnamed_addr constant [2 x i8] c"x\00", align 1
@.str.62 = private unnamed_addr constant [27 x i8] c"      Independent indices:\00", align 1
@.str.63 = private unnamed_addr constant [28 x i8] c"\0A      Dependent indices:  \00", align 1
@.str.64 = private unnamed_addr constant [51 x i8] c"      Parallel Jacobian calculation not available\0A\00", align 1
@_ZN5adept8internal26n_storage_objects_created_E = dso_local local_unnamed_addr global i32 0, align 4
@_ZN5adept8internal26n_storage_objects_deleted_E = dso_local local_unnamed_addr global i32 0, align 4
@.str.65 = private unnamed_addr constant [74 x i8] c"Cannot perform matrix-matrix multiplication because compiled without BLAS\00", align 1
@_ZTSN5adept21feature_not_availableE = linkonce_odr dso_local constant [32 x i8] c"N5adept21feature_not_availableE\00", comdat
@_ZTIN5adept21feature_not_availableE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @_ZTSN5adept21feature_not_availableE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept9exceptionE to i8*) }, comdat
@.str.66 = private unnamed_addr constant [74 x i8] c"Cannot perform matrix-vector multiplication because compiled without BLAS\00", align 1
@.str.67 = private unnamed_addr constant [84 x i8] c"Cannot perform symmetric matrix-matrix multiplication because compiled without BLAS\00", align 1
@.str.68 = private unnamed_addr constant [84 x i8] c"Cannot perform symmetric matrix-vector multiplication because compiled without BLAS\00", align 1
@.str.69 = private unnamed_addr constant [79 x i8] c"Cannot perform band matrix-vector multiplication because compiled without BLAS\00", align 1
@_ZN5adept3endE = dso_local local_unnamed_addr global %"struct.adept::internal::EndIndex" zeroinitializer, align 1
@_ZN5adept2__E = dso_local local_unnamed_addr global %"class.adept::internal::AllIndex" zeroinitializer, align 1
@.str.70 = private unnamed_addr constant [53 x i8] c"Cannot invert matrix because compiled without LAPACK\00", align 1
@.str.71 = private unnamed_addr constant [80 x i8] c"Dependent or independent variables not identified before a Jacobian computation\00", align 1
@_ZTSN5adept41dependents_or_independents_not_identifiedE = linkonce_odr dso_local constant [52 x i8] c"N5adept41dependents_or_independents_not_identifiedE\00", comdat
@_ZTIN5adept41dependents_or_independents_not_identifiedE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @_ZTSN5adept41dependents_or_independents_not_identifiedE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept18autodiff_exceptionE to i8*) }, comdat
@.str.72 = private unnamed_addr constant [6 x i8] c"2.0.6\00", align 1
@.str.73 = private unnamed_addr constant [8 x i8] c"unknown\00", align 1
@.str.74 = private unnamed_addr constant [9 x i8] c" [4.2.1]\00", align 1
@.str.75 = private unnamed_addr constant [15 x i8] c"Adept version \00", align 1
@.str.76 = private unnamed_addr constant [3 x i8] c":\0A\00", align 1
@.str.77 = private unnamed_addr constant [17 x i8] c"  Compiled with \00", align 1
@.str.78 = private unnamed_addr constant [19 x i8] c"  Compiler flags \22\00", align 1
@.str.79 = private unnamed_addr constant [3 x i8] c"\22\0A\00", align 1
@.str.80 = private unnamed_addr constant [41 x i8] c"  Jacobians processed in blocks of size \00", align 1
@.str.81 = private unnamed_addr constant [62 x i8] c"Cannot solve linear equations because compiled without LAPACK\00", align 1
@.str.82 = private unnamed_addr constant [47 x i8] c"linspace(x1,x2,n) with n=1 only valid if x1=x2\00", align 1
@_ZN5boost12_GLOBAL__N_17extentsE = internal global %"class.boost::detail::multi_array::extent_gen" zeroinitializer, align 8
@_ZN5boost12_GLOBAL__N_17indicesE = internal global %"struct.boost::detail::multi_array::index_gen" zeroinitializer, align 8
@.str.85 = private unnamed_addr constant [6 x i8] c"jm1<N\00", align 1
@.str.86 = private unnamed_addr constant [8 x i8] c"ode.cpp\00", align 1
@__PRETTY_FUNCTION__._Z19brusselator_2d_loopPdS_PKdS1_S1_d = private unnamed_addr constant [151 x i8] c"void brusselator_2d_loop(double *__restrict, double *__restrict, const double *__restrict, const double *__restrict, const double *__restrict, double)\00", align 1
@_ZZ6lorenzRKN5boost5arrayIdLm2048EEERS1_dE1p = private unnamed_addr constant [3 x double] [double 3.400000e+00, double 1.000000e+00, double 1.000000e+01], align 16
@enzyme_dupnoneed = external dso_local local_unnamed_addr global i32, align 4
@enzyme_dup = external dso_local local_unnamed_addr global i32, align 4
@enzyme_const = external dso_local local_unnamed_addr global i32, align 4
@_ZZ4mainE1p = private unnamed_addr constant [3 x double] [double 3.400000e+00, double 1.000000e+00, double 1.000000e+01], align 16
@.str.95 = private unnamed_addr constant [30 x i8] c"Enzyme combined %0.6f res=%f\0A\00", align 1
@.str.96 = private unnamed_addr constant [28 x i8] c"A misuse of arrays occurred\00", align 1
@_ZTVN5adept17invalid_operationE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_operationE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::invalid_operation"*)* @_ZN5adept17invalid_operationD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept15array_exceptionE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept15array_exceptionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::array_exception"*)* @_ZN5adept15array_exceptionD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept9exceptionE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept9exceptionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVSt9exception = available_externally dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast (i8** @_ZTISt9exception to i8*), i8* bitcast (void (%"class.std::exception"*)* @_ZNSt9exceptionD1Ev to i8*), i8* bitcast (void (%"class.std::exception"*)* @_ZNSt9exceptionD0Ev to i8*), i8* bitcast (i8* (%"class.std::exception"*)* @_ZNKSt9exception4whatEv to i8*)] }, align 8
@_ZTVN5adept20stack_already_activeE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept20stack_already_activeE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::stack_already_active"*)* @_ZN5adept20stack_already_activeD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept18autodiff_exceptionE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept18autodiff_exceptionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::autodiff_exception"*)* @_ZN5adept18autodiff_exceptionD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept25gradients_not_initializedE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept25gradients_not_initializedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::gradients_not_initialized"*)* @_ZN5adept25gradients_not_initializedD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept21feature_not_availableE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::feature_not_available"*)* @_ZN5adept21feature_not_availableD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@_ZTVN5adept41dependents_or_independents_not_identifiedE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept41dependents_or_independents_not_identifiedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::dependents_or_independents_not_identified"*)* @_ZN5adept41dependents_or_independents_not_identifiedD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@.str.97 = private unnamed_addr constant [42 x i8] c"basic_string::_M_construct null not valid\00", align 1
@_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE = external dso_local unnamed_addr constant { [5 x i8*], [5 x i8*], [5 x i8*] }
@_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE = external unnamed_addr constant [10 x i8*]
@_ZTVSt9basic_iosIcSt11char_traitsIcEE = external dso_local unnamed_addr constant { [4 x i8*] }
@_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE = external dso_local unnamed_addr constant { [16 x i8*] }
@_ZTVSt15basic_streambufIcSt11char_traitsIcEE = external dso_local unnamed_addr constant { [16 x i8*] }
@_ZTISt9bad_alloc = external dso_local constant i8*
@_ZTVSt9bad_alloc = available_externally dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD0Ev to i8*), i8* bitcast (i8* (%"class.std::bad_alloc"*)* @_ZNKSt9bad_alloc4whatEv to i8*)] }, align 8
@.str.98 = private unnamed_addr constant [21 x i8] c"basic_string::append\00", align 1
@.str.99 = private unnamed_addr constant [35 x i8] c"Negative array dimension requested\00", align 1
@.str.100 = private unnamed_addr constant [92 x i8] c"/mnt/Data/git/Enzyme/enzyme/build-simple/benchmarks/adept2/src/adept2/include/adept/Array.h\00", align 1
@_ZTSN5adept17invalid_dimensionE = linkonce_odr dso_local constant [28 x i8] c"N5adept17invalid_dimensionE\00", comdat
@_ZTIN5adept17invalid_dimensionE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @_ZTSN5adept17invalid_dimensionE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept15array_exceptionE to i8*) }, comdat
@.str.101 = private unnamed_addr constant [58 x i8] c"Attempt to remove more links to a storage object than set\00", align 1
@.str.102 = private unnamed_addr constant [94 x i8] c"/mnt/Data/git/Enzyme/enzyme/build-simple/benchmarks/adept2/src/adept2/include/adept/Storage.h\00", align 1
@.str.103 = private unnamed_addr constant [22 x i8] c"basic_string::replace\00", align 1
@.str.104 = private unnamed_addr constant [55 x i8] c"%s: __pos (which is %zu) > this->size() (which is %zu)\00", align 1
@.str.105 = private unnamed_addr constant [6 x i8] c" (in \00", align 1
@.str.106 = private unnamed_addr constant [2 x i8] c")\00", align 1
@_ZTVN5adept17invalid_dimensionE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_dimensionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::invalid_dimension"*)* @_ZN5adept17invalid_dimensionD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@.str.108 = private unnamed_addr constant [26 x i8] c"(i < N)&&(\22out of range\22)\00", align 1
@.str.109 = private unnamed_addr constant [29 x i8] c"/usr/include/boost/array.hpp\00", align 1
@__PRETTY_FUNCTION__._ZN5boost5arrayIdLm2048EEixEm = private unnamed_addr constant [111 x i8] c"boost::array::reference boost::array<double, 2048>::operator[](boost::array::size_type) [T = double, N = 2048]\00", align 1
@__PRETTY_FUNCTION__._ZNK5boost5arrayIdLm2048EEixEm = private unnamed_addr constant [123 x i8] c"boost::array::const_reference boost::array<double, 2048>::operator[](boost::array::size_type) const [T = double, N = 2048]\00", align 1
@.str.110 = private unnamed_addr constant [99 x i8] c"Gradient index out of range: probably aReal objects have been created after a set_gradient(s) call\00", align 1
@_ZTSN5adept21gradient_out_of_rangeE = linkonce_odr dso_local constant [32 x i8] c"N5adept21gradient_out_of_rangeE\00", comdat
@_ZTIN5adept21gradient_out_of_rangeE = linkonce_odr dso_local constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @_ZTSN5adept21gradient_out_of_rangeE, i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept18autodiff_exceptionE to i8*) }, comdat
@_ZTVN5adept21gradient_out_of_rangeE = linkonce_odr dso_local unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21gradient_out_of_rangeE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*), i8* bitcast (void (%"class.adept::gradient_out_of_range"*)* @_ZN5adept21gradient_out_of_rangeD0Ev to i8*), i8* bitcast (i8* (%"class.adept::exception"*)* @_ZNK5adept9exception4whatEv to i8*)] }, comdat, align 8
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_ode.cpp, i8* null }]

@_ZN5adept5StackD1Ev = dso_local unnamed_addr alias void (%"class.adept::Stack"*), void (%"class.adept::Stack"*)* @_ZN5adept5StackD2Ev
@_ZN5adept8internal16StackStorageOrigD1Ev = dso_local unnamed_addr alias void (%"class.adept::internal::StackStorageOrig"*), void (%"class.adept::internal::StackStorageOrig"*)* @_ZN5adept8internal16StackStorageOrigD2Ev

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init() unnamed_addr #0 section ".text.startup" {
bb:
  tail call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* nonnull @_ZStL8__ioinit)
  %tmp = tail call i32 @atexit(void ()* nonnull @__dtor__ZStL8__ioinit) #4
  ret void
}

declare dso_local void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"*) unnamed_addr #1

; Function Attrs: nounwind
declare dso_local void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"*) unnamed_addr #2

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZStL8__ioinit() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"* nonnull @_ZStL8__ioinit)
  ret void
}

; Function Attrs: nounwind
declare dso_local i32 @atexit(void ()*) local_unnamed_addr #4

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.1() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal16vector_separatorB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #5

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSaIcEC2Ev(%"class.std::allocator"* %arg) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"class.std::allocator"* %arg to %"class.__gnu_cxx::new_allocator"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIcEC2Ev(%"class.__gnu_cxx::new_allocator"* %tmp) #4
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, %"class.std::allocator"* dereferenceable(1) %arg2) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0
  %tmp3 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %tmp, i8* %tmp3, %"class.std::allocator"* nonnull dereferenceable(1) %arg2)
  %tmp4 = icmp eq i8* %arg1, null
  br i1 %tmp4, label %bb7, label %bb5

bb5:                                              ; preds = %bb
  %tmp6 = tail call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* nonnull %arg1)
  br label %bb7

bb7:                                              ; preds = %bb5, %bb
  %tmp8 = phi i64 [ %tmp6, %bb5 ], [ -1, %bb ]
  %tmp9 = getelementptr inbounds i8, i8* %arg1, i64 %tmp8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %tmp9)
          to label %bb10 unwind label %bb11

bb10:                                             ; preds = %bb7
  ret void

bb11:                                             ; preds = %bb7
  %tmp12 = landingpad { i8*, i32 }
          cleanup
  %tmp13 = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp13) #4
  resume { i8*, i32 } %tmp12
}

declare dso_local i32 @__gxx_personality_v0(...)

; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #5

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* %arg) unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv(%"class.std::__cxx11::basic_string"* %arg)
          to label %bb1 unwind label %bb2

bb1:                                              ; preds = %bb
  %tmp = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp) #4
  ret void

bb2:                                              ; preds = %bb
  %tmp3 = landingpad { i8*, i32 }
          filter [0 x i8*] zeroinitializer
  %tmp4 = extractvalue { i8*, i32 } %tmp3, 0
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp5) #4
  tail call void @__cxa_call_unexpected(i8* %tmp4) #25
  unreachable
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal16vector_separatorB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.2() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal19vector_print_beforeB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal19vector_print_beforeB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.4() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal18vector_print_afterB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal18vector_print_afterB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.6() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal21array_opening_bracketB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal21array_opening_bracketB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.7() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal21array_closing_bracketB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal21array_closing_bracketB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.8() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal26array_contiguous_separatorB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal26array_contiguous_separatorB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.9() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal30array_non_contiguous_separatorB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal30array_non_contiguous_separatorB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.11() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal18array_print_beforeB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal18array_print_beforeB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.13() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal17array_print_afterB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal17array_print_afterB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.14() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal24array_print_empty_beforeB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal24array_print_empty_beforeB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.16() unnamed_addr #0 section ".text.startup" personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = call i32 @atexit(void ()* nonnull @__dtor__ZN5adept8internal23array_print_empty_afterB5cxx11E) #4
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: nounwind uwtable
define internal void @__dtor__ZN5adept8internal23array_print_empty_afterB5cxx11E() #3 section ".text.startup" {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E)
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept21set_array_print_styleENS_15ArrayPrintStyleE(i32 %arg) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp1 = alloca %"class.std::allocator", align 1
  switch i32 %arg, label %bb50 [
    i32 0, label %bb2
    i32 1, label %bb14
    i32 3, label %bb26
    i32 2, label %bb38
  ]

bb2:                                              ; preds = %bb
  %tmp3 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp4 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp5 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp6 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp7 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp8 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp9 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  %tmp10 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp11 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp12 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i64 0, i64 0))
  %tmp13 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i64 0, i64 0))
  br label %bb71

bb14:                                             ; preds = %bb
  %tmp15 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
  %tmp16 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp17 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp18 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp19 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp20 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
  %tmp21 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  %tmp22 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp23 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp24 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0))
  %tmp25 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  br label %bb71

bb26:                                             ; preds = %bb
  %tmp27 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp28 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
  %tmp29 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
  %tmp30 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp31 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.19, i64 0, i64 0))
  %tmp32 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp33 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
  %tmp34 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
  %tmp35 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
  %tmp36 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
  %tmp37 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
  br label %bb71

bb38:                                             ; preds = %bb
  %tmp39 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal16vector_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
  %tmp40 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal19vector_print_beforeB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
  %tmp41 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18vector_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
  %tmp42 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_opening_bracketB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
  %tmp43 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal21array_closing_bracketB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
  %tmp44 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal26array_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
  %tmp45 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal30array_non_contiguous_separatorB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
  %tmp46 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal18array_print_beforeB5cxx11E, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
  %tmp47 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal17array_print_afterB5cxx11E, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
  %tmp48 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal24array_print_empty_beforeB5cxx11E, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i64 0, i64 0))
  %tmp49 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* nonnull @_ZN5adept8internal23array_print_empty_afterB5cxx11E, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i64 0, i64 0))
  br label %bb71

bb50:                                             ; preds = %bb
  %tmp51 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp52 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp52) #4
  %tmp53 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp1, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp53) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.25, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp1)
          to label %bb54 unwind label %bb57

bb54:                                             ; preds = %bb50
  %tmp55 = bitcast i8* %tmp51 to %"class.adept::invalid_operation"*
  invoke void @_ZN5adept17invalid_operationC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_operation"* %tmp55, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb56 unwind label %bb61

bb56:                                             ; preds = %bb54
  invoke void @__cxa_throw(i8* %tmp51, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_operationE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb77 unwind label %bb61

bb57:                                             ; preds = %bb50
  %tmp58 = landingpad { i8*, i32 }
          cleanup
  %tmp59 = extractvalue { i8*, i32 } %tmp58, 0
  %tmp60 = extractvalue { i8*, i32 } %tmp58, 1
  br label %bb66

bb61:                                             ; preds = %bb56, %bb54
  %tmp62 = phi i1 [ false, %bb56 ], [ true, %bb54 ]
  %tmp63 = landingpad { i8*, i32 }
          cleanup
  %tmp64 = extractvalue { i8*, i32 } %tmp63, 0
  %tmp65 = extractvalue { i8*, i32 } %tmp63, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb66

bb66:                                             ; preds = %bb61, %bb57
  %tmp67 = phi i8* [ %tmp64, %bb61 ], [ %tmp59, %bb57 ]
  %tmp68 = phi i32 [ %tmp65, %bb61 ], [ %tmp60, %bb57 ]
  %tmp69 = phi i1 [ %tmp62, %bb61 ], [ true, %bb57 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp53) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp52) #4
  br i1 %tmp69, label %bb70, label %bb74

bb70:                                             ; preds = %bb66
  call void @__cxa_free_exception(i8* %tmp51) #4
  br label %bb74

bb71:                                             ; preds = %bb38, %bb26, %bb14, %bb2
  %tmp72 = phi i8 [ 1, %bb38 ], [ 1, %bb26 ], [ 0, %bb14 ], [ 0, %bb2 ]
  %tmp73 = phi i8 [ 1, %bb38 ], [ 0, %bb26 ], [ 0, %bb14 ], [ 1, %bb2 ]
  store i8 %tmp72, i8* @_ZN5adept8internal18array_print_indentE, align 1, !tbaa !2
  store i8 %tmp73, i8* @_ZN5adept8internal22array_print_empty_rankE, align 1, !tbaa !2
  store i32 %arg, i32* @_ZN5adept8internal17array_print_styleE, align 4, !tbaa !6
  ret void

bb74:                                             ; preds = %bb70, %bb66
  %tmp75 = insertvalue { i8*, i32 } undef, i8* %tmp67, 0
  %tmp76 = insertvalue { i8*, i32 } %tmp75, i32 %tmp68, 1
  resume { i8*, i32 } %tmp76

bb77:                                             ; preds = %bb56
  unreachable
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1)
  ret %"class.std::__cxx11::basic_string"* %tmp
}

declare dso_local i8* @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept17invalid_operationC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_operation"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp3) #4
  %tmp4 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.96, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb5 unwind label %bb12

bb5:                                              ; preds = %bb
  %tmp6 = getelementptr inbounds %"class.adept::invalid_operation", %"class.adept::invalid_operation"* %arg, i64 0, i32 0
  invoke void @_ZN5adept15array_exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::array_exception"* %tmp6, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb7 unwind label %bb16

bb7:                                              ; preds = %bb5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp3) #4
  %tmp8 = getelementptr inbounds %"class.adept::invalid_operation", %"class.adept::invalid_operation"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept17invalid_operationE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp8, align 8, !tbaa !8
  %tmp9 = getelementptr inbounds %"class.adept::invalid_operation", %"class.adept::invalid_operation"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp10 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp9, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb11 unwind label %bb23

bb11:                                             ; preds = %bb7
  ret void

bb12:                                             ; preds = %bb
  %tmp13 = landingpad { i8*, i32 }
          cleanup
  %tmp14 = extractvalue { i8*, i32 } %tmp13, 0
  %tmp15 = extractvalue { i8*, i32 } %tmp13, 1
  br label %bb20

bb16:                                             ; preds = %bb5
  %tmp17 = landingpad { i8*, i32 }
          cleanup
  %tmp18 = extractvalue { i8*, i32 } %tmp17, 0
  %tmp19 = extractvalue { i8*, i32 } %tmp17, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb20

bb20:                                             ; preds = %bb16, %bb12
  %tmp21 = phi i8* [ %tmp18, %bb16 ], [ %tmp14, %bb12 ]
  %tmp22 = phi i32 [ %tmp19, %bb16 ], [ %tmp15, %bb12 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp3) #4
  br label %bb28

bb23:                                             ; preds = %bb7
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  %tmp27 = getelementptr inbounds %"class.adept::invalid_operation", %"class.adept::invalid_operation"* %arg, i64 0, i32 0, i32 0
  call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp27) #4
  br label %bb28

bb28:                                             ; preds = %bb23, %bb20
  %tmp29 = phi i8* [ %tmp25, %bb23 ], [ %tmp21, %bb20 ]
  %tmp30 = phi i32 [ %tmp26, %bb23 ], [ %tmp22, %bb20 ]
  %tmp31 = insertvalue { i8*, i32 } undef, i8* %tmp29, 0
  %tmp32 = insertvalue { i8*, i32 } %tmp31, i32 %tmp30, 1
  resume { i8*, i32 } %tmp32
}

declare dso_local void @__cxa_throw(i8*, i8*, i8*) local_unnamed_addr

declare dso_local void @__cxa_free_exception(i8*) local_unnamed_addr

; Function Attrs: nounwind uwtable
define dso_local void @_ZN5adept5StackD2Ev(%"class.adept::Stack"* %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 11
  %tmp1 = load i8, i8* %tmp, align 1, !tbaa !10, !range !17
  %tmp2 = icmp eq i8 %tmp1, 0
  br i1 %tmp2, label %bb7, label %bb3

bb3:                                              ; preds = %bb
  %tmp4 = load %"class.adept::Stack"*, %"class.adept::Stack"** @_ZN5adept28_stack_current_thread_unsafeE, align 8, !tbaa !18
  %tmp5 = icmp eq %"class.adept::Stack"* %tmp4, %arg
  br i1 %tmp5, label %bb6, label %bb13

bb6:                                              ; preds = %bb3
  store %"class.adept::Stack"* null, %"class.adept::Stack"** @_ZN5adept28_stack_current_thread_unsafeE, align 8, !tbaa !18
  br label %bb13

bb7:                                              ; preds = %bb
  %tmp8 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE() #4
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  %tmp10 = icmp eq %"class.adept::Stack"* %tmp9, %arg
  br i1 %tmp10, label %bb11, label %bb13

bb11:                                             ; preds = %bb7
  %tmp12 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE() #4
  store %"class.adept::Stack"* null, %"class.adept::Stack"** %tmp12, align 8, !tbaa !18
  br label %bb13

bb13:                                             ; preds = %bb11, %bb7, %bb6, %bb3
  %tmp14 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp15 = load double*, double** %tmp14, align 8, !tbaa !19
  %tmp16 = icmp eq double* %tmp15, null
  br i1 %tmp16, label %bb19, label %bb17

bb17:                                             ; preds = %bb13
  %tmp18 = bitcast double* %tmp15 to i8*
  tail call void @_ZdaPv(i8* %tmp18) #27
  br label %bb19

bb19:                                             ; preds = %bb17, %bb13
  %tmp20 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EED2Ev(%"class.std::__cxx11::_List_base"* nonnull %tmp20) #4
  %tmp21 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  tail call void @_ZNSt6vectorIiSaIiEED2Ev(%"class.std::vector"* nonnull %tmp21) #4
  %tmp22 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  tail call void @_ZNSt6vectorIiSaIiEED2Ev(%"class.std::vector"* nonnull %tmp22) #4
  %tmp23 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal16StackStorageOrigD2Ev(%"class.adept::internal::StackStorageOrig"* %tmp23) #4
  ret void
}

; Function Attrs: norecurse uwtable
define weak_odr hidden %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE() local_unnamed_addr #7 {
bb:
  ret %"class.adept::Stack"** @_ZN5adept21_stack_current_threadE
}

; Function Attrs: nobuiltin nounwind
declare dso_local void @_ZdaPv(i8*) local_unnamed_addr #8

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EED2Ev(%"class.std::__cxx11::_List_base"* %arg) unnamed_addr #3 comdat align 2 {
bb:
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE8_M_clearEv(%"class.std::__cxx11::_List_base"* %arg) #4
  %tmp = bitcast %"class.std::__cxx11::_List_base"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  tail call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEED2Ev(%"class.__gnu_cxx::new_allocator.4"* %tmp) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIiSaIiEED2Ev(%"class.std::vector"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0
  %tmp1 = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp2 = load i32*, i32** %tmp1, align 8, !tbaa !20
  %tmp3 = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = load i32*, i32** %tmp3, align 8, !tbaa !23
  %tmp5 = tail call dereferenceable(1) %"class.std::allocator.0"* @_ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %tmp) #4
  invoke void @_ZSt8_DestroyIPiiEvT_S1_RSaIT0_E(i32* %tmp2, i32* %tmp4, %"class.std::allocator.0"* nonnull dereferenceable(1) %tmp5)
          to label %bb6 unwind label %bb7

bb6:                                              ; preds = %bb
  tail call void @_ZNSt12_Vector_baseIiSaIiEED2Ev(%"struct.std::_Vector_base"* %tmp) #4
  ret void

bb7:                                              ; preds = %bb
  %tmp8 = landingpad { i8*, i32 }
          catch i8* null
  %tmp9 = extractvalue { i8*, i32 } %tmp8, 0
  tail call void @_ZNSt12_Vector_baseIiSaIiEED2Ev(%"struct.std::_Vector_base"* %tmp) #4
  tail call void @__clang_call_terminate(i8* %tmp9) #25
  unreachable
}

; Function Attrs: nounwind uwtable
define dso_local void @_ZN5adept8internal16StackStorageOrigD2Ev(%"class.adept::internal::StackStorageOrig"* nocapture readonly %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 0
  %tmp1 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp, align 8, !tbaa !24
  %tmp2 = icmp eq %"struct.adept::internal::Statement"* %tmp1, null
  br i1 %tmp2, label %bb5, label %bb3

bb3:                                              ; preds = %bb
  %tmp4 = bitcast %"struct.adept::internal::Statement"* %tmp1 to i8*
  tail call void @_ZdaPv(i8* %tmp4) #27
  br label %bb5

bb5:                                              ; preds = %bb3, %bb
  %tmp6 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 1
  %tmp7 = load double*, double** %tmp6, align 8, !tbaa !26
  %tmp8 = icmp eq double* %tmp7, null
  br i1 %tmp8, label %bb11, label %bb9

bb9:                                              ; preds = %bb5
  %tmp10 = bitcast double* %tmp7 to i8*
  tail call void @_ZdaPv(i8* %tmp10) #27
  br label %bb11

bb11:                                             ; preds = %bb9, %bb5
  %tmp12 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 2
  %tmp13 = load i32*, i32** %tmp12, align 8, !tbaa !27
  %tmp14 = icmp eq i32* %tmp13, null
  br i1 %tmp14, label %bb17, label %bb15

bb15:                                             ; preds = %bb11
  %tmp16 = bitcast i32* %tmp13 to i8*
  tail call void @_ZdaPv(i8* %tmp16) #27
  br label %bb17

bb17:                                             ; preds = %bb15, %bb11
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack8activateEv(%"class.adept::Stack"* %arg) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp1 = alloca %"class.std::allocator", align 1
  %tmp2 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 11
  %tmp3 = load i8, i8* %tmp2, align 1, !tbaa !10, !range !17
  %tmp4 = icmp ne i8 %tmp3, 0
  %tmp5 = load %"class.adept::Stack"*, %"class.adept::Stack"** @_ZN5adept28_stack_current_thread_unsafeE, align 8
  %tmp6 = icmp ne %"class.adept::Stack"* %tmp5, null
  %tmp7 = and i1 %tmp4, %tmp6
  %tmp8 = icmp ne %"class.adept::Stack"* %tmp5, %arg
  %tmp9 = and i1 %tmp8, %tmp7
  br i1 %tmp9, label %bb19, label %bb10

bb10:                                             ; preds = %bb
  br i1 %tmp4, label %bb40, label %bb11

bb11:                                             ; preds = %bb10
  %tmp12 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp13 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp12, align 8, !tbaa !18
  %tmp14 = icmp eq %"class.adept::Stack"* %tmp13, null
  br i1 %tmp14, label %bb40, label %bb15

bb15:                                             ; preds = %bb11
  %tmp16 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp17 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp16, align 8, !tbaa !18
  %tmp18 = icmp eq %"class.adept::Stack"* %tmp17, %arg
  br i1 %tmp18, label %bb40, label %bb19

bb19:                                             ; preds = %bb15, %bb
  %tmp20 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp21 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp21) #4
  %tmp22 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp1, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp22) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.26, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp1)
          to label %bb23 unwind label %bb26

bb23:                                             ; preds = %bb19
  %tmp24 = bitcast i8* %tmp20 to %"class.adept::stack_already_active"*
  invoke void @_ZN5adept20stack_already_activeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::stack_already_active"* %tmp24, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb25 unwind label %bb30

bb25:                                             ; preds = %bb23
  invoke void @__cxa_throw(i8* %tmp20, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept20stack_already_activeE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb50 unwind label %bb30

bb26:                                             ; preds = %bb19
  %tmp27 = landingpad { i8*, i32 }
          cleanup
  %tmp28 = extractvalue { i8*, i32 } %tmp27, 0
  %tmp29 = extractvalue { i8*, i32 } %tmp27, 1
  br label %bb35

bb30:                                             ; preds = %bb25, %bb23
  %tmp31 = phi i1 [ false, %bb25 ], [ true, %bb23 ]
  %tmp32 = landingpad { i8*, i32 }
          cleanup
  %tmp33 = extractvalue { i8*, i32 } %tmp32, 0
  %tmp34 = extractvalue { i8*, i32 } %tmp32, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb35

bb35:                                             ; preds = %bb30, %bb26
  %tmp36 = phi i8* [ %tmp33, %bb30 ], [ %tmp28, %bb26 ]
  %tmp37 = phi i32 [ %tmp34, %bb30 ], [ %tmp29, %bb26 ]
  %tmp38 = phi i1 [ %tmp31, %bb30 ], [ true, %bb26 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp22) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp21) #4
  br i1 %tmp38, label %bb39, label %bb47

bb39:                                             ; preds = %bb35
  call void @__cxa_free_exception(i8* %tmp20) #4
  br label %bb47

bb40:                                             ; preds = %bb15, %bb11, %bb10
  %tmp41 = load i8, i8* %tmp2, align 1, !tbaa !10, !range !17
  %tmp42 = icmp eq i8 %tmp41, 0
  br i1 %tmp42, label %bb43, label %bb45

bb43:                                             ; preds = %bb40
  %tmp44 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  br label %bb45

bb45:                                             ; preds = %bb43, %bb40
  %tmp46 = phi %"class.adept::Stack"** [ %tmp44, %bb43 ], [ @_ZN5adept28_stack_current_thread_unsafeE, %bb40 ]
  store %"class.adept::Stack"* %arg, %"class.adept::Stack"** %tmp46, align 8, !tbaa !18
  ret void

bb47:                                             ; preds = %bb39, %bb35
  %tmp48 = insertvalue { i8*, i32 } undef, i8* %tmp36, 0
  %tmp49 = insertvalue { i8*, i32 } %tmp48, i32 %tmp37, 1
  resume { i8*, i32 } %tmp49

bb50:                                             ; preds = %bb25
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept20stack_already_activeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::stack_already_active"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::stack_already_active", %"class.adept::stack_already_active"* %arg, i64 0, i32 0
  tail call void @_ZN5adept18autodiff_exceptionC2Ev(%"class.adept::autodiff_exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::stack_already_active", %"class.adept::stack_already_active"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept20stack_already_activeE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::stack_already_active", %"class.adept::stack_already_active"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  %tmp8 = getelementptr inbounds %"class.adept::stack_already_active", %"class.adept::stack_already_active"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp8) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local i32 @_ZN5adept5Stack24set_max_jacobian_threadsEi(%"class.adept::Stack"* nocapture readnone %arg, i32 %arg1) local_unnamed_addr #9 align 2 {
bb:
  ret i32 1
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local i32 @_ZNK5adept5Stack20max_jacobian_threadsEv(%"class.adept::Stack"* nocapture readnone %arg) local_unnamed_addr #9 align 2 {
bb:
  ret i32 1
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack15compute_adjointEv(%"class.adept::Stack"* %arg) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp1 = alloca %"class.std::allocator", align 1
  %tmp2 = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg)
  br i1 %tmp2, label %bb3, label %bb52

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp5 = load i32, i32* %tmp4, align 8, !tbaa !28
  %tmp6 = icmp sgt i32 %tmp5, 1
  br i1 %tmp6, label %bb7, label %bb15

bb7:                                              ; preds = %bb3
  %tmp8 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp9 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp8, align 8, !tbaa !24
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp11 = load double*, double** %tmp10, align 8, !tbaa !19
  %tmp12 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp13 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp14 = sext i32 %tmp5 to i64
  br label %bb16

bb15:                                             ; preds = %bb50, %bb3
  ret void

bb16:                                             ; preds = %bb50, %bb7
  %tmp17 = phi i64 [ %tmp14, %bb7 ], [ %tmp18, %bb50 ]
  %tmp18 = add nsw i64 %tmp17, -1
  %tmp19 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp18, i32 0
  %tmp20 = load i32, i32* %tmp19, align 4, !tbaa !29
  %tmp21 = sext i32 %tmp20 to i64
  %tmp22 = getelementptr inbounds double, double* %tmp11, i64 %tmp21
  %tmp23 = load double, double* %tmp22, align 8, !tbaa !31
  store double 0.000000e+00, double* %tmp22, align 8, !tbaa !31
  %tmp24 = fcmp fast une double %tmp23, 0.000000e+00
  br i1 %tmp24, label %bb25, label %bb50

bb25:                                             ; preds = %bb16
  %tmp26 = add nsw i64 %tmp17, -2
  %tmp27 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp26, i32 1
  %tmp28 = load i32, i32* %tmp27, align 4, !tbaa !33
  %tmp29 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp18, i32 1
  %tmp30 = load i32, i32* %tmp29, align 4, !tbaa !33
  %tmp31 = icmp slt i32 %tmp28, %tmp30
  br i1 %tmp31, label %bb32, label %bb50

bb32:                                             ; preds = %bb25
  %tmp33 = load double*, double** %tmp12, align 8, !tbaa !26
  %tmp34 = load i32*, i32** %tmp13, align 8, !tbaa !27
  %tmp35 = sext i32 %tmp28 to i64
  %tmp36 = sext i32 %tmp30 to i64
  br label %bb37

bb37:                                             ; preds = %bb37, %bb32
  %tmp38 = phi i64 [ %tmp35, %bb32 ], [ %tmp48, %bb37 ]
  %tmp39 = getelementptr inbounds double, double* %tmp33, i64 %tmp38
  %tmp40 = load double, double* %tmp39, align 8, !tbaa !31
  %tmp41 = fmul fast double %tmp40, %tmp23
  %tmp42 = getelementptr inbounds i32, i32* %tmp34, i64 %tmp38
  %tmp43 = load i32, i32* %tmp42, align 4, !tbaa !34
  %tmp44 = sext i32 %tmp43 to i64
  %tmp45 = getelementptr inbounds double, double* %tmp11, i64 %tmp44
  %tmp46 = load double, double* %tmp45, align 8, !tbaa !31
  %tmp47 = fadd fast double %tmp46, %tmp41
  store double %tmp47, double* %tmp45, align 8, !tbaa !31
  %tmp48 = add nsw i64 %tmp38, 1
  %tmp49 = icmp slt i64 %tmp48, %tmp36
  br i1 %tmp49, label %bb37, label %bb50

bb50:                                             ; preds = %bb37, %bb25, %bb16
  %tmp51 = icmp sgt i64 %tmp17, 2
  br i1 %tmp51, label %bb16, label %bb15

bb52:                                             ; preds = %bb
  %tmp53 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp54 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp54) #4
  %tmp55 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp1, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp55) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.27, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp1)
          to label %bb56 unwind label %bb59

bb56:                                             ; preds = %bb52
  %tmp57 = bitcast i8* %tmp53 to %"class.adept::gradients_not_initialized"*
  invoke void @_ZN5adept25gradients_not_initializedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradients_not_initialized"* %tmp57, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb58 unwind label %bb63

bb58:                                             ; preds = %bb56
  invoke void @__cxa_throw(i8* %tmp53, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept25gradients_not_initializedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb76 unwind label %bb63

bb59:                                             ; preds = %bb52
  %tmp60 = landingpad { i8*, i32 }
          cleanup
  %tmp61 = extractvalue { i8*, i32 } %tmp60, 0
  %tmp62 = extractvalue { i8*, i32 } %tmp60, 1
  br label %bb68

bb63:                                             ; preds = %bb58, %bb56
  %tmp64 = phi i1 [ false, %bb58 ], [ true, %bb56 ]
  %tmp65 = landingpad { i8*, i32 }
          cleanup
  %tmp66 = extractvalue { i8*, i32 } %tmp65, 0
  %tmp67 = extractvalue { i8*, i32 } %tmp65, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb68

bb68:                                             ; preds = %bb63, %bb59
  %tmp69 = phi i8* [ %tmp66, %bb63 ], [ %tmp61, %bb59 ]
  %tmp70 = phi i32 [ %tmp67, %bb63 ], [ %tmp62, %bb59 ]
  %tmp71 = phi i1 [ %tmp64, %bb63 ], [ true, %bb59 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp55) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp54) #4
  br i1 %tmp71, label %bb72, label %bb73

bb72:                                             ; preds = %bb68
  call void @__cxa_free_exception(i8* %tmp53) #4
  br label %bb73

bb73:                                             ; preds = %bb72, %bb68
  %tmp74 = insertvalue { i8*, i32 } undef, i8* %tmp69, 0
  %tmp75 = insertvalue { i8*, i32 } %tmp74, i32 %tmp70, 1
  resume { i8*, i32 } %tmp75

bb76:                                             ; preds = %bb58
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 10
  %tmp1 = load i8, i8* %tmp, align 8, !tbaa !35, !range !17
  %tmp2 = icmp ne i8 %tmp1, 0
  ret i1 %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept25gradients_not_initializedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradients_not_initialized"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::gradients_not_initialized", %"class.adept::gradients_not_initialized"* %arg, i64 0, i32 0
  tail call void @_ZN5adept18autodiff_exceptionC2Ev(%"class.adept::autodiff_exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::gradients_not_initialized", %"class.adept::gradients_not_initialized"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept25gradients_not_initializedE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::gradients_not_initialized", %"class.adept::gradients_not_initialized"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  %tmp8 = getelementptr inbounds %"class.adept::gradients_not_initialized", %"class.adept::gradients_not_initialized"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp8) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack22compute_tangent_linearEv(%"class.adept::Stack"* %arg) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp1 = alloca %"class.std::allocator", align 1
  %tmp2 = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg)
  br i1 %tmp2, label %bb3, label %bb52

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp5 = load i32, i32* %tmp4, align 8, !tbaa !28
  %tmp6 = icmp sgt i32 %tmp5, 1
  br i1 %tmp6, label %bb7, label %bb15

bb7:                                              ; preds = %bb3
  %tmp8 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp9 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp8, align 8, !tbaa !24
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp11 = load double*, double** %tmp10, align 8, !tbaa !19
  %tmp12 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp13 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp14 = sext i32 %tmp5 to i64
  br label %bb16

bb15:                                             ; preds = %bb30, %bb3
  ret void

bb16:                                             ; preds = %bb30, %bb7
  %tmp17 = phi i64 [ 1, %bb7 ], [ %tmp36, %bb30 ]
  %tmp18 = add nsw i64 %tmp17, -1
  %tmp19 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp18, i32 1
  %tmp20 = load i32, i32* %tmp19, align 4, !tbaa !33
  %tmp21 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp17, i32 1
  %tmp22 = load i32, i32* %tmp21, align 4, !tbaa !33
  %tmp23 = icmp slt i32 %tmp20, %tmp22
  br i1 %tmp23, label %bb24, label %bb30

bb24:                                             ; preds = %bb16
  %tmp25 = load double*, double** %tmp12, align 8, !tbaa !26
  %tmp26 = load double*, double** %tmp10, align 8, !tbaa !19
  %tmp27 = load i32*, i32** %tmp13, align 8, !tbaa !27
  %tmp28 = sext i32 %tmp20 to i64
  %tmp29 = sext i32 %tmp22 to i64
  br label %bb38

bb30:                                             ; preds = %bb38, %bb16
  %tmp31 = phi double [ 0.000000e+00, %bb16 ], [ %tmp49, %bb38 ]
  %tmp32 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp9, i64 %tmp17, i32 0
  %tmp33 = load i32, i32* %tmp32, align 4, !tbaa !29
  %tmp34 = sext i32 %tmp33 to i64
  %tmp35 = getelementptr inbounds double, double* %tmp11, i64 %tmp34
  store double %tmp31, double* %tmp35, align 8, !tbaa !31
  %tmp36 = add nuw nsw i64 %tmp17, 1
  %tmp37 = icmp slt i64 %tmp36, %tmp14
  br i1 %tmp37, label %bb16, label %bb15

bb38:                                             ; preds = %bb38, %bb24
  %tmp39 = phi i64 [ %tmp28, %bb24 ], [ %tmp50, %bb38 ]
  %tmp40 = phi double [ 0.000000e+00, %bb24 ], [ %tmp49, %bb38 ]
  %tmp41 = getelementptr inbounds double, double* %tmp25, i64 %tmp39
  %tmp42 = load double, double* %tmp41, align 8, !tbaa !31
  %tmp43 = getelementptr inbounds i32, i32* %tmp27, i64 %tmp39
  %tmp44 = load i32, i32* %tmp43, align 4, !tbaa !34
  %tmp45 = sext i32 %tmp44 to i64
  %tmp46 = getelementptr inbounds double, double* %tmp26, i64 %tmp45
  %tmp47 = load double, double* %tmp46, align 8, !tbaa !31
  %tmp48 = fmul fast double %tmp47, %tmp42
  %tmp49 = fadd fast double %tmp48, %tmp40
  %tmp50 = add nsw i64 %tmp39, 1
  %tmp51 = icmp slt i64 %tmp50, %tmp29
  br i1 %tmp51, label %bb38, label %bb30

bb52:                                             ; preds = %bb
  %tmp53 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp54 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp54) #4
  %tmp55 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp1, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp55) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.27, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp1)
          to label %bb56 unwind label %bb59

bb56:                                             ; preds = %bb52
  %tmp57 = bitcast i8* %tmp53 to %"class.adept::gradients_not_initialized"*
  invoke void @_ZN5adept25gradients_not_initializedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradients_not_initialized"* %tmp57, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb58 unwind label %bb63

bb58:                                             ; preds = %bb56
  invoke void @__cxa_throw(i8* %tmp53, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept25gradients_not_initializedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb76 unwind label %bb63

bb59:                                             ; preds = %bb52
  %tmp60 = landingpad { i8*, i32 }
          cleanup
  %tmp61 = extractvalue { i8*, i32 } %tmp60, 0
  %tmp62 = extractvalue { i8*, i32 } %tmp60, 1
  br label %bb68

bb63:                                             ; preds = %bb58, %bb56
  %tmp64 = phi i1 [ false, %bb58 ], [ true, %bb56 ]
  %tmp65 = landingpad { i8*, i32 }
          cleanup
  %tmp66 = extractvalue { i8*, i32 } %tmp65, 0
  %tmp67 = extractvalue { i8*, i32 } %tmp65, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb68

bb68:                                             ; preds = %bb63, %bb59
  %tmp69 = phi i8* [ %tmp66, %bb63 ], [ %tmp61, %bb59 ]
  %tmp70 = phi i32 [ %tmp67, %bb63 ], [ %tmp62, %bb59 ]
  %tmp71 = phi i1 [ %tmp64, %bb63 ], [ true, %bb59 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp55) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp54) #4
  br i1 %tmp71, label %bb72, label %bb73

bb72:                                             ; preds = %bb68
  call void @__cxa_free_exception(i8* %tmp53) #4
  br label %bb73

bb73:                                             ; preds = %bb72, %bb68
  %tmp74 = insertvalue { i8*, i32 } undef, i8* %tmp69, 0
  %tmp75 = insertvalue { i8*, i32 } %tmp74, i32 %tmp70, 1
  resume { i8*, i32 } %tmp75

bb76:                                             ; preds = %bb58
  unreachable
}

; Function Attrs: nounwind uwtable
define dso_local i32 @_ZN5adept5Stack21do_register_gradientsERKi(%"class.adept::Stack"* %arg, i32* nocapture readonly dereferenceable(4) %arg1) local_unnamed_addr #3 align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp2 = alloca %"struct.std::_List_iterator", align 8
  %tmp3 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp4 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp5 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp6 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 9
  %tmp7 = load i32, i32* %tmp6, align 4, !tbaa !36
  %tmp8 = add nsw i32 %tmp7, %tmp5
  store i32 %tmp8, i32* %tmp6, align 4, !tbaa !36
  %tmp9 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp10 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp9) #4
  br i1 %tmp10, label %bb64, label %bb11

bb11:                                             ; preds = %bb
  %tmp12 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp12) #4
  %tmp13 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp9) #4
  %tmp14 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp13, %"struct.std::__detail::_List_node_base"** %tmp14, align 8
  %tmp15 = bitcast %"struct.std::_List_iterator"* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp15) #4
  %tmp16 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp9) #4
  %tmp17 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp2, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp16, %"struct.std::__detail::_List_node_base"** %tmp17, align 8
  %tmp18 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp15) #4
  br i1 %tmp18, label %bb19, label %bb61

bb19:                                             ; preds = %bb57, %bb11
  %tmp20 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp21 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp20, i64 0, i32 1
  %tmp22 = load i32, i32* %tmp21, align 4, !tbaa !37
  %tmp23 = add nsw i32 %tmp22, 1
  %tmp24 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp25 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp24, i64 0, i32 0
  %tmp26 = load i32, i32* %tmp25, align 4, !tbaa !39
  %tmp27 = sub i32 %tmp23, %tmp26
  %tmp28 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp29 = icmp sgt i32 %tmp27, %tmp28
  br i1 %tmp29, label %bb30, label %bb39

bb30:                                             ; preds = %bb19
  %tmp31 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp32 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp31, i64 0, i32 0
  %tmp33 = load i32, i32* %tmp32, align 4, !tbaa !39
  %tmp34 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp35 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp36 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp35, i64 0, i32 0
  %tmp37 = load i32, i32* %tmp36, align 4, !tbaa !39
  %tmp38 = add nsw i32 %tmp37, %tmp34
  store i32 %tmp38, i32* %tmp36, align 4, !tbaa !39
  br label %bb62

bb39:                                             ; preds = %bb19
  %tmp40 = icmp eq i32 %tmp27, %tmp28
  br i1 %tmp40, label %bb41, label %bb57

bb41:                                             ; preds = %bb39
  %tmp42 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp43 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp42, i64 0, i32 0
  %tmp44 = load i32, i32* %tmp43, align 4, !tbaa !39
  %tmp45 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp46 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_(%"struct.std::_List_iterator"* nonnull %tmp45, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  br i1 %tmp46, label %bb47, label %bb53

bb47:                                             ; preds = %bb41
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp3, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  %tmp48 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp3, i64 0, i32 0
  %tmp49 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp48, align 8
  %tmp50 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp9, %"struct.std::__detail::_List_node_base"* %tmp49) #4
  %tmp51 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp9) #4
  %tmp52 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp51, %"struct.std::__detail::_List_node_base"** %tmp52, align 8
  br label %bb62

bb53:                                             ; preds = %bb41
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp4, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  %tmp54 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp4, i64 0, i32 0
  %tmp55 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp54, align 8
  %tmp56 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp9, %"struct.std::__detail::_List_node_base"* %tmp55) #4
  br label %bb62

bb57:                                             ; preds = %bb39
  %tmp58 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* nonnull %tmp, i32 0) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp15) #4
  %tmp59 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp9) #4
  store %"struct.std::__detail::_List_node_base"* %tmp59, %"struct.std::__detail::_List_node_base"** %tmp17, align 8
  %tmp60 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp15) #4
  br i1 %tmp60, label %bb19, label %bb61

bb61:                                             ; preds = %bb57, %bb11
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp12) #4
  br label %bb64

bb62:                                             ; preds = %bb53, %bb47, %bb30
  %tmp63 = phi i32 [ %tmp44, %bb47 ], [ %tmp44, %bb53 ], [ %tmp33, %bb30 ]
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp12) #4
  br label %bb76

bb64:                                             ; preds = %bb61, %bb
  %tmp65 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp66 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp67 = load i32, i32* %tmp66, align 8, !tbaa !40
  %tmp68 = add nsw i32 %tmp67, %tmp65
  store i32 %tmp68, i32* %tmp66, align 8, !tbaa !40
  %tmp69 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp70 = load i32, i32* %tmp69, align 8, !tbaa !41
  %tmp71 = icmp sgt i32 %tmp68, %tmp70
  br i1 %tmp71, label %bb72, label %bb73

bb72:                                             ; preds = %bb64
  store i32 %tmp68, i32* %tmp69, align 8, !tbaa !41
  br label %bb73

bb73:                                             ; preds = %bb72, %bb64
  %tmp74 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp75 = sub nsw i32 %tmp68, %tmp74
  br label %bb76

bb76:                                             ; preds = %bb73, %bb62
  %tmp77 = phi i32 [ %tmp75, %bb73 ], [ %tmp63, %bb62 ]
  ret i32 %tmp77
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !42
  %tmp3 = icmp eq %"struct.std::__detail::_List_node_base"* %tmp2, %tmp
  ret i1 %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !42
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp2) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp4
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* %arg, %"struct.std::_List_iterator"* dereferenceable(8) %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !44
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg1, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8, !tbaa !44
  %tmp5 = icmp ne %"struct.std::__detail::_List_node_base"* %tmp2, %tmp4
  ret i1 %tmp5
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp1) #4
  %tmp2 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp3 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp2, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* %arg) local_unnamed_addr #6 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"struct.std::_List_iterator"* %arg to %"struct.std::_List_node.73"**
  %tmp1 = load %"struct.std::_List_node.73"*, %"struct.std::_List_node.73"** %tmp, align 8, !tbaa !44
  %tmp2 = tail call %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp1)
  ret %"struct.adept::Gap"* %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_(%"struct.std::_List_iterator"* %arg, %"struct.std::_List_iterator"* dereferenceable(8) %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !44
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg1, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8, !tbaa !44
  %tmp5 = icmp eq %"struct.std::__detail::_List_node_base"* %tmp2, %tmp4
  ret i1 %tmp5
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp2 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp3 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp2, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %arg1, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  %tmp4 = getelementptr inbounds %"struct.std::__detail::_List_node_base", %"struct.std::__detail::_List_node_base"* %arg1, i64 0, i32 0
  %tmp5 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp4, align 8, !tbaa !42
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp5) #4
  %tmp6 = call %"struct.std::__detail::_List_node_base"* @_ZNKSt20_List_const_iteratorIN5adept3GapEE13_M_const_castEv(%"struct.std::_List_const_iterator"* nonnull %tmp2) #4
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8_M_eraseESt14_List_iteratorIS2_E(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %tmp6) #4
  %tmp7 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp8 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp7, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp8
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* %arg, %"struct.std::_List_iterator"* dereferenceable(8) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_List_iterator"* %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8, !tbaa !44
  %tmp3 = bitcast %"struct.std::_List_const_iterator"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !45
  ret void
}

; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) #5

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8
  %tmp3 = bitcast %"struct.std::__detail::_List_node_base"* %tmp2 to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !42
  %tmp5 = bitcast %"struct.std::_List_iterator"* %arg to i64*
  store i64 %tmp4, i64* %tmp5, align 8, !tbaa !44
  ret %"struct.std::__detail::_List_node_base"* %tmp2
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack27unregister_gradient_not_topERKi(%"class.adept::Stack"* %arg, i32* nocapture readonly dereferenceable(4) %arg4) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp5 = alloca %"struct.std::_List_iterator", align 8
  %tmp6 = alloca %"struct.std::_List_iterator", align 8
  %tmp7 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp8 = alloca %"struct.adept::Gap", align 4
  %tmp9 = alloca %"struct.adept::Gap", align 4
  %tmp10 = alloca %"struct.std::_List_iterator", align 8
  %tmp11 = alloca %"struct.std::_List_iterator", align 8
  %tmp12 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp13 = alloca %"struct.std::_List_iterator", align 8
  %tmp14 = alloca %"struct.std::_List_iterator", align 8
  %tmp15 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp16 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp17 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  br i1 %tmp17, label %bb38, label %bb18

bb18:                                             ; preds = %bb
  %tmp19 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp20 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp20) #4
  %tmp21 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp22 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp21, %"struct.std::__detail::_List_node_base"** %tmp22, align 8
  %tmp23 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp19, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp20) #4
  br i1 %tmp23, label %bb24, label %bb38

bb24:                                             ; preds = %bb18
  %tmp25 = call dereferenceable(8) %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEdeEv(%"struct.std::_List_iterator"* nonnull %tmp19) #4
  %tmp26 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp27 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp25, i64 0, i32 0
  %tmp28 = load i32, i32* %tmp27, align 4, !tbaa !39
  %tmp29 = add nsw i32 %tmp28, -1
  %tmp30 = icmp eq i32 %tmp26, %tmp29
  br i1 %tmp30, label %bb31, label %bb32

bb31:                                             ; preds = %bb24
  store i32 %tmp26, i32* %tmp27, align 4, !tbaa !39
  br label %bb96

bb32:                                             ; preds = %bb24
  %tmp33 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp25, i64 0, i32 1
  %tmp34 = load i32, i32* %tmp33, align 4, !tbaa !37
  %tmp35 = add nsw i32 %tmp34, 1
  %tmp36 = icmp eq i32 %tmp26, %tmp35
  br i1 %tmp36, label %bb37, label %bb38

bb37:                                             ; preds = %bb32
  store i32 %tmp26, i32* %tmp33, align 4, !tbaa !37
  %.phi.trans.insert1 = bitcast %"struct.std::_List_iterator"* %tmp19 to i64*
  %.pre = load i64, i64* %.phi.trans.insert1, align 8, !tbaa !18
  br label %bb132

bb38:                                             ; preds = %bb32, %bb18, %bb
  %tmp39 = bitcast %"struct.std::_List_iterator"* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp39) #4
  %tmp40 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp41 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp5, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp40, %"struct.std::__detail::_List_node_base"** %tmp41, align 8
  %tmp42 = bitcast %"struct.std::_List_iterator"* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp42) #4
  %tmp43 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp44 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp6, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp43, %"struct.std::__detail::_List_node_base"** %tmp44, align 8
  %tmp45 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp5, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp42) #4
  br i1 %tmp45, label %bb46, label %bb80

bb46:                                             ; preds = %bb76, %bb38
  %tmp47 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp48 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp5) #4
  %tmp49 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp48, i64 0, i32 1
  %tmp50 = load i32, i32* %tmp49, align 4, !tbaa !37
  %tmp51 = add nsw i32 %tmp50, 1
  %tmp52 = icmp sgt i32 %tmp47, %tmp51
  br i1 %tmp52, label %bb76, label %bb53

bb53:                                             ; preds = %bb46
  %tmp54 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp55 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp5) #4
  %tmp56 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp55, i64 0, i32 0
  %tmp57 = load i32, i32* %tmp56, align 4, !tbaa !39
  %tmp58 = add nsw i32 %tmp57, -1
  %tmp59 = icmp eq i32 %tmp54, %tmp58
  br i1 %tmp59, label %bb87, label %bb60

bb60:                                             ; preds = %bb53
  %tmp61 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp62 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp5) #4
  %tmp63 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp62, i64 0, i32 1
  %tmp64 = load i32, i32* %tmp63, align 4, !tbaa !37
  %tmp65 = add nsw i32 %tmp64, 1
  %tmp66 = icmp eq i32 %tmp61, %tmp65
  br i1 %tmp66, label %bb67, label %bb125

bb67:                                             ; preds = %bb60
  %tmp68 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp5) #4
  %tmp69 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp68, i64 0, i32 1
  %tmp70 = load i32, i32* %tmp69, align 4, !tbaa !37
  %tmp71 = add nsw i32 %tmp70, 1
  store i32 %tmp71, i32* %tmp69, align 4, !tbaa !37
  %tmp72 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp73 = bitcast %"struct.std::_List_iterator"* %tmp5 to i64*
  %tmp74 = bitcast %"struct.std::_List_iterator"* %tmp72 to i64*
  %tmp75 = load i64, i64* %tmp73, align 8, !tbaa !18
  store i64 %tmp75, i64* %tmp74, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  br label %bb132

bb76:                                             ; preds = %bb46
  %tmp77 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* nonnull %tmp5, i32 0) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp42) #4
  %tmp78 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  store %"struct.std::__detail::_List_node_base"* %tmp78, %"struct.std::__detail::_List_node_base"** %tmp44, align 8
  %tmp79 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp5, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp42) #4
  br i1 %tmp79, label %bb46, label %bb80

bb80:                                             ; preds = %bb76, %bb38
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  %tmp81 = bitcast %"struct.adept::Gap"* %tmp9 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp81) #4
  %tmp82 = load i32, i32* %arg4, align 4, !tbaa !34
  call void @_ZN5adept3GapC2Ei(%"struct.adept::Gap"* nonnull %tmp9, i32 %tmp82)
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9push_backEOS2_(%"class.std::__cxx11::list"* nonnull %tmp16, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp9)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp81) #4
  %tmp83 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp84 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp83, %"struct.std::__detail::_List_node_base"** %tmp84, align 8
  %tmp85 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp86 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp85, i32 0) #4
  br label %bb161

bb87:                                             ; preds = %bb53
  %tmp88 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp5) #4
  %tmp89 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp88, i64 0, i32 0
  %tmp90 = load i32, i32* %tmp89, align 4, !tbaa !39
  %tmp91 = add nsw i32 %tmp90, -1
  store i32 %tmp91, i32* %tmp89, align 4, !tbaa !39
  %tmp92 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp93 = bitcast %"struct.std::_List_iterator"* %tmp5 to i64*
  %tmp94 = bitcast %"struct.std::_List_iterator"* %tmp92 to i64*
  %tmp95 = load i64, i64* %tmp93, align 8, !tbaa !18
  store i64 %tmp95, i64* %tmp94, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  br label %bb96

bb96:                                             ; preds = %bb87, %bb31
  %.pre-phi = phi %"struct.std::_List_iterator"* [ %tmp92, %bb87 ], [ %tmp19, %bb31 ]
  %tmp97 = bitcast %"struct.std::_List_iterator"* %tmp10 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp97) #4
  %tmp98 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp99 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp10, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp98, %"struct.std::__detail::_List_node_base"** %tmp99, align 8
  %tmp100 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %.pre-phi, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp10) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp97) #4
  br i1 %tmp100, label %bb101, label %bb161

bb101:                                            ; preds = %bb96
  %tmp102 = bitcast %"struct.std::_List_iterator"* %tmp11 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp102) #4
  %tmp103 = bitcast %"struct.std::_List_iterator"* %.pre-phi to i64*
  %tmp104 = bitcast %"struct.std::_List_iterator"* %tmp11 to i64*
  %tmp105 = load i64, i64* %tmp103, align 8, !tbaa !18
  store i64 %tmp105, i64* %tmp104, align 8, !tbaa !18
  %tmp106 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp11, i32 0) #4
  %tmp107 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp11) #4
  %tmp108 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp107, i64 0, i32 1
  %tmp109 = load i32, i32* %tmp108, align 4, !tbaa !37
  %tmp110 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi) #4
  %tmp111 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp110, i64 0, i32 0
  %tmp112 = load i32, i32* %tmp111, align 4, !tbaa !39
  %tmp113 = add nsw i32 %tmp112, -1
  %tmp114 = icmp eq i32 %tmp109, %tmp113
  br i1 %tmp114, label %bb115, label %bb124

bb115:                                            ; preds = %bb101
  %tmp116 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp11) #4
  %tmp117 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp116, i64 0, i32 0
  %tmp118 = load i32, i32* %tmp117, align 4, !tbaa !39
  %tmp119 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi) #4
  %tmp120 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp119, i64 0, i32 0
  store i32 %tmp118, i32* %tmp120, align 4, !tbaa !39
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp12, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp11) #4
  %tmp121 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp12, i64 0, i32 0
  %tmp122 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp121, align 8
  %tmp123 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp16, %"struct.std::__detail::_List_node_base"* %tmp122) #4
  br label %bb124

bb124:                                            ; preds = %bb115, %bb101
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp102) #4
  br label %bb161

bb125:                                            ; preds = %bb60
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp7, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp5) #4
  %tmp126 = bitcast %"struct.adept::Gap"* %tmp8 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp126) #4
  %tmp127 = load i32, i32* %arg4, align 4, !tbaa !34
  call void @_ZN5adept3GapC2Ei(%"struct.adept::Gap"* nonnull %tmp8, i32 %tmp127)
  %tmp128 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp7, i64 0, i32 0
  %tmp129 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp128, align 8
  %tmp130 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE6insertESt20_List_const_iteratorIS2_EOS2_(%"class.std::__cxx11::list"* nonnull %tmp16, %"struct.std::__detail::_List_node_base"* %tmp129, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp8)
  %tmp131 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp130, %"struct.std::__detail::_List_node_base"** %tmp131, align 8
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp126) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  br label %bb161

bb132:                                            ; preds = %bb67, %bb37
  %.pre-phi3 = phi i64* [ %tmp74, %bb67 ], [ %.phi.trans.insert1, %bb37 ]
  %.pre-phi2 = phi %"struct.std::_List_iterator"* [ %tmp72, %bb67 ], [ %tmp19, %bb37 ]
  %tmp133 = phi i64 [ %tmp75, %bb67 ], [ %.pre, %bb37 ]
  %tmp134 = bitcast %"struct.std::_List_iterator"* %tmp13 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp134) #4
  %tmp135 = bitcast %"struct.std::_List_iterator"* %tmp13 to i64*
  store i64 %tmp133, i64* %tmp135, align 8, !tbaa !18
  %tmp136 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* nonnull %tmp13, i32 0) #4
  %tmp137 = bitcast %"struct.std::_List_iterator"* %tmp14 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp137) #4
  %tmp138 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp16) #4
  %tmp139 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp14, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp138, %"struct.std::__detail::_List_node_base"** %tmp139, align 8
  %tmp140 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp13, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp14) #4
  br i1 %tmp140, label %bb141, label %bb159

bb141:                                            ; preds = %bb132
  %tmp142 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp13) #4
  %tmp143 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp142, i64 0, i32 0
  %tmp144 = load i32, i32* %tmp143, align 4, !tbaa !39
  %tmp145 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi2) #4
  %tmp146 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp145, i64 0, i32 1
  %tmp147 = load i32, i32* %tmp146, align 4, !tbaa !37
  %tmp148 = add nsw i32 %tmp147, 1
  %tmp149 = icmp eq i32 %tmp144, %tmp148
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp137) #4
  br i1 %tmp149, label %bb150, label %bb160

bb150:                                            ; preds = %bb141
  %tmp151 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp13) #4
  %tmp152 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp151, i64 0, i32 1
  %tmp153 = load i32, i32* %tmp152, align 4, !tbaa !37
  %tmp154 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi2) #4
  %tmp155 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp154, i64 0, i32 1
  store i32 %tmp153, i32* %tmp155, align 4, !tbaa !37
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp15, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp13) #4
  %tmp156 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp15, i64 0, i32 0
  %tmp157 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp156, align 8
  %tmp158 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp16, %"struct.std::__detail::_List_node_base"* %tmp157) #4
  br label %bb160

bb159:                                            ; preds = %bb132
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp137) #4
  br label %bb160

bb160:                                            ; preds = %bb159, %bb150, %bb141
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp134) #4
  br label %bb161

bb161:                                            ; preds = %bb160, %bb125, %bb124, %bb96, %bb80
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEdeEv(%"struct.std::_List_iterator"* %arg) local_unnamed_addr #6 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"struct.std::_List_iterator"* %arg to %"struct.std::_List_node.73"**
  %tmp1 = load %"struct.std::_List_node.73"*, %"struct.std::_List_node.73"** %tmp, align 8, !tbaa !44
  %tmp2 = tail call %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp1)
  ret %"struct.adept::Gap"* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE6insertESt20_List_const_iteratorIS2_EOS2_(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1, %"struct.adept::Gap"* dereferenceable(8) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt4moveIRN5adept3GapEEONSt16remove_referenceIT_E4typeEOS4_(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg2) #4
  %tmp3 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE7emplaceIJS2_EEESt14_List_iteratorIS2_ESt20_List_const_iteratorIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp)
  ret %"struct.std::__detail::_List_node_base"* %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept3GapC2Ei(%"struct.adept::Gap"* %arg, i32 %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %arg, i64 0, i32 0
  store i32 %arg1, i32* %tmp, align 4, !tbaa !39
  %tmp2 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %arg, i64 0, i32 1
  store i32 %arg1, i32* %tmp2, align 4, !tbaa !37
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9push_backEOS2_(%"class.std::__cxx11::list"* %arg, %"struct.adept::Gap"* dereferenceable(8) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* %arg) #4
  %tmp2 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt4moveIRN5adept3GapEEONSt16remove_referenceIT_E4typeEOS4_(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg1) #4
  tail call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9_M_insertIJS2_EEEvSt14_List_iteratorIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %tmp, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp2)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8
  %tmp3 = getelementptr inbounds %"struct.std::__detail::_List_node_base", %"struct.std::__detail::_List_node_base"* %tmp2, i64 0, i32 1
  %tmp4 = bitcast %"struct.std::__detail::_List_node_base"** %tmp3 to i64*
  %tmp5 = load i64, i64* %tmp4, align 8, !tbaa !47
  %tmp6 = bitcast %"struct.std::_List_iterator"* %arg to i64*
  store i64 %tmp5, i64* %tmp6, align 8, !tbaa !44
  ret %"struct.std::__detail::_List_node_base"* %tmp2
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack20unregister_gradientsERKiS2_(%"class.adept::Stack"* %arg, i32* nocapture readonly dereferenceable(4) %arg4, i32* nocapture readonly dereferenceable(4) %arg5) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp6 = alloca %"struct.std::_List_iterator", align 8
  %tmp7 = alloca %"struct.std::_List_iterator", align 8
  %tmp8 = alloca %"struct.std::_List_iterator", align 8
  %tmp9 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp10 = alloca %"struct.adept::Gap", align 4
  %tmp11 = alloca %"struct.adept::Gap", align 4
  %tmp12 = alloca %"struct.std::_List_iterator", align 8
  %tmp13 = alloca %"struct.std::_List_iterator", align 8
  %tmp14 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp15 = alloca %"struct.std::_List_iterator", align 8
  %tmp16 = alloca %"struct.std::_List_iterator", align 8
  %tmp17 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp18 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp19 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 9
  %tmp20 = load i32, i32* %tmp19, align 4, !tbaa !36
  %tmp21 = sub nsw i32 %tmp20, %tmp18
  store i32 %tmp21, i32* %tmp19, align 4, !tbaa !36
  %tmp22 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp23 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp24 = add nsw i32 %tmp23, %tmp22
  %tmp25 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp26 = load i32, i32* %tmp25, align 8, !tbaa !40
  %tmp27 = icmp eq i32 %tmp24, %tmp26
  br i1 %tmp27, label %bb28, label %bb51

bb28:                                             ; preds = %bb
  store i32 %tmp22, i32* %tmp25, align 8, !tbaa !40
  %tmp29 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp30 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp29) #4
  br i1 %tmp30, label %bb207, label %bb31

bb31:                                             ; preds = %bb28
  %tmp32 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE4backEv(%"class.std::__cxx11::list"* nonnull %tmp29) #4
  %tmp33 = load i32, i32* %tmp25, align 8, !tbaa !40
  %tmp34 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp32, i64 0, i32 1
  %tmp35 = load i32, i32* %tmp34, align 4, !tbaa !37
  %tmp36 = add nsw i32 %tmp35, 1
  %tmp37 = icmp eq i32 %tmp33, %tmp36
  br i1 %tmp37, label %bb38, label %bb207

bb38:                                             ; preds = %bb31
  %tmp39 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp32, i64 0, i32 0
  %tmp40 = load i32, i32* %tmp39, align 4, !tbaa !39
  store i32 %tmp40, i32* %tmp25, align 8, !tbaa !40
  %tmp41 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp41) #4
  %tmp42 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp29) #4
  %tmp43 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp42, %"struct.std::__detail::_List_node_base"** %tmp43, align 8
  %tmp44 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp, i32 0) #4
  %tmp45 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp46 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_(%"struct.std::_List_iterator"* nonnull %tmp45, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  br i1 %tmp46, label %bb47, label %bb50

bb47:                                             ; preds = %bb38
  %tmp48 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp29) #4
  %tmp49 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp48, %"struct.std::__detail::_List_node_base"** %tmp49, align 8
  br label %bb50

bb50:                                             ; preds = %bb47, %bb38
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8pop_backEv(%"class.std::__cxx11::list"* nonnull %tmp29) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp41) #4
  br label %bb207

bb51:                                             ; preds = %bb
  %tmp52 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp53 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  br i1 %tmp53, label %bb76, label %bb54

bb54:                                             ; preds = %bb51
  %tmp55 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp56 = bitcast %"struct.std::_List_iterator"* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp56) #4
  %tmp57 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp58 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp6, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp57, %"struct.std::__detail::_List_node_base"** %tmp58, align 8
  %tmp59 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp55, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp56) #4
  br i1 %tmp59, label %bb60, label %bb76

bb60:                                             ; preds = %bb54
  %tmp61 = call dereferenceable(8) %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEdeEv(%"struct.std::_List_iterator"* nonnull %tmp55) #4
  %tmp62 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp63 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp61, i64 0, i32 0
  %tmp64 = load i32, i32* %tmp63, align 4, !tbaa !39
  %tmp65 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp66 = sub nsw i32 %tmp64, %tmp65
  %tmp67 = icmp eq i32 %tmp62, %tmp66
  br i1 %tmp67, label %bb68, label %bb69

bb68:                                             ; preds = %bb60
  store i32 %tmp62, i32* %tmp63, align 4, !tbaa !39
  br label %bb139

bb69:                                             ; preds = %bb60
  %tmp70 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp61, i64 0, i32 1
  %tmp71 = load i32, i32* %tmp70, align 4, !tbaa !37
  %tmp72 = add nsw i32 %tmp71, 1
  %tmp73 = icmp eq i32 %tmp62, %tmp72
  br i1 %tmp73, label %bb74, label %bb76

bb74:                                             ; preds = %bb69
  %tmp75 = add nsw i32 %tmp71, %tmp65
  store i32 %tmp75, i32* %tmp70, align 4, !tbaa !37
  %.phi.trans.insert1 = bitcast %"struct.std::_List_iterator"* %tmp55 to i64*
  %.pre = load i64, i64* %.phi.trans.insert1, align 8, !tbaa !18
  br label %bb178

bb76:                                             ; preds = %bb69, %bb54, %bb51
  %tmp77 = bitcast %"struct.std::_List_iterator"* %tmp7 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp77) #4
  %tmp78 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp79 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp7, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp78, %"struct.std::__detail::_List_node_base"** %tmp79, align 8
  %tmp80 = bitcast %"struct.std::_List_iterator"* %tmp8 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp80) #4
  %tmp81 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp82 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp8, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp81, %"struct.std::__detail::_List_node_base"** %tmp82, align 8
  %tmp83 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp7, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp80) #4
  br i1 %tmp83, label %bb84, label %bb120

bb84:                                             ; preds = %bb116, %bb76
  %tmp85 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp86 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp7) #4
  %tmp87 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp86, i64 0, i32 1
  %tmp88 = load i32, i32* %tmp87, align 4, !tbaa !37
  %tmp89 = add nsw i32 %tmp88, 1
  %tmp90 = icmp sgt i32 %tmp85, %tmp89
  br i1 %tmp90, label %bb116, label %bb91

bb91:                                             ; preds = %bb84
  %tmp92 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp93 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp7) #4
  %tmp94 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp93, i64 0, i32 0
  %tmp95 = load i32, i32* %tmp94, align 4, !tbaa !39
  %tmp96 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp97 = sub nsw i32 %tmp95, %tmp96
  %tmp98 = icmp eq i32 %tmp92, %tmp97
  br i1 %tmp98, label %bb130, label %bb99

bb99:                                             ; preds = %bb91
  %tmp100 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp101 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp7) #4
  %tmp102 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp101, i64 0, i32 1
  %tmp103 = load i32, i32* %tmp102, align 4, !tbaa !37
  %tmp104 = add nsw i32 %tmp103, 1
  %tmp105 = icmp eq i32 %tmp100, %tmp104
  br i1 %tmp105, label %bb106, label %bb168

bb106:                                            ; preds = %bb99
  %tmp107 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp108 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp7) #4
  %tmp109 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp108, i64 0, i32 1
  %tmp110 = load i32, i32* %tmp109, align 4, !tbaa !37
  %tmp111 = add nsw i32 %tmp110, %tmp107
  store i32 %tmp111, i32* %tmp109, align 4, !tbaa !37
  %tmp112 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp113 = bitcast %"struct.std::_List_iterator"* %tmp7 to i64*
  %tmp114 = bitcast %"struct.std::_List_iterator"* %tmp112 to i64*
  %tmp115 = load i64, i64* %tmp113, align 8, !tbaa !18
  store i64 %tmp115, i64* %tmp114, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp77) #4
  br label %bb178

bb116:                                            ; preds = %bb84
  %tmp117 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* nonnull %tmp7, i32 0) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp80) #4
  %tmp118 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  store %"struct.std::__detail::_List_node_base"* %tmp118, %"struct.std::__detail::_List_node_base"** %tmp82, align 8
  %tmp119 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp7, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp80) #4
  br i1 %tmp119, label %bb84, label %bb120

bb120:                                            ; preds = %bb116, %bb76
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp77) #4
  %tmp121 = bitcast %"struct.adept::Gap"* %tmp11 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp121) #4
  %tmp122 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp123 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp124 = add i32 %tmp122, -1
  %tmp125 = add i32 %tmp124, %tmp123
  call void @_ZN5adept3GapC2Eii(%"struct.adept::Gap"* nonnull %tmp11, i32 %tmp122, i32 %tmp125)
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9push_backEOS2_(%"class.std::__cxx11::list"* nonnull %tmp52, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp11)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp121) #4
  %tmp126 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp127 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp126, %"struct.std::__detail::_List_node_base"** %tmp127, align 8
  %tmp128 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp129 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp128, i32 0) #4
  br label %bb207

bb130:                                            ; preds = %bb91
  %tmp131 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp7) #4
  %tmp132 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp131, i64 0, i32 0
  %tmp133 = load i32, i32* %tmp132, align 4, !tbaa !39
  %tmp134 = sub nsw i32 %tmp133, %tmp96
  store i32 %tmp134, i32* %tmp132, align 4, !tbaa !39
  %tmp135 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp136 = bitcast %"struct.std::_List_iterator"* %tmp7 to i64*
  %tmp137 = bitcast %"struct.std::_List_iterator"* %tmp135 to i64*
  %tmp138 = load i64, i64* %tmp136, align 8, !tbaa !18
  store i64 %tmp138, i64* %tmp137, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp77) #4
  br label %bb139

bb139:                                            ; preds = %bb130, %bb68
  %.pre-phi = phi %"struct.std::_List_iterator"* [ %tmp135, %bb130 ], [ %tmp55, %bb68 ]
  %tmp140 = bitcast %"struct.std::_List_iterator"* %tmp12 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp140) #4
  %tmp141 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp142 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp12, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp141, %"struct.std::__detail::_List_node_base"** %tmp142, align 8
  %tmp143 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %.pre-phi, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp12) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp140) #4
  br i1 %tmp143, label %bb144, label %bb207

bb144:                                            ; preds = %bb139
  %tmp145 = bitcast %"struct.std::_List_iterator"* %tmp13 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp145) #4
  %tmp146 = bitcast %"struct.std::_List_iterator"* %.pre-phi to i64*
  %tmp147 = bitcast %"struct.std::_List_iterator"* %tmp13 to i64*
  %tmp148 = load i64, i64* %tmp146, align 8, !tbaa !18
  store i64 %tmp148, i64* %tmp147, align 8, !tbaa !18
  %tmp149 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp13, i32 0) #4
  %tmp150 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp13) #4
  %tmp151 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp150, i64 0, i32 1
  %tmp152 = load i32, i32* %tmp151, align 4, !tbaa !37
  %tmp153 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi) #4
  %tmp154 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp153, i64 0, i32 0
  %tmp155 = load i32, i32* %tmp154, align 4, !tbaa !39
  %tmp156 = add nsw i32 %tmp155, -1
  %tmp157 = icmp eq i32 %tmp152, %tmp156
  br i1 %tmp157, label %bb158, label %bb167

bb158:                                            ; preds = %bb144
  %tmp159 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp13) #4
  %tmp160 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp159, i64 0, i32 0
  %tmp161 = load i32, i32* %tmp160, align 4, !tbaa !39
  %tmp162 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi) #4
  %tmp163 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp162, i64 0, i32 0
  store i32 %tmp161, i32* %tmp163, align 4, !tbaa !39
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp14, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp13) #4
  %tmp164 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp14, i64 0, i32 0
  %tmp165 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp164, align 8
  %tmp166 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp52, %"struct.std::__detail::_List_node_base"* %tmp165) #4
  br label %bb167

bb167:                                            ; preds = %bb158, %bb144
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp145) #4
  br label %bb207

bb168:                                            ; preds = %bb99
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp9, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp7) #4
  %tmp169 = bitcast %"struct.adept::Gap"* %tmp10 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp169) #4
  %tmp170 = load i32, i32* %arg4, align 4, !tbaa !34
  %tmp171 = load i32, i32* %arg5, align 4, !tbaa !34
  %tmp172 = add i32 %tmp170, -1
  %tmp173 = add i32 %tmp172, %tmp171
  call void @_ZN5adept3GapC2Eii(%"struct.adept::Gap"* nonnull %tmp10, i32 %tmp170, i32 %tmp173)
  %tmp174 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp9, i64 0, i32 0
  %tmp175 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp174, align 8
  %tmp176 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE6insertESt20_List_const_iteratorIS2_EOS2_(%"class.std::__cxx11::list"* nonnull %tmp52, %"struct.std::__detail::_List_node_base"* %tmp175, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp10)
  %tmp177 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp176, %"struct.std::__detail::_List_node_base"** %tmp177, align 8
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp169) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp77) #4
  br label %bb207

bb178:                                            ; preds = %bb106, %bb74
  %.pre-phi3 = phi i64* [ %tmp114, %bb106 ], [ %.phi.trans.insert1, %bb74 ]
  %.pre-phi2 = phi %"struct.std::_List_iterator"* [ %tmp112, %bb106 ], [ %tmp55, %bb74 ]
  %tmp179 = phi i64 [ %tmp115, %bb106 ], [ %.pre, %bb74 ]
  %tmp180 = bitcast %"struct.std::_List_iterator"* %tmp15 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp180) #4
  %tmp181 = bitcast %"struct.std::_List_iterator"* %tmp15 to i64*
  store i64 %tmp179, i64* %tmp181, align 8, !tbaa !18
  %tmp182 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEppEi(%"struct.std::_List_iterator"* nonnull %tmp15, i32 0) #4
  %tmp183 = bitcast %"struct.std::_List_iterator"* %tmp16 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp183) #4
  %tmp184 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp52) #4
  %tmp185 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp16, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp184, %"struct.std::__detail::_List_node_base"** %tmp185, align 8
  %tmp186 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_iterator"* nonnull %tmp15, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp16) #4
  br i1 %tmp186, label %bb187, label %bb205

bb187:                                            ; preds = %bb178
  %tmp188 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp15) #4
  %tmp189 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp188, i64 0, i32 0
  %tmp190 = load i32, i32* %tmp189, align 4, !tbaa !39
  %tmp191 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi2) #4
  %tmp192 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp191, i64 0, i32 1
  %tmp193 = load i32, i32* %tmp192, align 4, !tbaa !37
  %tmp194 = add nsw i32 %tmp193, 1
  %tmp195 = icmp eq i32 %tmp190, %tmp194
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp183) #4
  br i1 %tmp195, label %bb196, label %bb206

bb196:                                            ; preds = %bb187
  %tmp197 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %tmp15) #4
  %tmp198 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp197, i64 0, i32 1
  %tmp199 = load i32, i32* %tmp198, align 4, !tbaa !37
  %tmp200 = call %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEptEv(%"struct.std::_List_iterator"* nonnull %.pre-phi2) #4
  %tmp201 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp200, i64 0, i32 1
  store i32 %tmp199, i32* %tmp201, align 4, !tbaa !37
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2ERKSt14_List_iteratorIS1_E(%"struct.std::_List_const_iterator"* nonnull %tmp17, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp15) #4
  %tmp202 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp17, i64 0, i32 0
  %tmp203 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp202, align 8
  %tmp204 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5eraseESt20_List_const_iteratorIS2_E(%"class.std::__cxx11::list"* nonnull %tmp52, %"struct.std::__detail::_List_node_base"* %tmp203) #4
  br label %bb206

bb205:                                            ; preds = %bb178
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp183) #4
  br label %bb206

bb206:                                            ; preds = %bb205, %bb196, %bb187
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp180) #4
  br label %bb207

bb207:                                            ; preds = %bb206, %bb168, %bb167, %bb139, %bb120, %bb50, %bb31, %bb28
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.adept::Gap"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE4backEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp1) #4
  %tmp2 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* %arg) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp2, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  %tmp4 = call dereferenceable(8) %"struct.std::_List_iterator"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  %tmp5 = call dereferenceable(8) %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEdeEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp1) #4
  ret %"struct.adept::Gap"* %tmp5
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8pop_backEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 1
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !47
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp2) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8_M_eraseESt14_List_iteratorIS2_E(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %tmp4) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept3GapC2Eii(%"struct.adept::Gap"* %arg, i32 %arg1, i32 %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %arg, i64 0, i32 0
  store i32 %arg1, i32* %tmp, align 4, !tbaa !39
  %tmp3 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %arg, i64 0, i32 1
  store i32 %arg2, i32* %tmp3, align 4, !tbaa !37
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack16print_statementsERSo(%"class.adept::Stack"* nocapture readonly %arg, %"class.std::basic_ostream"* dereferenceable(272) %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp2 = load i32, i32* %tmp, align 8, !tbaa !28
  %tmp3 = icmp sgt i32 %tmp2, 1
  br i1 %tmp3, label %bb4, label %bb8

bb4:                                              ; preds = %bb
  %tmp5 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp6 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  br label %bb9

bb8:                                              ; preds = %bb53, %bb
  ret void

bb9:                                              ; preds = %bb53, %bb4
  %tmp10 = phi i64 [ 1, %bb4 ], [ %tmp54, %bb53 ]
  %tmp11 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp5, align 8, !tbaa !24
  %tmp12 = trunc i64 %tmp10 to i32
  %tmp13 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %arg1, i32 %tmp12)
  %tmp14 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp13, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0))
  %tmp15 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp11, i64 %tmp10, i32 0
  %tmp16 = load i32, i32* %tmp15, align 4, !tbaa !29
  %tmp17 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp14, i32 %tmp16)
  %tmp18 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i64 0, i64 0))
  %tmp19 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp5, align 8, !tbaa !24
  %tmp20 = add nsw i64 %tmp10, -1
  %tmp21 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp19, i64 %tmp20, i32 1
  %tmp22 = load i32, i32* %tmp21, align 4, !tbaa !33
  %tmp23 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp19, i64 %tmp10, i32 1
  %tmp24 = load i32, i32* %tmp23, align 4, !tbaa !33
  %tmp25 = icmp eq i32 %tmp22, %tmp24
  br i1 %tmp25, label %bb32, label %bb26

bb26:                                             ; preds = %bb9
  %tmp27 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp11, i64 %tmp10, i32 1
  %tmp28 = load i32, i32* %tmp27, align 4, !tbaa !33
  %tmp29 = icmp slt i32 %tmp22, %tmp28
  br i1 %tmp29, label %bb30, label %bb34

bb30:                                             ; preds = %bb26
  %tmp31 = sext i32 %tmp22 to i64
  br label %bb36

bb32:                                             ; preds = %bb9
  %tmp33 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.30, i64 0, i64 0))
  br label %bb53

bb34:                                             ; preds = %bb36, %bb26
  %tmp35 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  br label %bb53

bb36:                                             ; preds = %bb36, %bb30
  %tmp37 = phi i64 [ %tmp31, %bb30 ], [ %tmp49, %bb36 ]
  %tmp38 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0))
  %tmp39 = load double*, double** %tmp6, align 8, !tbaa !26
  %tmp40 = getelementptr inbounds double, double* %tmp39, i64 %tmp37
  %tmp41 = load double, double* %tmp40, align 8, !tbaa !31
  %tmp42 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEd(%"class.std::basic_ostream"* nonnull %tmp38, double %tmp41)
  %tmp43 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp42, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0))
  %tmp44 = load i32*, i32** %tmp7, align 8, !tbaa !27
  %tmp45 = getelementptr inbounds i32, i32* %tmp44, i64 %tmp37
  %tmp46 = load i32, i32* %tmp45, align 4, !tbaa !34
  %tmp47 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp43, i32 %tmp46)
  %tmp48 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp47, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
  %tmp49 = add nsw i64 %tmp37, 1
  %tmp50 = load i32, i32* %tmp27, align 4, !tbaa !33
  %tmp51 = sext i32 %tmp50 to i64
  %tmp52 = icmp slt i64 %tmp49, %tmp51
  br i1 %tmp52, label %bb36, label %bb34

bb53:                                             ; preds = %bb34, %bb32
  %tmp54 = add nuw nsw i64 %tmp10, 1
  %tmp55 = load i32, i32* %tmp, align 8, !tbaa !28
  %tmp56 = sext i32 %tmp55 to i64
  %tmp57 = icmp slt i64 %tmp54, %tmp56
  br i1 %tmp57, label %bb9, label %bb8
}

; Function Attrs: inlinehint uwtable
define available_externally dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* dereferenceable(272) %arg, i8* %arg1) local_unnamed_addr #10 {
bb:
  %tmp = icmp eq i8* %arg1, null
  br i1 %tmp, label %bb2, label %bb11

bb2:                                              ; preds = %bb
  %tmp3 = bitcast %"class.std::basic_ostream"* %arg to i8**
  %tmp4 = load i8*, i8** %tmp3, align 8, !tbaa !8
  %tmp5 = getelementptr i8, i8* %tmp4, i64 -24
  %tmp6 = bitcast i8* %tmp5 to i64*
  %tmp7 = load i64, i64* %tmp6, align 8
  %tmp8 = bitcast %"class.std::basic_ostream"* %arg to i8*
  %tmp9 = getelementptr inbounds i8, i8* %tmp8, i64 %tmp7
  %tmp10 = bitcast i8* %tmp9 to %"class.std::basic_ios"*
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate(%"class.std::basic_ios"* %tmp10, i32 1)
  br label %bb14

bb11:                                             ; preds = %bb
  %tmp12 = tail call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* nonnull %arg1)
  %tmp13 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg, i8* nonnull %arg1, i64 %tmp12)
  br label %bb14

bb14:                                             ; preds = %bb11, %bb2
  ret %"class.std::basic_ostream"* %arg
}

declare dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"*, i32) local_unnamed_addr #1

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEd(%"class.std::basic_ostream"* %arg, double %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertIdEERSoT_(%"class.std::basic_ostream"* %arg, double %arg1)
  ret %"class.std::basic_ostream"* %tmp
}

; Function Attrs: uwtable
define dso_local zeroext i1 @_ZNK5adept5Stack15print_gradientsERSo(%"class.adept::Stack"* %arg, %"class.std::basic_ostream"* dereferenceable(272) %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg)
  br i1 %tmp, label %bb2, label %bb32

bb2:                                              ; preds = %bb
  %tmp3 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp4 = load i32, i32* %tmp3, align 8, !tbaa !41
  %tmp5 = icmp sgt i32 %tmp4, 0
  br i1 %tmp5, label %bb6, label %bb8

bb6:                                              ; preds = %bb2
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  br label %bb10

bb8:                                              ; preds = %bb22, %bb2
  %tmp9 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  br label %bb34

bb10:                                             ; preds = %bb22, %bb6
  %tmp11 = phi i64 [ 0, %bb6 ], [ %tmp28, %bb22 ]
  %tmp12 = trunc i64 %tmp11 to i32
  %tmp13 = urem i32 %tmp12, 10
  %tmp14 = icmp eq i32 %tmp13, 0
  br i1 %tmp14, label %bb15, label %bb22

bb15:                                             ; preds = %bb10
  %tmp16 = icmp eq i64 %tmp11, 0
  br i1 %tmp16, label %bb19, label %bb17

bb17:                                             ; preds = %bb15
  %tmp18 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  br label %bb19

bb19:                                             ; preds = %bb17, %bb15
  %tmp20 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %arg1, i32 %tmp12)
  %tmp21 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp20, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.33, i64 0, i64 0))
  br label %bb22

bb22:                                             ; preds = %bb19, %bb10
  %tmp23 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp24 = load double*, double** %tmp7, align 8, !tbaa !19
  %tmp25 = getelementptr inbounds double, double* %tmp24, i64 %tmp11
  %tmp26 = load double, double* %tmp25, align 8, !tbaa !31
  %tmp27 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEd(%"class.std::basic_ostream"* nonnull %tmp23, double %tmp26)
  %tmp28 = add nuw nsw i64 %tmp11, 1
  %tmp29 = load i32, i32* %tmp3, align 8, !tbaa !41
  %tmp30 = sext i32 %tmp29 to i64
  %tmp31 = icmp slt i64 %tmp28, %tmp30
  br i1 %tmp31, label %bb10, label %bb8

bb32:                                             ; preds = %bb
  %tmp33 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.34, i64 0, i64 0))
  br label %bb34

bb34:                                             ; preds = %bb32, %bb8
  %tmp35 = phi i1 [ true, %bb8 ], [ false, %bb32 ]
  ret i1 %tmp35
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack10print_gapsERSo(%"class.adept::Stack"* %arg, %"class.std::basic_ostream"* dereferenceable(272) %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca %"struct.std::_List_const_iterator", align 8
  %tmp2 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp3 = bitcast %"struct.std::_List_const_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp3) #4
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp5 = tail call %"struct.std::__detail::_List_node_base"* @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  %tmp6 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp5, %"struct.std::__detail::_List_node_base"** %tmp6, align 8
  %tmp7 = bitcast %"struct.std::_List_const_iterator"* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp7) #4
  %tmp8 = call %"struct.std::__detail::_List_node_base"* @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  %tmp9 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp2, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp8, %"struct.std::__detail::_List_node_base"** %tmp9, align 8
  %tmp10 = call zeroext i1 @_ZNKSt20_List_const_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_const_iterator"* nonnull %tmp, %"struct.std::_List_const_iterator"* nonnull dereferenceable(8) %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp7) #4
  br i1 %tmp10, label %bb12, label %bb11

bb11:                                             ; preds = %bb12, %bb
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp3) #4
  ret void

bb12:                                             ; preds = %bb12, %bb
  %tmp13 = call %"struct.adept::Gap"* @_ZNKSt20_List_const_iteratorIN5adept3GapEEptEv(%"struct.std::_List_const_iterator"* nonnull %tmp) #4
  %tmp14 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp13, i64 0, i32 0
  %tmp15 = load i32, i32* %tmp14, align 4, !tbaa !39
  %tmp16 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %arg1, i32 %tmp15)
  %tmp17 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp16, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
  %tmp18 = call %"struct.adept::Gap"* @_ZNKSt20_List_const_iteratorIN5adept3GapEEptEv(%"struct.std::_List_const_iterator"* nonnull %tmp) #4
  %tmp19 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp18, i64 0, i32 1
  %tmp20 = load i32, i32* %tmp19, align 4, !tbaa !37
  %tmp21 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp17, i32 %tmp20)
  %tmp22 = call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp21, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp23 = call %"struct.std::__detail::_List_node_base"* @_ZNSt20_List_const_iteratorIN5adept3GapEEppEi(%"struct.std::_List_const_iterator"* nonnull %tmp, i32 0) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp7) #4
  %tmp24 = call %"struct.std::__detail::_List_node_base"* @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  store %"struct.std::__detail::_List_node_base"* %tmp24, %"struct.std::__detail::_List_node_base"** %tmp9, align 8
  %tmp25 = call zeroext i1 @_ZNKSt20_List_const_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_const_iterator"* nonnull %tmp, %"struct.std::_List_const_iterator"* nonnull dereferenceable(8) %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp7) #4
  br i1 %tmp25, label %bb12, label %bb11
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_const_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !42
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2EPKNSt8__detail15_List_node_baseE(%"struct.std::_List_const_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp2) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp4
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNKSt20_List_const_iteratorIN5adept3GapEEneERKS2_(%"struct.std::_List_const_iterator"* %arg, %"struct.std::_List_const_iterator"* dereferenceable(8) %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !45
  %tmp3 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %arg1, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8, !tbaa !45
  %tmp5 = icmp ne %"struct.std::__detail::_List_node_base"* %tmp2, %tmp4
  ret i1 %tmp5
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_const_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  call void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2EPKNSt8__detail15_List_node_baseE(%"struct.std::_List_const_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp1) #4
  %tmp2 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp, i64 0, i32 0
  %tmp3 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp2, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZNKSt20_List_const_iteratorIN5adept3GapEEptEv(%"struct.std::_List_const_iterator"* %arg) local_unnamed_addr #6 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"struct.std::_List_const_iterator"* %arg to %"struct.std::_List_node.73"**
  %tmp1 = load %"struct.std::_List_node.73"*, %"struct.std::_List_node.73"** %tmp, align 8, !tbaa !45
  %tmp2 = tail call %"struct.adept::Gap"* @_ZNKSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp1)
  ret %"struct.adept::Gap"* %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt20_List_const_iteratorIN5adept3GapEEppEi(%"struct.std::_List_const_iterator"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8
  %tmp3 = bitcast %"struct.std::__detail::_List_node_base"* %tmp2 to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !42
  %tmp5 = bitcast %"struct.std::_List_const_iterator"* %arg to i64*
  store i64 %tmp4, i64* %tmp5, align 8, !tbaa !45
  ret %"struct.std::__detail::_List_node_base"* %tmp2
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack20initialize_gradientsEv(%"class.adept::Stack"* nocapture %arg) local_unnamed_addr #0 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !41
  %tmp2 = icmp sgt i32 %tmp1, 0
  br i1 %tmp2, label %bb3, label %bb33

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 7
  %tmp5 = load i32, i32* %tmp4, align 4, !tbaa !48
  %tmp6 = icmp slt i32 %tmp5, %tmp1
  br i1 %tmp6, label %bb7, label %bb22

bb7:                                              ; preds = %bb3
  %tmp8 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp9 = load double*, double** %tmp8, align 8, !tbaa !19
  %tmp10 = icmp eq double* %tmp9, null
  br i1 %tmp10, label %bb13, label %bb11

bb11:                                             ; preds = %bb7
  %tmp12 = bitcast double* %tmp9 to i8*
  tail call void @_ZdaPv(i8* %tmp12) #27
  %.pre = load i32, i32* %tmp, align 8, !tbaa !41
  br label %bb13

bb13:                                             ; preds = %bb11, %bb7
  %tmp14 = phi i32 [ %.pre, %bb11 ], [ %tmp1, %bb7 ]
  %tmp15 = sext i32 %tmp14 to i64
  %tmp16 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp15, i64 8)
  %tmp17 = extractvalue { i64, i1 } %tmp16, 1
  %tmp18 = extractvalue { i64, i1 } %tmp16, 0
  %tmp19 = select i1 %tmp17, i64 -1, i64 %tmp18
  %tmp20 = tail call i8* @_Znam(i64 %tmp19) #28
  %tmp21 = bitcast double** %tmp8 to i8**
  store i8* %tmp20, i8** %tmp21, align 8, !tbaa !19
  store i32 %tmp14, i32* %tmp4, align 4, !tbaa !48
  br label %bb22

bb22:                                             ; preds = %bb13, %bb3
  %tmp23 = phi i32 [ %tmp14, %bb13 ], [ %tmp1, %bb3 ]
  %tmp24 = icmp sgt i32 %tmp23, 0
  br i1 %tmp24, label %bb25, label %bb33

bb25:                                             ; preds = %bb22
  %tmp26 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp27 = bitcast double** %tmp26 to i8**
  %tmp28 = load i8*, i8** %tmp27, align 8, !tbaa !19
  %tmp29 = icmp sgt i32 %tmp23, 1
  %tmp30 = select i1 %tmp29, i32 %tmp23, i32 1
  %tmp31 = zext i32 %tmp30 to i64
  %tmp32 = shl nuw nsw i64 %tmp31, 3
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp28, i8 0, i64 %tmp32, i1 false)
  br label %bb33

bb33:                                             ; preds = %bb25, %bb22, %bb
  %tmp34 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 10
  store i8 1, i8* %tmp34, align 8, !tbaa !35
  ret void
}

; Function Attrs: nounwind readnone speculatable
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #11

; Function Attrs: nobuiltin
declare dso_local noalias nonnull i8* @_Znam(i64) local_unnamed_addr #12

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack12print_statusERSo(%"class.adept::Stack"* %arg, %"class.std::basic_ostream"* dereferenceable(272) %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.36, i64 0, i64 0))
  %tmp2 = bitcast %"class.adept::Stack"* %arg to i8*
  %tmp3 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEPKv(%"class.std::basic_ostream"* nonnull %tmp, i8* %tmp2)
  %tmp4 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp3, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0))
  %tmp5 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 11
  %tmp6 = load i8, i8* %tmp5, align 1, !tbaa !10, !range !17
  %tmp7 = icmp eq i8 %tmp6, 0
  br i1 %tmp7, label %bb8, label %bb14

bb8:                                              ; preds = %bb
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp9, align 8, !tbaa !18
  %tmp11 = icmp eq %"class.adept::Stack"* %tmp10, %arg
  br i1 %tmp11, label %bb12, label %._crit_edge

._crit_edge:                                      ; preds = %bb8
  %.pre = load i8, i8* %tmp5, align 1, !tbaa !10, !range !17
  br label %bb14

bb12:                                             ; preds = %bb8
  %tmp13 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.38, i64 0, i64 0))
  br label %bb24

bb14:                                             ; preds = %._crit_edge, %bb
  %tmp15 = phi i8 [ %.pre, %._crit_edge ], [ %tmp6, %bb ]
  %tmp16 = icmp ne i8 %tmp15, 0
  %tmp17 = load %"class.adept::Stack"*, %"class.adept::Stack"** @_ZN5adept28_stack_current_thread_unsafeE, align 8
  %tmp18 = icmp eq %"class.adept::Stack"* %tmp17, %arg
  %tmp19 = and i1 %tmp16, %tmp18
  br i1 %tmp19, label %bb20, label %bb22

bb20:                                             ; preds = %bb14
  %tmp21 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.39, i64 0, i64 0))
  br label %bb24

bb22:                                             ; preds = %bb14
  %tmp23 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.40, i64 0, i64 0))
  br label %bb24

bb24:                                             ; preds = %bb22, %bb20, %bb12
  %tmp25 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.41, i64 0, i64 0))
  %tmp26 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 12
  %tmp27 = load i8, i8* %tmp26, align 2, !tbaa !49, !range !17
  %tmp28 = icmp eq i8 %tmp27, 0
  br i1 %tmp28, label %bb31, label %bb29

bb29:                                             ; preds = %bb24
  %tmp30 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.42, i64 0, i64 0))
  br label %bb33

bb31:                                             ; preds = %bb24
  %tmp32 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.43, i64 0, i64 0))
  br label %bb33

bb33:                                             ; preds = %bb31, %bb29
  %tmp34 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0))
  %tmp35 = tail call i32 @_ZNK5adept5Stack12n_statementsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp36 = add nsw i32 %tmp35, -1
  %tmp37 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp34, i32 %tmp36)
  %tmp38 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp37, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.45, i64 0, i64 0))
  %tmp39 = tail call i32 @_ZNK5adept5Stack22n_allocated_statementsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp40 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp38, i32 %tmp39)
  %tmp41 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp40, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0))
  %tmp42 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.47, i64 0, i64 0))
  %tmp43 = tail call i32 @_ZNK5adept5Stack12n_operationsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp44 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp42, i32 %tmp43)
  %tmp45 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp44, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.48, i64 0, i64 0))
  %tmp46 = tail call i32 @_ZNK5adept5Stack22n_allocated_operationsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp47 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp45, i32 %tmp46)
  %tmp48 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp47, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.49, i64 0, i64 0))
  %tmp49 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0))
  %tmp50 = tail call i32 @_ZNK5adept5Stack22n_gradients_registeredEv(%"class.adept::Stack"* nonnull %arg)
  %tmp51 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp49, i32 %tmp50)
  %tmp52 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp51, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.50, i64 0, i64 0))
  %tmp53 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.51, i64 0, i64 0))
  %tmp54 = tail call i32 @_ZNK5adept5Stack13max_gradientsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp55 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp53, i32 %tmp54)
  %tmp56 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp55, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.52, i64 0, i64 0))
  %tmp57 = tail call i32 @_ZNK5adept5Stack10i_gradientEv(%"class.adept::Stack"* nonnull %arg)
  %tmp58 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp56, i32 %tmp57)
  %tmp59 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp58, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.53, i64 0, i64 0))
  %tmp60 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp61 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp60) #4
  br i1 %tmp61, label %bb62, label %bb64

bb62:                                             ; preds = %bb33
  %tmp63 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.54, i64 0, i64 0))
  br label %bb70

bb64:                                             ; preds = %bb33
  %tmp65 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.55, i64 0, i64 0))
  %tmp66 = tail call i64 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE4sizeEv(%"class.std::__cxx11::list"* nonnull %tmp60) #4
  %tmp67 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEm(%"class.std::basic_ostream"* nonnull %tmp65, i64 %tmp66)
  %tmp68 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp67, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.56, i64 0, i64 0))
  tail call void @_ZNK5adept5Stack10print_gapsERSo(%"class.adept::Stack"* nonnull %arg, %"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1)
  %tmp69 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.53, i64 0, i64 0))
  br label %bb70

bb70:                                             ; preds = %bb64, %bb62
  %tmp71 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.57, i64 0, i64 0))
  %tmp72 = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* nonnull %arg)
  br i1 %tmp72, label %bb73, label %bb81

bb73:                                             ; preds = %bb70
  %tmp74 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0))
  %tmp75 = tail call i32 @_ZNK5adept5Stack13max_gradientsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp76 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp74, i32 %tmp75)
  %tmp77 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp76, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.58, i64 0, i64 0))
  %tmp78 = tail call i32 @_ZNK5adept5Stack21n_allocated_gradientsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp79 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp77, i32 %tmp78)
  %tmp80 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp79, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.49, i64 0, i64 0))
  br label %bb86

bb81:                                             ; preds = %bb70
  %tmp82 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.59, i64 0, i64 0))
  %tmp83 = tail call i32 @_ZNK5adept5Stack21n_allocated_gradientsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp84 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp82, i32 %tmp83)
  %tmp85 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp84, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.49, i64 0, i64 0))
  br label %bb86

bb86:                                             ; preds = %bb81, %bb73
  %tmp87 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.60, i64 0, i64 0))
  %tmp88 = tail call i32 @_ZNK5adept5Stack12n_dependentsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp89 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp87, i32 %tmp88)
  %tmp90 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp89, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.61, i64 0, i64 0))
  %tmp91 = tail call i32 @_ZNK5adept5Stack14n_independentsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp92 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp90, i32 %tmp91)
  %tmp93 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp92, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  %tmp94 = tail call i32 @_ZNK5adept5Stack12n_dependentsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp95 = icmp slt i32 %tmp94, 11
  br i1 %tmp95, label %bb96, label %bb129

bb96:                                             ; preds = %bb86
  %tmp97 = tail call i32 @_ZNK5adept5Stack14n_independentsEv(%"class.adept::Stack"* nonnull %arg)
  %tmp98 = icmp slt i32 %tmp97, 11
  br i1 %tmp98, label %bb99, label %bb129

bb99:                                             ; preds = %bb96
  %tmp100 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.62, i64 0, i64 0))
  %tmp101 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp102 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp101) #4
  %tmp103 = icmp eq i64 %tmp102, 0
  br i1 %tmp103, label %bb104, label %bb109

bb104:                                            ; preds = %bb109, %bb99
  %tmp105 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.63, i64 0, i64 0))
  %tmp106 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp107 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp106) #4
  %tmp108 = icmp eq i64 %tmp107, 0
  br i1 %tmp108, label %bb118, label %bb120

bb109:                                            ; preds = %bb109, %bb99
  %tmp110 = phi i64 [ %tmp115, %bb109 ], [ 0, %bb99 ]
  %tmp111 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp112 = tail call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp101, i64 %tmp110) #4
  %tmp113 = load i32, i32* %tmp112, align 4, !tbaa !34
  %tmp114 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp111, i32 %tmp113)
  %tmp115 = add nuw i64 %tmp110, 1
  %tmp116 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp101) #4
  %tmp117 = icmp ult i64 %tmp115, %tmp116
  br i1 %tmp117, label %bb109, label %bb104

bb118:                                            ; preds = %bb120, %bb104
  %tmp119 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
  br label %bb129

bb120:                                            ; preds = %bb120, %bb104
  %tmp121 = phi i64 [ %tmp126, %bb120 ], [ 0, %bb104 ]
  %tmp122 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
  %tmp123 = tail call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp106, i64 %tmp121) #4
  %tmp124 = load i32, i32* %tmp123, align 4, !tbaa !34
  %tmp125 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp122, i32 %tmp124)
  %tmp126 = add nuw i64 %tmp121, 1
  %tmp127 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp106) #4
  %tmp128 = icmp ult i64 %tmp126, %tmp127
  br i1 %tmp128, label %bb120, label %bb118

bb129:                                            ; preds = %bb118, %bb96, %bb86
  %tmp130 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg1, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.64, i64 0, i64 0))
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEPKv(%"class.std::basic_ostream"* %arg, i8* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertIPKvEERSoT_(%"class.std::basic_ostream"* %arg, i8* %arg1)
  ret %"class.std::basic_ostream"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack12n_statementsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !28
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack22n_allocated_statementsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 4
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !50
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack12n_operationsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 5
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !51
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack22n_allocated_operationsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 6
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !52
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack22n_gradients_registeredEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 9
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !36
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack13max_gradientsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !41
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack10i_gradientEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !40
  ret i32 %tmp1
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEm(%"class.std::basic_ostream"* %arg, i64 %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"* %arg, i64 %arg1)
  ret %"class.std::basic_ostream"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i64 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE4sizeEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  %tmp1 = invoke i64 @_ZNKSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE13_M_node_countEv(%"class.std::__cxx11::_List_base"* %tmp)
          to label %bb2 unwind label %bb3

bb2:                                              ; preds = %bb
  ret i64 %tmp1

bb3:                                              ; preds = %bb
  %tmp4 = landingpad { i8*, i32 }
          catch i8* null
  %tmp5 = extractvalue { i8*, i32 } %tmp4, 0
  tail call void @__clang_call_terminate(i8* %tmp5) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack21n_allocated_gradientsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 7
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !48
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack12n_dependentsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp1 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp) #4
  %tmp2 = trunc i64 %tmp1 to i32
  ret i32 %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack14n_independentsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp1 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp) #4
  %tmp2 = trunc i64 %tmp1 to i32
  ret i32 %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp1 = bitcast i32** %tmp to i64*
  %tmp2 = load i64, i64* %tmp1, align 8, !tbaa !23
  %tmp3 = bitcast %"class.std::vector"* %arg to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !20
  %tmp5 = sub i64 %tmp2, %tmp4
  %tmp6 = ashr exact i64 %tmp5, 2
  ret i64 %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* %arg, i64 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp2 = load i32*, i32** %tmp, align 8, !tbaa !20
  %tmp3 = getelementptr inbounds i32, i32* %tmp2, i64 %arg1
  ret i32* %tmp3
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept8internal16StackStorageOrig20grow_operation_stackEi(%"class.adept::internal::StackStorageOrig"* nocapture %arg, i32 %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 6
  %tmp2 = load i32, i32* %tmp, align 4, !tbaa !52
  %tmp3 = shl nsw i32 %tmp2, 1
  %tmp4 = icmp sgt i32 %arg1, 0
  %tmp5 = add nsw i32 %tmp2, %arg1
  %tmp6 = icmp slt i32 %tmp3, %tmp5
  %tmp7 = and i1 %tmp4, %tmp6
  %tmp8 = select i1 %tmp7, i32 %arg1, i32 0
  %tmp9 = add nsw i32 %tmp8, %tmp3
  %tmp10 = sext i32 %tmp9 to i64
  %tmp11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp10, i64 8)
  %tmp12 = extractvalue { i64, i1 } %tmp11, 1
  %tmp13 = extractvalue { i64, i1 } %tmp11, 0
  %tmp14 = select i1 %tmp12, i64 -1, i64 %tmp13
  %tmp15 = tail call i8* @_Znam(i64 %tmp14) #28
  %tmp16 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp10, i64 4)
  %tmp17 = extractvalue { i64, i1 } %tmp16, 1
  %tmp18 = extractvalue { i64, i1 } %tmp16, 0
  %tmp19 = select i1 %tmp17, i64 -1, i64 %tmp18
  %tmp20 = tail call i8* @_Znam(i64 %tmp19) #28
  %tmp21 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 1
  %tmp22 = bitcast double** %tmp21 to i8**
  %tmp23 = load i8*, i8** %tmp22, align 8, !tbaa !26
  %tmp24 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 5
  %tmp25 = load i32, i32* %tmp24, align 8, !tbaa !51
  %tmp26 = sext i32 %tmp25 to i64
  %tmp27 = shl nsw i64 %tmp26, 3
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp15, i8* align 8 %tmp23, i64 %tmp27, i1 false)
  %tmp28 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 2
  %tmp29 = bitcast i32** %tmp28 to i8**
  %tmp30 = load i8*, i8** %tmp29, align 8, !tbaa !27
  %tmp31 = shl nsw i64 %tmp26, 2
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 4 %tmp20, i8* align 4 %tmp30, i64 %tmp31, i1 false)
  %tmp32 = bitcast i8* %tmp23 to double*
  %tmp33 = icmp eq double* %tmp32, null
  %tmp34 = bitcast i8* %tmp30 to i32*
  br i1 %tmp33, label %bb38, label %bb35

bb35:                                             ; preds = %bb
  tail call void @_ZdaPv(i8* %tmp23) #27
  %tmp36 = load i32*, i32** %tmp28, align 8, !tbaa !27
  %tmp37 = bitcast i32* %tmp36 to i8*
  br label %bb38

bb38:                                             ; preds = %bb35, %bb
  %tmp39 = phi i8* [ %tmp37, %bb35 ], [ %tmp30, %bb ]
  %tmp40 = phi i32* [ %tmp36, %bb35 ], [ %tmp34, %bb ]
  %tmp41 = icmp eq i32* %tmp40, null
  br i1 %tmp41, label %bb43, label %bb42

bb42:                                             ; preds = %bb38
  tail call void @_ZdaPv(i8* %tmp39) #27
  br label %bb43

bb43:                                             ; preds = %bb42, %bb38
  store i8* %tmp15, i8** %tmp22, align 8, !tbaa !26
  store i8* %tmp20, i8** %tmp29, align 8, !tbaa !27
  store i32 %tmp9, i32* %tmp, align 4, !tbaa !52
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept8internal16StackStorageOrig20grow_statement_stackEi(%"class.adept::internal::StackStorageOrig"* nocapture %arg, i32 %arg1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 4
  %tmp2 = load i32, i32* %tmp, align 4, !tbaa !50
  %tmp3 = shl nsw i32 %tmp2, 1
  %tmp4 = icmp sgt i32 %arg1, 0
  %tmp5 = add nsw i32 %tmp2, %arg1
  %tmp6 = icmp slt i32 %tmp3, %tmp5
  %tmp7 = and i1 %tmp4, %tmp6
  %tmp8 = select i1 %tmp7, i32 %arg1, i32 0
  %tmp9 = add nsw i32 %tmp8, %tmp3
  %tmp10 = sext i32 %tmp9 to i64
  %tmp11 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp10, i64 8)
  %tmp12 = extractvalue { i64, i1 } %tmp11, 1
  %tmp13 = extractvalue { i64, i1 } %tmp11, 0
  %tmp14 = select i1 %tmp12, i64 -1, i64 %tmp13
  %tmp15 = tail call i8* @_Znam(i64 %tmp14) #28
  %tmp16 = bitcast i8* %tmp15 to %"struct.adept::internal::Statement"*
  %tmp17 = icmp eq i32 %tmp9, 0
  br i1 %tmp17, label %bb24, label %bb18

bb18:                                             ; preds = %bb
  %tmp19 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp16, i64 %tmp10
  br label %bb20

bb20:                                             ; preds = %bb20, %bb18
  %tmp21 = phi %"struct.adept::internal::Statement"* [ %tmp16, %bb18 ], [ %tmp22, %bb20 ]
  tail call void @_ZN5adept8internal9StatementC2Ev(%"struct.adept::internal::Statement"* %tmp21)
  %tmp22 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp21, i64 1
  %tmp23 = icmp eq %"struct.adept::internal::Statement"* %tmp22, %tmp19
  br i1 %tmp23, label %bb24, label %bb20

bb24:                                             ; preds = %bb20, %bb
  %tmp25 = bitcast %"class.adept::internal::StackStorageOrig"* %arg to i8**
  %tmp26 = load i8*, i8** %tmp25, align 8, !tbaa !24
  %tmp27 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 3
  %tmp28 = load i32, i32* %tmp27, align 8, !tbaa !28
  %tmp29 = sext i32 %tmp28 to i64
  %tmp30 = shl nsw i64 %tmp29, 3
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 4 %tmp15, i8* align 4 %tmp26, i64 %tmp30, i1 false)
  %tmp31 = icmp eq i8* %tmp26, null
  br i1 %tmp31, label %bb33, label %bb32

bb32:                                             ; preds = %bb24
  tail call void @_ZdaPv(i8* nonnull %tmp26) #27
  br label %bb33

bb33:                                             ; preds = %bb32, %bb24
  store i8* %tmp15, i8** %tmp25, align 8, !tbaa !24
  store i32 %tmp9, i32* %tmp, align 4, !tbaa !50
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal9StatementC2Ev(%"struct.adept::internal::Statement"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gemmEbcciiidPKdiS2_idPdi(i1 zeroext %arg, i8 signext %arg1, i8 signext %arg2, i32 %arg3, i32 %arg4, i32 %arg5, double %arg6, double* nocapture readnone %arg7, i32 %arg8, double* nocapture readnone %arg9, i32 %arg10, double %arg11, double* nocapture readnone %arg12, i32 %arg13) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp14 = alloca %"class.std::allocator", align 1
  %tmp15 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp16 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp16) #4
  %tmp17 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp14, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.65, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp14)
          to label %bb18 unwind label %bb21

bb18:                                             ; preds = %bb
  %tmp19 = bitcast i8* %tmp15 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp19, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb20 unwind label %bb25

bb20:                                             ; preds = %bb18
  invoke void @__cxa_throw(i8* %tmp15, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb38 unwind label %bb25

bb21:                                             ; preds = %bb
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb30

bb25:                                             ; preds = %bb20, %bb18
  %tmp26 = phi i1 [ false, %bb20 ], [ true, %bb18 ]
  %tmp27 = landingpad { i8*, i32 }
          cleanup
  %tmp28 = extractvalue { i8*, i32 } %tmp27, 0
  %tmp29 = extractvalue { i8*, i32 } %tmp27, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb30

bb30:                                             ; preds = %bb25, %bb21
  %tmp31 = phi i8* [ %tmp28, %bb25 ], [ %tmp23, %bb21 ]
  %tmp32 = phi i32 [ %tmp29, %bb25 ], [ %tmp24, %bb21 ]
  %tmp33 = phi i1 [ %tmp26, %bb25 ], [ true, %bb21 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  br i1 %tmp33, label %bb34, label %bb35

bb34:                                             ; preds = %bb30
  call void @__cxa_free_exception(i8* %tmp15) #4
  br label %bb35

bb35:                                             ; preds = %bb34, %bb30
  %tmp36 = insertvalue { i8*, i32 } undef, i8* %tmp31, 0
  %tmp37 = insertvalue { i8*, i32 } %tmp36, i32 %tmp32, 1
  resume { i8*, i32 } %tmp37

bb38:                                             ; preds = %bb20
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::feature_not_available", %"class.adept::feature_not_available"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionC2Ev(%"class.adept::exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::feature_not_available", %"class.adept::feature_not_available"* %arg, i64 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept21feature_not_availableE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::feature_not_available", %"class.adept::feature_not_available"* %arg, i64 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %arg) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept9exceptionE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp, align 8, !tbaa !8
  %tmp1 = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 1
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp1) #4
  %tmp2 = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 0
  tail call void @_ZNSt9exceptionD2Ev(%"class.std::exception"* %tmp2) #4
  ret void
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gemmEbcciiifPKfiS2_ifPfi(i1 zeroext %arg, i8 signext %arg1, i8 signext %arg2, i32 %arg3, i32 %arg4, i32 %arg5, float %arg6, float* nocapture readnone %arg7, i32 %arg8, float* nocapture readnone %arg9, i32 %arg10, float %arg11, float* nocapture readnone %arg12, i32 %arg13) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp14 = alloca %"class.std::allocator", align 1
  %tmp15 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp16 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp16) #4
  %tmp17 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp14, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.65, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp14)
          to label %bb18 unwind label %bb21

bb18:                                             ; preds = %bb
  %tmp19 = bitcast i8* %tmp15 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp19, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb20 unwind label %bb25

bb20:                                             ; preds = %bb18
  invoke void @__cxa_throw(i8* %tmp15, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb38 unwind label %bb25

bb21:                                             ; preds = %bb
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb30

bb25:                                             ; preds = %bb20, %bb18
  %tmp26 = phi i1 [ false, %bb20 ], [ true, %bb18 ]
  %tmp27 = landingpad { i8*, i32 }
          cleanup
  %tmp28 = extractvalue { i8*, i32 } %tmp27, 0
  %tmp29 = extractvalue { i8*, i32 } %tmp27, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb30

bb30:                                             ; preds = %bb25, %bb21
  %tmp31 = phi i8* [ %tmp28, %bb25 ], [ %tmp23, %bb21 ]
  %tmp32 = phi i32 [ %tmp29, %bb25 ], [ %tmp24, %bb21 ]
  %tmp33 = phi i1 [ %tmp26, %bb25 ], [ true, %bb21 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  br i1 %tmp33, label %bb34, label %bb35

bb34:                                             ; preds = %bb30
  call void @__cxa_free_exception(i8* %tmp15) #4
  br label %bb35

bb35:                                             ; preds = %bb34, %bb30
  %tmp36 = insertvalue { i8*, i32 } undef, i8* %tmp31, 0
  %tmp37 = insertvalue { i8*, i32 } %tmp36, i32 %tmp32, 1
  resume { i8*, i32 } %tmp37

bb38:                                             ; preds = %bb20
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gemvEbciidPKdiS2_idPdi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, i32 %arg3, double %arg4, double* nocapture readnone %arg5, i32 %arg6, double* nocapture readnone %arg7, i32 %arg8, double %arg9, double* nocapture readnone %arg10, i32 %arg11) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp12 = alloca %"class.std::allocator", align 1
  %tmp13 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp14 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp14) #4
  %tmp15 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp12, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp15) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp12) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.66, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp12)
          to label %bb16 unwind label %bb19

bb16:                                             ; preds = %bb
  %tmp17 = bitcast i8* %tmp13 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp17, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb18 unwind label %bb23

bb18:                                             ; preds = %bb16
  invoke void @__cxa_throw(i8* %tmp13, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb36 unwind label %bb23

bb19:                                             ; preds = %bb
  %tmp20 = landingpad { i8*, i32 }
          cleanup
  %tmp21 = extractvalue { i8*, i32 } %tmp20, 0
  %tmp22 = extractvalue { i8*, i32 } %tmp20, 1
  br label %bb28

bb23:                                             ; preds = %bb18, %bb16
  %tmp24 = phi i1 [ false, %bb18 ], [ true, %bb16 ]
  %tmp25 = landingpad { i8*, i32 }
          cleanup
  %tmp26 = extractvalue { i8*, i32 } %tmp25, 0
  %tmp27 = extractvalue { i8*, i32 } %tmp25, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb28

bb28:                                             ; preds = %bb23, %bb19
  %tmp29 = phi i8* [ %tmp26, %bb23 ], [ %tmp21, %bb19 ]
  %tmp30 = phi i32 [ %tmp27, %bb23 ], [ %tmp22, %bb19 ]
  %tmp31 = phi i1 [ %tmp24, %bb23 ], [ true, %bb19 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp12) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp15) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp14) #4
  br i1 %tmp31, label %bb32, label %bb33

bb32:                                             ; preds = %bb28
  call void @__cxa_free_exception(i8* %tmp13) #4
  br label %bb33

bb33:                                             ; preds = %bb32, %bb28
  %tmp34 = insertvalue { i8*, i32 } undef, i8* %tmp29, 0
  %tmp35 = insertvalue { i8*, i32 } %tmp34, i32 %tmp30, 1
  resume { i8*, i32 } %tmp35

bb36:                                             ; preds = %bb18
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gemvEbciifPKfiS2_ifPfi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, i32 %arg3, float %arg4, float* nocapture readnone %arg5, i32 %arg6, float* nocapture readnone %arg7, i32 %arg8, float %arg9, float* nocapture readnone %arg10, i32 %arg11) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp12 = alloca %"class.std::allocator", align 1
  %tmp13 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp14 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp14) #4
  %tmp15 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp12, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp15) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp12) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.66, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp12)
          to label %bb16 unwind label %bb19

bb16:                                             ; preds = %bb
  %tmp17 = bitcast i8* %tmp13 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp17, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb18 unwind label %bb23

bb18:                                             ; preds = %bb16
  invoke void @__cxa_throw(i8* %tmp13, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb36 unwind label %bb23

bb19:                                             ; preds = %bb
  %tmp20 = landingpad { i8*, i32 }
          cleanup
  %tmp21 = extractvalue { i8*, i32 } %tmp20, 0
  %tmp22 = extractvalue { i8*, i32 } %tmp20, 1
  br label %bb28

bb23:                                             ; preds = %bb18, %bb16
  %tmp24 = phi i1 [ false, %bb18 ], [ true, %bb16 ]
  %tmp25 = landingpad { i8*, i32 }
          cleanup
  %tmp26 = extractvalue { i8*, i32 } %tmp25, 0
  %tmp27 = extractvalue { i8*, i32 } %tmp25, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb28

bb28:                                             ; preds = %bb23, %bb19
  %tmp29 = phi i8* [ %tmp26, %bb23 ], [ %tmp21, %bb19 ]
  %tmp30 = phi i32 [ %tmp27, %bb23 ], [ %tmp22, %bb19 ]
  %tmp31 = phi i1 [ %tmp24, %bb23 ], [ true, %bb19 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp12) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp15) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp14) #4
  br i1 %tmp31, label %bb32, label %bb33

bb32:                                             ; preds = %bb28
  call void @__cxa_free_exception(i8* %tmp13) #4
  br label %bb33

bb33:                                             ; preds = %bb32, %bb28
  %tmp34 = insertvalue { i8*, i32 } undef, i8* %tmp29, 0
  %tmp35 = insertvalue { i8*, i32 } %tmp34, i32 %tmp30, 1
  resume { i8*, i32 } %tmp35

bb36:                                             ; preds = %bb18
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_symmEbcciidPKdiS2_idPdi(i1 zeroext %arg, i8 signext %arg1, i8 signext %arg2, i32 %arg3, i32 %arg4, double %arg5, double* nocapture readnone %arg6, i32 %arg7, double* nocapture readnone %arg8, i32 %arg9, double %arg10, double* nocapture readnone %arg11, i32 %arg12) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp13 = alloca %"class.std::allocator", align 1
  %tmp14 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp15 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp15) #4
  %tmp16 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp13, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp13) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.67, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp13)
          to label %bb17 unwind label %bb20

bb17:                                             ; preds = %bb
  %tmp18 = bitcast i8* %tmp14 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp18, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb19 unwind label %bb24

bb19:                                             ; preds = %bb17
  invoke void @__cxa_throw(i8* %tmp14, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb37 unwind label %bb24

bb20:                                             ; preds = %bb
  %tmp21 = landingpad { i8*, i32 }
          cleanup
  %tmp22 = extractvalue { i8*, i32 } %tmp21, 0
  %tmp23 = extractvalue { i8*, i32 } %tmp21, 1
  br label %bb29

bb24:                                             ; preds = %bb19, %bb17
  %tmp25 = phi i1 [ false, %bb19 ], [ true, %bb17 ]
  %tmp26 = landingpad { i8*, i32 }
          cleanup
  %tmp27 = extractvalue { i8*, i32 } %tmp26, 0
  %tmp28 = extractvalue { i8*, i32 } %tmp26, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb29

bb29:                                             ; preds = %bb24, %bb20
  %tmp30 = phi i8* [ %tmp27, %bb24 ], [ %tmp22, %bb20 ]
  %tmp31 = phi i32 [ %tmp28, %bb24 ], [ %tmp23, %bb20 ]
  %tmp32 = phi i1 [ %tmp25, %bb24 ], [ true, %bb20 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp13) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp15) #4
  br i1 %tmp32, label %bb33, label %bb34

bb33:                                             ; preds = %bb29
  call void @__cxa_free_exception(i8* %tmp14) #4
  br label %bb34

bb34:                                             ; preds = %bb33, %bb29
  %tmp35 = insertvalue { i8*, i32 } undef, i8* %tmp30, 0
  %tmp36 = insertvalue { i8*, i32 } %tmp35, i32 %tmp31, 1
  resume { i8*, i32 } %tmp36

bb37:                                             ; preds = %bb19
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_symmEbcciifPKfiS2_ifPfi(i1 zeroext %arg, i8 signext %arg1, i8 signext %arg2, i32 %arg3, i32 %arg4, float %arg5, float* nocapture readnone %arg6, i32 %arg7, float* nocapture readnone %arg8, i32 %arg9, float %arg10, float* nocapture readnone %arg11, i32 %arg12) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp13 = alloca %"class.std::allocator", align 1
  %tmp14 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp15 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp15) #4
  %tmp16 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp13, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp13) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.67, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp13)
          to label %bb17 unwind label %bb20

bb17:                                             ; preds = %bb
  %tmp18 = bitcast i8* %tmp14 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp18, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb19 unwind label %bb24

bb19:                                             ; preds = %bb17
  invoke void @__cxa_throw(i8* %tmp14, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb37 unwind label %bb24

bb20:                                             ; preds = %bb
  %tmp21 = landingpad { i8*, i32 }
          cleanup
  %tmp22 = extractvalue { i8*, i32 } %tmp21, 0
  %tmp23 = extractvalue { i8*, i32 } %tmp21, 1
  br label %bb29

bb24:                                             ; preds = %bb19, %bb17
  %tmp25 = phi i1 [ false, %bb19 ], [ true, %bb17 ]
  %tmp26 = landingpad { i8*, i32 }
          cleanup
  %tmp27 = extractvalue { i8*, i32 } %tmp26, 0
  %tmp28 = extractvalue { i8*, i32 } %tmp26, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb29

bb29:                                             ; preds = %bb24, %bb20
  %tmp30 = phi i8* [ %tmp27, %bb24 ], [ %tmp22, %bb20 ]
  %tmp31 = phi i32 [ %tmp28, %bb24 ], [ %tmp23, %bb20 ]
  %tmp32 = phi i1 [ %tmp25, %bb24 ], [ true, %bb20 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp13) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp15) #4
  br i1 %tmp32, label %bb33, label %bb34

bb33:                                             ; preds = %bb29
  call void @__cxa_free_exception(i8* %tmp14) #4
  br label %bb34

bb34:                                             ; preds = %bb33, %bb29
  %tmp35 = insertvalue { i8*, i32 } undef, i8* %tmp30, 0
  %tmp36 = insertvalue { i8*, i32 } %tmp35, i32 %tmp31, 1
  resume { i8*, i32 } %tmp36

bb37:                                             ; preds = %bb19
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_symvEbcidPKdiS2_idPdi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, double %arg3, double* nocapture readnone %arg4, i32 %arg5, double* nocapture readnone %arg6, i32 %arg7, double %arg8, double* nocapture readnone %arg9, i32 %arg10) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp11 = alloca %"class.std::allocator", align 1
  %tmp12 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp13 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp13) #4
  %tmp14 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp11, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp14) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp11) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.68, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp11)
          to label %bb15 unwind label %bb18

bb15:                                             ; preds = %bb
  %tmp16 = bitcast i8* %tmp12 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp16, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb17 unwind label %bb22

bb17:                                             ; preds = %bb15
  invoke void @__cxa_throw(i8* %tmp12, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb35 unwind label %bb22

bb18:                                             ; preds = %bb
  %tmp19 = landingpad { i8*, i32 }
          cleanup
  %tmp20 = extractvalue { i8*, i32 } %tmp19, 0
  %tmp21 = extractvalue { i8*, i32 } %tmp19, 1
  br label %bb27

bb22:                                             ; preds = %bb17, %bb15
  %tmp23 = phi i1 [ false, %bb17 ], [ true, %bb15 ]
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb27

bb27:                                             ; preds = %bb22, %bb18
  %tmp28 = phi i8* [ %tmp25, %bb22 ], [ %tmp20, %bb18 ]
  %tmp29 = phi i32 [ %tmp26, %bb22 ], [ %tmp21, %bb18 ]
  %tmp30 = phi i1 [ %tmp23, %bb22 ], [ true, %bb18 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp13) #4
  br i1 %tmp30, label %bb31, label %bb32

bb31:                                             ; preds = %bb27
  call void @__cxa_free_exception(i8* %tmp12) #4
  br label %bb32

bb32:                                             ; preds = %bb31, %bb27
  %tmp33 = insertvalue { i8*, i32 } undef, i8* %tmp28, 0
  %tmp34 = insertvalue { i8*, i32 } %tmp33, i32 %tmp29, 1
  resume { i8*, i32 } %tmp34

bb35:                                             ; preds = %bb17
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_symvEbcifPKfiS2_ifPfi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, float %arg3, float* nocapture readnone %arg4, i32 %arg5, float* nocapture readnone %arg6, i32 %arg7, float %arg8, float* nocapture readnone %arg9, i32 %arg10) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp11 = alloca %"class.std::allocator", align 1
  %tmp12 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp13 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp13) #4
  %tmp14 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp11, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp14) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp11) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.68, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp11)
          to label %bb15 unwind label %bb18

bb15:                                             ; preds = %bb
  %tmp16 = bitcast i8* %tmp12 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp16, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb17 unwind label %bb22

bb17:                                             ; preds = %bb15
  invoke void @__cxa_throw(i8* %tmp12, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb35 unwind label %bb22

bb18:                                             ; preds = %bb
  %tmp19 = landingpad { i8*, i32 }
          cleanup
  %tmp20 = extractvalue { i8*, i32 } %tmp19, 0
  %tmp21 = extractvalue { i8*, i32 } %tmp19, 1
  br label %bb27

bb22:                                             ; preds = %bb17, %bb15
  %tmp23 = phi i1 [ false, %bb17 ], [ true, %bb15 ]
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb27

bb27:                                             ; preds = %bb22, %bb18
  %tmp28 = phi i8* [ %tmp25, %bb22 ], [ %tmp20, %bb18 ]
  %tmp29 = phi i32 [ %tmp26, %bb22 ], [ %tmp21, %bb18 ]
  %tmp30 = phi i1 [ %tmp23, %bb22 ], [ true, %bb18 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp13) #4
  br i1 %tmp30, label %bb31, label %bb32

bb31:                                             ; preds = %bb27
  call void @__cxa_free_exception(i8* %tmp12) #4
  br label %bb32

bb32:                                             ; preds = %bb31, %bb27
  %tmp33 = insertvalue { i8*, i32 } undef, i8* %tmp28, 0
  %tmp34 = insertvalue { i8*, i32 } %tmp33, i32 %tmp29, 1
  resume { i8*, i32 } %tmp34

bb35:                                             ; preds = %bb17
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gbmvEbciiiidPKdiS2_idPdi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, double %arg6, double* nocapture readnone %arg7, i32 %arg8, double* nocapture readnone %arg9, i32 %arg10, double %arg11, double* nocapture readnone %arg12, i32 %arg13) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp14 = alloca %"class.std::allocator", align 1
  %tmp15 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp16 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp16) #4
  %tmp17 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp14, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.69, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp14)
          to label %bb18 unwind label %bb21

bb18:                                             ; preds = %bb
  %tmp19 = bitcast i8* %tmp15 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp19, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb20 unwind label %bb25

bb20:                                             ; preds = %bb18
  invoke void @__cxa_throw(i8* %tmp15, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb38 unwind label %bb25

bb21:                                             ; preds = %bb
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb30

bb25:                                             ; preds = %bb20, %bb18
  %tmp26 = phi i1 [ false, %bb20 ], [ true, %bb18 ]
  %tmp27 = landingpad { i8*, i32 }
          cleanup
  %tmp28 = extractvalue { i8*, i32 } %tmp27, 0
  %tmp29 = extractvalue { i8*, i32 } %tmp27, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb30

bb30:                                             ; preds = %bb25, %bb21
  %tmp31 = phi i8* [ %tmp28, %bb25 ], [ %tmp23, %bb21 ]
  %tmp32 = phi i32 [ %tmp29, %bb25 ], [ %tmp24, %bb21 ]
  %tmp33 = phi i1 [ %tmp26, %bb25 ], [ true, %bb21 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  br i1 %tmp33, label %bb34, label %bb35

bb34:                                             ; preds = %bb30
  call void @__cxa_free_exception(i8* %tmp15) #4
  br label %bb35

bb35:                                             ; preds = %bb34, %bb30
  %tmp36 = insertvalue { i8*, i32 } undef, i8* %tmp31, 0
  %tmp37 = insertvalue { i8*, i32 } %tmp36, i32 %tmp32, 1
  resume { i8*, i32 } %tmp37

bb38:                                             ; preds = %bb20
  unreachable
}

; Function Attrs: noreturn uwtable
define dso_local void @_ZN5adept8internal12cppblas_gbmvEbciiiifPKfiS2_ifPfi(i1 zeroext %arg, i8 signext %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, float %arg6, float* nocapture readnone %arg7, i32 %arg8, float* nocapture readnone %arg9, i32 %arg10, float %arg11, float* nocapture readnone %arg12, i32 %arg13) local_unnamed_addr #13 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp14 = alloca %"class.std::allocator", align 1
  %tmp15 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp16 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp16) #4
  %tmp17 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp14, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.69, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp14)
          to label %bb18 unwind label %bb21

bb18:                                             ; preds = %bb
  %tmp19 = bitcast i8* %tmp15 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp19, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb20 unwind label %bb25

bb20:                                             ; preds = %bb18
  invoke void @__cxa_throw(i8* %tmp15, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb38 unwind label %bb25

bb21:                                             ; preds = %bb
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb30

bb25:                                             ; preds = %bb20, %bb18
  %tmp26 = phi i1 [ false, %bb20 ], [ true, %bb18 ]
  %tmp27 = landingpad { i8*, i32 }
          cleanup
  %tmp28 = extractvalue { i8*, i32 } %tmp27, 0
  %tmp29 = extractvalue { i8*, i32 } %tmp27, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb30

bb30:                                             ; preds = %bb25, %bb21
  %tmp31 = phi i8* [ %tmp28, %bb25 ], [ %tmp23, %bb21 ]
  %tmp32 = phi i32 [ %tmp29, %bb25 ], [ %tmp24, %bb21 ]
  %tmp33 = phi i1 [ %tmp26, %bb25 ], [ true, %bb21 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp17) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  br i1 %tmp33, label %bb34, label %bb35

bb34:                                             ; preds = %bb30
  call void @__cxa_free_exception(i8* %tmp15) #4
  br label %bb35

bb35:                                             ; preds = %bb34, %bb30
  %tmp36 = insertvalue { i8*, i32 } undef, i8* %tmp31, 0
  %tmp37 = insertvalue { i8*, i32 } %tmp36, i32 %tmp32, 1
  resume { i8*, i32 } %tmp37

bb38:                                             ; preds = %bb20
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIfEENS_5ArrayILi2ET_Lb0EEERKS3_(%"class.adept::Array"* noalias sret %arg, %"class.adept::Array"* dereferenceable(32) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIfLNS_8internal21SymmMatrixOrientationE0EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_(%"class.adept::SpecialMatrix"* noalias sret %arg, %"class.adept::SpecialMatrix"* dereferenceable(24) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIfLNS_8internal21SymmMatrixOrientationE1EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_(%"class.adept::SpecialMatrix.9"* noalias sret %arg, %"class.adept::SpecialMatrix.9"* dereferenceable(24) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIdEENS_5ArrayILi2ET_Lb0EEERKS3_(%"class.adept::Array.12"* noalias sret %arg, %"class.adept::Array.12"* dereferenceable(32) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIdLNS_8internal21SymmMatrixOrientationE0EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_(%"class.adept::SpecialMatrix.15"* noalias sret %arg, %"class.adept::SpecialMatrix.15"* dereferenceable(24) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept3invIdLNS_8internal21SymmMatrixOrientationE1EEENS_13SpecialMatrixIT_NS1_10SymmEngineIXT0_EEELb0EEERKS7_(%"class.adept::SpecialMatrix.17"* noalias sret %arg, %"class.adept::SpecialMatrix.17"* dereferenceable(24) %arg1) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp4 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.70, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb6 unwind label %bb9

bb6:                                              ; preds = %bb
  %tmp7 = bitcast i8* %tmp3 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb8 unwind label %bb13

bb8:                                              ; preds = %bb6
  invoke void @__cxa_throw(i8* %tmp3, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb26 unwind label %bb13

bb9:                                              ; preds = %bb
  %tmp10 = landingpad { i8*, i32 }
          cleanup
  %tmp11 = extractvalue { i8*, i32 } %tmp10, 0
  %tmp12 = extractvalue { i8*, i32 } %tmp10, 1
  br label %bb18

bb13:                                             ; preds = %bb8, %bb6
  %tmp14 = phi i1 [ false, %bb8 ], [ true, %bb6 ]
  %tmp15 = landingpad { i8*, i32 }
          cleanup
  %tmp16 = extractvalue { i8*, i32 } %tmp15, 0
  %tmp17 = extractvalue { i8*, i32 } %tmp15, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb18

bb18:                                             ; preds = %bb13, %bb9
  %tmp19 = phi i8* [ %tmp16, %bb13 ], [ %tmp11, %bb9 ]
  %tmp20 = phi i32 [ %tmp17, %bb13 ], [ %tmp12, %bb9 ]
  %tmp21 = phi i1 [ %tmp14, %bb13 ], [ true, %bb9 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp4) #4
  br i1 %tmp21, label %bb22, label %bb23

bb22:                                             ; preds = %bb18
  call void @__cxa_free_exception(i8* %tmp3) #4
  br label %bb23

bb23:                                             ; preds = %bb22, %bb18
  %tmp24 = insertvalue { i8*, i32 } undef, i8* %tmp19, 0
  %tmp25 = insertvalue { i8*, i32 } %tmp24, i32 %tmp20, 1
  resume { i8*, i32 } %tmp25

bb26:                                             ; preds = %bb8
  unreachable
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack23jacobian_forward_kernelEPd(%"class.adept::Stack"* nocapture readonly %arg, double* noalias %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca %"struct.adept::internal::Packet", align 16
  %tmp2 = alloca %"struct.adept::internal::Packet", align 16
  %tmp3 = alloca %"struct.adept::internal::Packet", align 16
  %tmp4 = alloca %"struct.adept::internal::Packet", align 16
  %tmp5 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp6 = load i32, i32* %tmp5, align 8, !tbaa !28
  %tmp7 = icmp sgt i32 %tmp6, 1
  br i1 %tmp7, label %bb8, label %bb17

bb8:                                              ; preds = %bb
  %tmp9 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp10 = bitcast %"struct.adept::internal::Packet"* %tmp to i8*
  %tmp11 = bitcast %"struct.adept::internal::Packet"* %tmp2 to i8*
  %tmp12 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp13 = bitcast %"struct.adept::internal::Packet"* %tmp3 to i8*
  %tmp14 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp15 = bitcast %"struct.adept::internal::Packet"* %tmp4 to i8*
  %tmp16 = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %tmp4, i64 0, i32 0, i32 0
  br label %bb18

bb17:                                             ; preds = %bb30, %bb
  ret void

bb18:                                             ; preds = %bb30, %bb8
  %tmp19 = phi i64 [ 1, %bb8 ], [ %tmp36, %bb30 ]
  %tmp20 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp9, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp10) #4
  call void @_ZN5adept8internal6PacketIdEC2Ev(%"struct.adept::internal::Packet"* nonnull %tmp)
  %tmp21 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp9, align 8, !tbaa !24
  %tmp22 = add nsw i64 %tmp19, -1
  %tmp23 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp21, i64 %tmp22, i32 1
  %tmp24 = load i32, i32* %tmp23, align 4, !tbaa !33
  %tmp25 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp20, i64 %tmp19, i32 1
  %tmp26 = load i32, i32* %tmp25, align 4, !tbaa !33
  %tmp27 = icmp slt i32 %tmp24, %tmp26
  br i1 %tmp27, label %bb28, label %bb30

bb28:                                             ; preds = %bb18
  %tmp29 = sext i32 %tmp24 to i64
  br label %bb40

bb30:                                             ; preds = %bb40, %bb18
  %tmp31 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp20, i64 %tmp19, i32 0
  %tmp32 = load i32, i32* %tmp31, align 4, !tbaa !29
  %tmp33 = shl nsw i32 %tmp32, 1
  %tmp34 = sext i32 %tmp33 to i64
  %tmp35 = getelementptr inbounds double, double* %arg1, i64 %tmp34
  call void @_ZNK5adept8internal6PacketIdE3putEPd(%"struct.adept::internal::Packet"* nonnull %tmp, double* %tmp35)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp10) #4
  %tmp36 = add nuw nsw i64 %tmp19, 1
  %tmp37 = load i32, i32* %tmp5, align 8, !tbaa !28
  %tmp38 = sext i32 %tmp37 to i64
  %tmp39 = icmp slt i64 %tmp36, %tmp38
  br i1 %tmp39, label %bb18, label %bb17

bb40:                                             ; preds = %bb40, %bb28
  %tmp41 = phi i64 [ %tmp29, %bb28 ], [ %tmp52, %bb40 ]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp11) #4
  %tmp42 = load i32*, i32** %tmp12, align 8, !tbaa !27
  %tmp43 = getelementptr inbounds i32, i32* %tmp42, i64 %tmp41
  %tmp44 = load i32, i32* %tmp43, align 4, !tbaa !34
  %tmp45 = shl nsw i32 %tmp44, 1
  %tmp46 = sext i32 %tmp45 to i64
  %tmp47 = getelementptr inbounds double, double* %arg1, i64 %tmp46
  call void @_ZN5adept8internal6PacketIdEC2EPKd(%"struct.adept::internal::Packet"* nonnull %tmp2, double* %tmp47)
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp13) #4
  %tmp48 = load double*, double** %tmp14, align 8, !tbaa !26
  %tmp49 = getelementptr inbounds double, double* %tmp48, i64 %tmp41
  %tmp50 = load double, double* %tmp49, align 8, !tbaa !31
  call void @_ZN5adept8internal6PacketIdEC2Ed(%"struct.adept::internal::Packet"* nonnull %tmp3, double %tmp50)
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp15) #4
  %tmp51 = call fast <2 x double> @_ZN5adept8internalmlERKNS0_6PacketIdEES4_(%"struct.adept::internal::Packet"* nonnull dereferenceable(16) %tmp3, %"struct.adept::internal::Packet"* nonnull dereferenceable(16) %tmp2)
  store <2 x double> %tmp51, <2 x double>* %tmp16, align 16
  call void @_ZN5adept8internal6PacketIdEpLERKS2_(%"struct.adept::internal::Packet"* nonnull %tmp, %"struct.adept::internal::Packet"* nonnull dereferenceable(16) %tmp4)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp15) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp13) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp11) #4
  %tmp52 = add nsw i64 %tmp41, 1
  %tmp53 = load i32, i32* %tmp25, align 4, !tbaa !33
  %tmp54 = sext i32 %tmp53 to i64
  %tmp55 = icmp slt i64 %tmp52, %tmp54
  br i1 %tmp55, label %bb40, label %bb30
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIdEC2Ev(%"struct.adept::internal::Packet"* %arg) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  store <2 x double> zeroinitializer, <2 x double>* %tmp, align 16, !tbaa !53
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIdEC2EPKd(%"struct.adept::internal::Packet"* %arg, double* %arg1) unnamed_addr #15 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  %tmp2 = bitcast double* %arg1 to <2 x double>*
  %tmp3 = load <2 x double>, <2 x double>* %tmp2, align 16, !tbaa !53
  store <2 x double> %tmp3, <2 x double>* %tmp, align 16, !tbaa !53
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIdEC2Ed(%"struct.adept::internal::Packet"* %arg, double %arg1) unnamed_addr #15 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  %tmp2 = insertelement <2 x double> undef, double %arg1, i32 0
  %tmp3 = shufflevector <2 x double> %tmp2, <2 x double> undef, <2 x i32> zeroinitializer
  store <2 x double> %tmp3, <2 x double>* %tmp, align 16, !tbaa !53
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local <2 x double> @_ZN5adept8internalmlERKNS0_6PacketIdEES4_(%"struct.adept::internal::Packet"* noalias dereferenceable(16) %arg, %"struct.adept::internal::Packet"* noalias dereferenceable(16) %arg1) local_unnamed_addr #16 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::Packet", align 16
  %tmp2 = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  %tmp3 = load <2 x double>, <2 x double>* %tmp2, align 16, !tbaa !53
  %tmp4 = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg1, i64 0, i32 0, i32 0
  %tmp5 = load <2 x double>, <2 x double>* %tmp4, align 16, !tbaa !53
  %tmp6 = fmul fast <2 x double> %tmp5, %tmp3
  call void @_ZN5adept8internal6PacketIdEC2EDv2_d(%"struct.adept::internal::Packet"* nonnull %tmp, <2 x double> %tmp6)
  %tmp7 = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %tmp, i64 0, i32 0, i32 0
  %tmp8 = load <2 x double>, <2 x double>* %tmp7, align 16
  ret <2 x double> %tmp8
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIdEpLERKS2_(%"struct.adept::internal::Packet"* %arg, %"struct.adept::internal::Packet"* noalias dereferenceable(16) %arg1) local_unnamed_addr #15 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  %tmp2 = load <2 x double>, <2 x double>* %tmp, align 16, !tbaa !53
  %tmp3 = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg1, i64 0, i32 0, i32 0
  %tmp4 = load <2 x double>, <2 x double>* %tmp3, align 16, !tbaa !53
  %tmp5 = fadd fast <2 x double> %tmp4, %tmp2
  store <2 x double> %tmp5, <2 x double>* %tmp, align 16, !tbaa !53
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal6PacketIdE3putEPd(%"struct.adept::internal::Packet"* %arg, double* noalias %arg1) local_unnamed_addr #15 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  %tmp2 = load <2 x double>, <2 x double>* %tmp, align 16, !tbaa !53
  %tmp3 = bitcast double* %arg1 to <2 x double>*
  store <2 x double> %tmp2, <2 x double>* %tmp3, align 16, !tbaa !53
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack29jacobian_forward_kernel_extraEPdi(%"class.adept::Stack"* nocapture readonly %arg, double* noalias nocapture %arg1, i32 %arg2) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca %"struct.adept::Block", align 8
  %tmp3 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp4 = load i32, i32* %tmp3, align 8, !tbaa !28
  %tmp5 = icmp sgt i32 %tmp4, 1
  br i1 %tmp5, label %bb6, label %bb12

bb6:                                              ; preds = %bb
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp8 = bitcast %"struct.adept::Block"* %tmp to i8*
  %tmp9 = icmp sgt i32 %arg2, 0
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp11 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  br label %bb13

bb12:                                             ; preds = %bb55, %bb
  ret void

bb13:                                             ; preds = %bb55, %bb6
  %tmp14 = phi i64 [ 1, %bb6 ], [ %tmp56, %bb55 ]
  %tmp15 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp7, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp8) #4
  call void @_ZN5adept5BlockILi2EdEC2Ev(%"struct.adept::Block"* nonnull %tmp)
  %tmp16 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp7, align 8, !tbaa !24
  %tmp17 = add nsw i64 %tmp14, -1
  %tmp18 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp16, i64 %tmp17, i32 1
  %tmp19 = load i32, i32* %tmp18, align 4, !tbaa !33
  %tmp20 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp15, i64 %tmp14, i32 1
  %tmp21 = load i32, i32* %tmp20, align 4, !tbaa !33
  %tmp22 = icmp slt i32 %tmp19, %tmp21
  br i1 %tmp22, label %bb23, label %bb25

bb23:                                             ; preds = %bb13
  %tmp24 = sext i32 %tmp19 to i64
  br label %bb28

bb25:                                             ; preds = %bb31, %bb13
  br i1 %tmp9, label %bb26, label %bb55

bb26:                                             ; preds = %bb25
  %tmp27 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp15, i64 %tmp14, i32 0
  br label %bb60

bb28:                                             ; preds = %bb31, %bb23
  %tmp29 = phi i32 [ %tmp21, %bb23 ], [ %tmp32, %bb31 ]
  %tmp30 = phi i64 [ %tmp24, %bb23 ], [ %tmp33, %bb31 ]
  br i1 %tmp9, label %bb36, label %bb31

bb31:                                             ; preds = %._crit_edge, %bb28
  %tmp32 = phi i32 [ %.pre, %._crit_edge ], [ %tmp29, %bb28 ]
  %tmp33 = add nsw i64 %tmp30, 1
  %tmp34 = sext i32 %tmp32 to i64
  %tmp35 = icmp slt i64 %tmp33, %tmp34
  br i1 %tmp35, label %bb28, label %bb25

bb36:                                             ; preds = %bb36, %bb28
  %tmp37 = phi i32 [ %tmp53, %bb36 ], [ 0, %bb28 ]
  %tmp38 = load double*, double** %tmp10, align 8, !tbaa !26
  %tmp39 = getelementptr inbounds double, double* %tmp38, i64 %tmp30
  %tmp40 = load double, double* %tmp39, align 8, !tbaa !31
  %tmp41 = load i32*, i32** %tmp11, align 8, !tbaa !27
  %tmp42 = getelementptr inbounds i32, i32* %tmp41, i64 %tmp30
  %tmp43 = load i32, i32* %tmp42, align 4, !tbaa !34
  %tmp44 = shl i32 %tmp43, 1
  %tmp45 = add nsw i32 %tmp44, %tmp37
  %tmp46 = sext i32 %tmp45 to i64
  %tmp47 = getelementptr inbounds double, double* %arg1, i64 %tmp46
  %tmp48 = load double, double* %tmp47, align 8, !tbaa !31
  %tmp49 = fmul fast double %tmp48, %tmp40
  %tmp50 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp, i32 %tmp37)
  %tmp51 = load double, double* %tmp50, align 8, !tbaa !31
  %tmp52 = fadd fast double %tmp51, %tmp49
  store double %tmp52, double* %tmp50, align 8, !tbaa !31
  %tmp53 = add nuw nsw i32 %tmp37, 1
  %tmp54 = icmp eq i32 %tmp53, %arg2
  br i1 %tmp54, label %._crit_edge, label %bb36

._crit_edge:                                      ; preds = %bb36
  %.pre = load i32, i32* %tmp20, align 4, !tbaa !33
  br label %bb31

bb55:                                             ; preds = %bb60, %bb25
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp8) #4
  %tmp56 = add nuw nsw i64 %tmp14, 1
  %tmp57 = load i32, i32* %tmp3, align 8, !tbaa !28
  %tmp58 = sext i32 %tmp57 to i64
  %tmp59 = icmp slt i64 %tmp56, %tmp58
  br i1 %tmp59, label %bb13, label %bb12

bb60:                                             ; preds = %bb60, %bb26
  %tmp61 = phi i32 [ 0, %bb26 ], [ %tmp71, %bb60 ]
  %tmp62 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp, i32 %tmp61)
  %tmp63 = bitcast double* %tmp62 to i64*
  %tmp64 = load i64, i64* %tmp63, align 8, !tbaa !31
  %tmp65 = load i32, i32* %tmp27, align 4, !tbaa !29
  %tmp66 = shl i32 %tmp65, 1
  %tmp67 = add nsw i32 %tmp66, %tmp61
  %tmp68 = sext i32 %tmp67 to i64
  %tmp69 = getelementptr inbounds double, double* %arg1, i64 %tmp68
  %tmp70 = bitcast double* %tmp69 to i64*
  store i64 %tmp64, i64* %tmp70, align 8, !tbaa !31
  %tmp71 = add nuw nsw i32 %tmp61, 1
  %tmp72 = icmp eq i32 %tmp71, %arg2
  br i1 %tmp72, label %bb55, label %bb60
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5BlockILi2EdEC2Ev(%"struct.adept::Block"* %arg) unnamed_addr #14 comdat align 2 {
bb:
  tail call void @_ZN5adept5BlockILi2EdE4zeroEv(%"struct.adept::Block"* %arg)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"struct.adept::Block", %"struct.adept::Block"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack23jacobian_forward_openmpEPd(%"class.adept::Stack"* %arg, double* nocapture %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp2 = add nsw i32 %tmp, 1
  %tmp3 = sdiv i32 %tmp2, 2
  %tmp4 = tail call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp5 = srem i32 %tmp4, 2
  %tmp6 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp7 = load i32, i32* %tmp6, align 8, !tbaa !41
  %tmp8 = shl i32 %tmp7, 1
  %tmp9 = tail call double* @_ZN5adept8internal13alloc_alignedIdEEPT_i(i32 %tmp8)
  %tmp10 = bitcast double* %tmp9 to i8*
  %tmp11 = icmp sgt i32 %tmp, 0
  br i1 %tmp11, label %bb12, label %bb83

bb12:                                             ; preds = %bb
  %tmp13 = add nsw i32 %tmp3, -1
  %tmp14 = icmp sgt i32 %tmp5, 0
  %tmp15 = icmp sgt i32 %tmp7, 0
  %tmp16 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp17 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp18 = icmp sgt i32 %tmp8, 1
  %tmp19 = select i1 %tmp18, i32 %tmp8, i32 1
  %tmp20 = zext i32 %tmp19 to i64
  %tmp21 = shl nuw nsw i64 %tmp20, 3
  %tmp22 = sext i32 %tmp3 to i64
  %tmp23 = zext i32 %tmp13 to i64
  br label %bb24

bb24:                                             ; preds = %bb56, %bb12
  %tmp25 = phi i64 [ 0, %bb12 ], [ %tmp57, %bb56 ]
  %tmp26 = shl nuw nsw i64 %tmp25, 1
  %tmp27 = icmp eq i64 %tmp25, %tmp23
  %tmp28 = and i1 %tmp14, %tmp27
  %tmp29 = select i1 %tmp28, i32 %tmp5, i32 2
  br i1 %tmp15, label %bb30, label %bb31

bb30:                                             ; preds = %bb24
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp10, i8 0, i64 %tmp21, i1 false)
  br label %bb31

bb31:                                             ; preds = %bb30, %bb24
  %tmp32 = icmp sgt i32 %tmp29, 0
  br i1 %tmp32, label %bb33, label %bb35

bb33:                                             ; preds = %bb31
  %tmp34 = zext i32 %tmp29 to i64
  br label %bb40

bb35:                                             ; preds = %bb40, %bb31
  tail call void @_ZNK5adept5Stack23jacobian_forward_kernelEPd(%"class.adept::Stack"* %arg, double* %tmp9)
  %tmp36 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp37 = icmp sgt i32 %tmp36, 0
  br i1 %tmp37, label %bb38, label %bb56

bb38:                                             ; preds = %bb35
  %tmp39 = trunc i64 %tmp26 to i32
  br label %bb52

bb40:                                             ; preds = %bb40, %bb33
  %tmp41 = phi i64 [ 0, %bb33 ], [ %tmp50, %bb40 ]
  %tmp42 = add nuw nsw i64 %tmp41, %tmp26
  %tmp43 = tail call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp16, i64 %tmp42) #4
  %tmp44 = load i32, i32* %tmp43, align 4, !tbaa !34
  %tmp45 = shl i32 %tmp44, 1
  %tmp46 = trunc i64 %tmp41 to i32
  %tmp47 = add nsw i32 %tmp45, %tmp46
  %tmp48 = sext i32 %tmp47 to i64
  %tmp49 = getelementptr inbounds double, double* %tmp9, i64 %tmp48
  store double 1.000000e+00, double* %tmp49, align 8, !tbaa !31
  %tmp50 = add nuw nsw i64 %tmp41, 1
  %tmp51 = icmp eq i64 %tmp50, %tmp34
  br i1 %tmp51, label %bb35, label %bb40

bb52:                                             ; preds = %bb59, %bb38
  %tmp53 = phi i64 [ 0, %bb38 ], [ %tmp60, %bb59 ]
  br i1 %tmp32, label %bb54, label %bb59

bb54:                                             ; preds = %bb52
  %tmp55 = trunc i64 %tmp53 to i32
  br label %bb64

bb56:                                             ; preds = %bb59, %bb35
  %tmp57 = add nuw nsw i64 %tmp25, 1
  %tmp58 = icmp slt i64 %tmp57, %tmp22
  br i1 %tmp58, label %bb24, label %bb83

bb59:                                             ; preds = %bb64, %bb52
  %tmp60 = add nuw nsw i64 %tmp53, 1
  %tmp61 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp62 = sext i32 %tmp61 to i64
  %tmp63 = icmp slt i64 %tmp60, %tmp62
  br i1 %tmp63, label %bb52, label %bb56

bb64:                                             ; preds = %bb64, %bb54
  %tmp65 = phi i32 [ 0, %bb54 ], [ %tmp81, %bb64 ]
  %tmp66 = tail call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp17, i64 %tmp53) #4
  %tmp67 = load i32, i32* %tmp66, align 4, !tbaa !34
  %tmp68 = shl i32 %tmp67, 1
  %tmp69 = add nsw i32 %tmp68, %tmp65
  %tmp70 = sext i32 %tmp69 to i64
  %tmp71 = getelementptr inbounds double, double* %tmp9, i64 %tmp70
  %tmp72 = bitcast double* %tmp71 to i64*
  %tmp73 = load i64, i64* %tmp72, align 8, !tbaa !31
  %tmp74 = add nuw nsw i32 %tmp65, %tmp39
  %tmp75 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp76 = mul nsw i32 %tmp75, %tmp74
  %tmp77 = add nsw i32 %tmp76, %tmp55
  %tmp78 = sext i32 %tmp77 to i64
  %tmp79 = getelementptr inbounds double, double* %arg1, i64 %tmp78
  %tmp80 = bitcast double* %tmp79 to i64*
  store i64 %tmp73, i64* %tmp80, align 8, !tbaa !31
  %tmp81 = add nuw nsw i32 %tmp65, 1
  %tmp82 = icmp eq i32 %tmp81, %tmp29
  br i1 %tmp82, label %bb59, label %bb64

bb83:                                             ; preds = %bb56, %bb
  tail call void @_ZN5adept8internal12free_alignedIdEEvPT_(double* %tmp9)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp1 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp) #4
  %tmp2 = trunc i64 %tmp1 to i32
  ret i32 %tmp2
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local double* @_ZN5adept8internal13alloc_alignedIdEEPT_i(i32 %arg) local_unnamed_addr #10 comdat {
bb:
  %tmp = alloca double*, align 8
  %tmp1 = bitcast double** %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp1) #4
  %tmp2 = bitcast double** %tmp to i8**
  %tmp3 = sext i32 %arg to i64
  %tmp4 = shl nsw i64 %tmp3, 3
  %tmp5 = call i32 @posix_memalign(i8** nonnull %tmp2, i64 16, i64 %tmp4) #4
  %tmp6 = icmp eq i32 %tmp5, 0
  br i1 %tmp6, label %bb10, label %bb7

bb7:                                              ; preds = %bb
  %tmp8 = call i8* @__cxa_allocate_exception(i64 8) #4
  %tmp9 = bitcast i8* %tmp8 to %"class.std::bad_alloc"*
  call void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %tmp9) #4
  call void @__cxa_throw(i8* %tmp8, i8* bitcast (i8** @_ZTISt9bad_alloc to i8*), i8* bitcast (void (%"class.std::bad_alloc"*)* @_ZNSt9bad_allocD1Ev to i8*)) #26
  unreachable

bb10:                                             ; preds = %bb
  %tmp11 = load double*, double** %tmp, align 8, !tbaa !18
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp1) #4
  ret double* %tmp11
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp1 = tail call i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(%"class.std::vector"* nonnull %tmp) #4
  %tmp2 = trunc i64 %tmp1 to i32
  ret i32 %tmp2
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal12free_alignedIdEEvPT_(double* %arg) local_unnamed_addr #17 comdat {
bb:
  %tmp = bitcast double* %arg to i8*
  tail call void @free(i8* %tmp) #4
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack16jacobian_forwardEPd(%"class.adept::Stack"* %arg, double* nocapture %arg1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp4 = tail call zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(%"class.std::vector"* nonnull %tmp3) #4
  br i1 %tmp4, label %bb8, label %bb5

bb5:                                              ; preds = %bb
  %tmp6 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp7 = tail call zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(%"class.std::vector"* nonnull %tmp6) #4
  br i1 %tmp7, label %bb8, label %bb29

bb8:                                              ; preds = %bb5, %bb
  %tmp9 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp10 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp10) #4
  %tmp11 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp11) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.71, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb12 unwind label %bb15

bb12:                                             ; preds = %bb8
  %tmp13 = bitcast i8* %tmp9 to %"class.adept::dependents_or_independents_not_identified"*
  invoke void @_ZN5adept41dependents_or_independents_not_identifiedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::dependents_or_independents_not_identified"* %tmp13, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb14 unwind label %bb19

bb14:                                             ; preds = %bb12
  invoke void @__cxa_throw(i8* %tmp9, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept41dependents_or_independents_not_identifiedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb160 unwind label %bb19

bb15:                                             ; preds = %bb8
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  br label %bb24

bb19:                                             ; preds = %bb14, %bb12
  %tmp20 = phi i1 [ false, %bb14 ], [ true, %bb12 ]
  %tmp21 = landingpad { i8*, i32 }
          cleanup
  %tmp22 = extractvalue { i8*, i32 } %tmp21, 0
  %tmp23 = extractvalue { i8*, i32 } %tmp21, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb24

bb24:                                             ; preds = %bb19, %bb15
  %tmp25 = phi i1 [ %tmp20, %bb19 ], [ true, %bb15 ]
  %tmp26 = phi i32 [ %tmp23, %bb19 ], [ %tmp18, %bb15 ]
  %tmp27 = phi i8* [ %tmp22, %bb19 ], [ %tmp17, %bb15 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp10) #4
  br i1 %tmp25, label %bb28, label %bb157

bb28:                                             ; preds = %bb24
  call void @__cxa_free_exception(i8* %tmp9) #4
  br label %bb157

bb29:                                             ; preds = %bb5
  %tmp30 = tail call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp31 = sdiv i32 %tmp30, 2
  %tmp32 = tail call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp33 = srem i32 %tmp32, 2
  %tmp34 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp35 = load i32, i32* %tmp34, align 8, !tbaa !41
  %tmp36 = shl i32 %tmp35, 1
  %tmp37 = tail call double* @_ZN5adept8internal13alloc_alignedIdEEPT_i(i32 %tmp36)
  %tmp38 = bitcast double* %tmp37 to i8*
  %tmp39 = icmp sgt i32 %tmp30, 1
  br i1 %tmp39, label %bb40, label %bb47

bb40:                                             ; preds = %bb29
  %tmp41 = icmp sgt i32 %tmp35, 0
  %tmp42 = icmp sgt i32 %tmp36, 1
  %tmp43 = select i1 %tmp42, i32 %tmp36, i32 1
  %tmp44 = zext i32 %tmp43 to i64
  %tmp45 = shl nuw nsw i64 %tmp44, 3
  %tmp46 = zext i32 %tmp31 to i64
  br label %bb49

bb47:                                             ; preds = %bb74, %bb29
  %tmp48 = icmp sgt i32 %tmp33, 0
  br i1 %tmp48, label %bb101, label %bb156

bb49:                                             ; preds = %bb74, %bb40
  %tmp50 = phi i64 [ 0, %bb40 ], [ %tmp75, %bb74 ]
  %tmp51 = shl nuw nsw i64 %tmp50, 1
  br i1 %tmp41, label %bb53, label %bb52

bb52:                                             ; preds = %bb53, %bb49
  br label %bb59

bb53:                                             ; preds = %bb49
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp38, i8 0, i64 %tmp45, i1 false)
  br label %bb52

bb54:                                             ; preds = %bb59
  tail call void @_ZNK5adept5Stack23jacobian_forward_kernelEPd(%"class.adept::Stack"* %arg, double* nonnull %tmp37)
  %tmp55 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp56 = icmp sgt i32 %tmp55, 0
  br i1 %tmp56, label %bb57, label %bb74

bb57:                                             ; preds = %bb54
  %tmp58 = trunc i64 %tmp51 to i32
  br label %bb71

bb59:                                             ; preds = %bb59, %bb52
  %tmp60 = phi i64 [ %tmp69, %bb59 ], [ 0, %bb52 ]
  %tmp61 = add nuw nsw i64 %tmp60, %tmp51
  %tmp62 = tail call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp3, i64 %tmp61) #4
  %tmp63 = load i32, i32* %tmp62, align 4, !tbaa !34
  %tmp64 = shl i32 %tmp63, 1
  %tmp65 = trunc i64 %tmp60 to i32
  %tmp66 = add nsw i32 %tmp64, %tmp65
  %tmp67 = sext i32 %tmp66 to i64
  %tmp68 = getelementptr inbounds double, double* %tmp37, i64 %tmp67
  store double 1.000000e+00, double* %tmp68, align 8, !tbaa !31
  %tmp69 = add nuw nsw i64 %tmp60, 1
  %tmp70 = icmp eq i64 %tmp69, 2
  br i1 %tmp70, label %bb54, label %bb59

bb71:                                             ; preds = %bb77, %bb57
  %tmp72 = phi i64 [ 0, %bb57 ], [ %tmp78, %bb77 ]
  %tmp73 = trunc i64 %tmp72 to i32
  br label %bb82

bb74:                                             ; preds = %bb77, %bb54
  %tmp75 = add nuw nsw i64 %tmp50, 1
  %tmp76 = icmp eq i64 %tmp75, %tmp46
  br i1 %tmp76, label %bb47, label %bb49

bb77:                                             ; preds = %bb82
  %tmp78 = add nuw nsw i64 %tmp72, 1
  %tmp79 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp80 = sext i32 %tmp79 to i64
  %tmp81 = icmp slt i64 %tmp78, %tmp80
  br i1 %tmp81, label %bb71, label %bb74

bb82:                                             ; preds = %bb82, %bb71
  %tmp83 = phi i32 [ 0, %bb71 ], [ %tmp99, %bb82 ]
  %tmp84 = tail call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp6, i64 %tmp72) #4
  %tmp85 = load i32, i32* %tmp84, align 4, !tbaa !34
  %tmp86 = shl i32 %tmp85, 1
  %tmp87 = add nsw i32 %tmp86, %tmp83
  %tmp88 = sext i32 %tmp87 to i64
  %tmp89 = getelementptr inbounds double, double* %tmp37, i64 %tmp88
  %tmp90 = bitcast double* %tmp89 to i64*
  %tmp91 = load i64, i64* %tmp90, align 8, !tbaa !31
  %tmp92 = add nuw nsw i32 %tmp83, %tmp58
  %tmp93 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp94 = mul nsw i32 %tmp93, %tmp92
  %tmp95 = add nsw i32 %tmp94, %tmp73
  %tmp96 = sext i32 %tmp95 to i64
  %tmp97 = getelementptr inbounds double, double* %arg1, i64 %tmp96
  %tmp98 = bitcast double* %tmp97 to i64*
  store i64 %tmp91, i64* %tmp98, align 8, !tbaa !31
  %tmp99 = add nuw nsw i32 %tmp83, 1
  %tmp100 = icmp eq i32 %tmp99, 2
  br i1 %tmp100, label %bb77, label %bb82

bb101:                                            ; preds = %bb47
  %tmp102 = shl nsw i32 %tmp31, 1
  %tmp103 = icmp sgt i32 %tmp35, 0
  br i1 %tmp103, label %bb104, label %bb109

bb104:                                            ; preds = %bb101
  %tmp105 = icmp sgt i32 %tmp36, 1
  %tmp106 = select i1 %tmp105, i32 %tmp36, i32 1
  %tmp107 = zext i32 %tmp106 to i64
  %tmp108 = shl nuw nsw i64 %tmp107, 3
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp38, i8 0, i64 %tmp108, i1 false)
  br label %bb109

bb109:                                            ; preds = %bb104, %bb101
  %tmp110 = sext i32 %tmp102 to i64
  %tmp111 = zext i32 %tmp33 to i64
  br label %bb116

bb112:                                            ; preds = %bb116
  tail call void @_ZNK5adept5Stack29jacobian_forward_kernel_extraEPdi(%"class.adept::Stack"* %arg, double* nonnull %tmp37, i32 %tmp33)
  %tmp113 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp114 = icmp sgt i32 %tmp113, 0
  br i1 %tmp114, label %bb115, label %bb156

bb115:                                            ; preds = %bb112
  br label %bb128

bb116:                                            ; preds = %bb116, %bb109
  %tmp117 = phi i64 [ 0, %bb109 ], [ %tmp126, %bb116 ]
  %tmp118 = add nuw nsw i64 %tmp117, %tmp110
  %tmp119 = tail call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp3, i64 %tmp118) #4
  %tmp120 = load i32, i32* %tmp119, align 4, !tbaa !34
  %tmp121 = shl i32 %tmp120, 1
  %tmp122 = trunc i64 %tmp117 to i32
  %tmp123 = add nsw i32 %tmp121, %tmp122
  %tmp124 = sext i32 %tmp123 to i64
  %tmp125 = getelementptr inbounds double, double* %tmp37, i64 %tmp124
  store double 1.000000e+00, double* %tmp125, align 8, !tbaa !31
  %tmp126 = add nuw nsw i64 %tmp117, 1
  %tmp127 = icmp eq i64 %tmp126, %tmp111
  br i1 %tmp127, label %bb112, label %bb116

bb128:                                            ; preds = %bb132, %bb115
  %tmp129 = phi i64 [ 0, %bb115 ], [ %tmp133, %bb132 ]
  br i1 true, label %bb130, label %._crit_edge

._crit_edge:                                      ; preds = %bb128
  br label %bb132

bb130:                                            ; preds = %bb128
  %tmp131 = trunc i64 %tmp129 to i32
  br label %bb137

bb132:                                            ; preds = %._crit_edge, %bb137
  %tmp133 = add nuw nsw i64 %tmp129, 1
  %tmp134 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp135 = sext i32 %tmp134 to i64
  %tmp136 = icmp slt i64 %tmp133, %tmp135
  br i1 %tmp136, label %bb128, label %bb156

bb137:                                            ; preds = %bb137, %bb130
  %tmp138 = phi i32 [ 0, %bb130 ], [ %tmp154, %bb137 ]
  %tmp139 = tail call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp6, i64 %tmp129) #4
  %tmp140 = load i32, i32* %tmp139, align 4, !tbaa !34
  %tmp141 = shl i32 %tmp140, 1
  %tmp142 = add nsw i32 %tmp141, %tmp138
  %tmp143 = sext i32 %tmp142 to i64
  %tmp144 = getelementptr inbounds double, double* %tmp37, i64 %tmp143
  %tmp145 = bitcast double* %tmp144 to i64*
  %tmp146 = load i64, i64* %tmp145, align 8, !tbaa !31
  %tmp147 = add nuw nsw i32 %tmp138, %tmp102
  %tmp148 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp149 = mul nsw i32 %tmp148, %tmp147
  %tmp150 = add nsw i32 %tmp149, %tmp131
  %tmp151 = sext i32 %tmp150 to i64
  %tmp152 = getelementptr inbounds double, double* %arg1, i64 %tmp151
  %tmp153 = bitcast double* %tmp152 to i64*
  store i64 %tmp146, i64* %tmp153, align 8, !tbaa !31
  %tmp154 = add nuw nsw i32 %tmp138, 1
  %tmp155 = icmp eq i32 %tmp154, %tmp33
  br i1 %tmp155, label %bb132, label %bb137

bb156:                                            ; preds = %bb132, %bb112, %bb47
  tail call void @_ZN5adept8internal12free_alignedIdEEvPT_(double* %tmp37)
  ret void

bb157:                                            ; preds = %bb28, %bb24
  %tmp158 = insertvalue { i8*, i32 } undef, i8* %tmp27, 0
  %tmp159 = insertvalue { i8*, i32 } %tmp158, i32 %tmp26, 1
  resume { i8*, i32 } %tmp159

bb160:                                            ; preds = %bb14
  unreachable
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(%"class.std::vector"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %tmp1 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %tmp2 = bitcast %"class.__gnu_cxx::__normal_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp2) #4
  %tmp3 = tail call i32* @_ZNKSt6vectorIiSaIiEE5beginEv(%"class.std::vector"* %arg) #4
  %tmp4 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %tmp, i64 0, i32 0
  store i32* %tmp3, i32** %tmp4, align 8
  %tmp5 = bitcast %"class.__gnu_cxx::__normal_iterator"* %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = tail call i32* @_ZNKSt6vectorIiSaIiEE3endEv(%"class.std::vector"* %arg) #4
  %tmp7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %tmp1, i64 0, i32 0
  store i32* %tmp6, i32** %tmp7, align 8
  %tmp8 = call zeroext i1 @_ZN9__gnu_cxxeqIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(%"class.__gnu_cxx::__normal_iterator"* nonnull dereferenceable(8) %tmp, %"class.__gnu_cxx::__normal_iterator"* nonnull dereferenceable(8) %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp2) #4
  ret i1 %tmp8
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept41dependents_or_independents_not_identifiedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::dependents_or_independents_not_identified"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::dependents_or_independents_not_identified", %"class.adept::dependents_or_independents_not_identified"* %arg, i64 0, i32 0
  tail call void @_ZN5adept18autodiff_exceptionC2Ev(%"class.adept::autodiff_exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::dependents_or_independents_not_identified", %"class.adept::dependents_or_independents_not_identified"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept41dependents_or_independents_not_identifiedE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::dependents_or_independents_not_identified", %"class.adept::dependents_or_independents_not_identified"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  %tmp8 = getelementptr inbounds %"class.adept::dependents_or_independents_not_identified", %"class.adept::dependents_or_independents_not_identified"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp8) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* %arg, i64 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp2 = load i32*, i32** %tmp, align 8, !tbaa !20
  %tmp3 = getelementptr inbounds i32, i32* %tmp2, i64 %arg1
  ret i32* %tmp3
}

; Function Attrs: uwtable
define dso_local void @_ZNK5adept5Stack23jacobian_reverse_openmpEPd(%"class.adept::Stack"* %arg, double* nocapture %arg1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::vector.20", align 8
  %tmp2 = alloca %"class.std::allocator.22", align 1
  %tmp3 = alloca [2 x double], align 16
  %tmp4 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp5 = add nsw i32 %tmp4, 1
  %tmp6 = sdiv i32 %tmp5, 2
  %tmp7 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp8 = srem i32 %tmp7, 2
  %tmp9 = bitcast %"class.std::vector.20"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp11 = load i32, i32* %tmp10, align 8, !tbaa !41
  %tmp12 = sext i32 %tmp11 to i64
  %tmp13 = getelementptr inbounds %"class.std::allocator.22", %"class.std::allocator.22"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp13) #4
  call void @_ZNSaIN5adept5BlockILi2EdEEEC2Ev(%"class.std::allocator.22"* nonnull %tmp2) #4
  invoke void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_(%"class.std::vector.20"* nonnull %tmp, i64 %tmp12, %"class.std::allocator.22"* nonnull dereferenceable(1) %tmp2)
          to label %bb14 unwind label %bb37

bb14:                                             ; preds = %bb
  %tmp15 = bitcast %"class.std::allocator.22"* %tmp2 to %"class.__gnu_cxx::new_allocator.23"*
  call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp15) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp13) #4
  %tmp16 = icmp sgt i32 %tmp4, 0
  br i1 %tmp16, label %bb17, label %bb169

bb17:                                             ; preds = %bb14
  %tmp18 = add nsw i32 %tmp6, -1
  %tmp19 = icmp sgt i32 %tmp8, 0
  %tmp20 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp21 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp22 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp23 = bitcast [2 x double]* %tmp3 to i8*
  %tmp24 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp25 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp26 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp27 = sext i32 %tmp6 to i64
  %tmp28 = zext i32 %tmp18 to i64
  br label %bb29

bb29:                                             ; preds = %bb143, %bb17
  %tmp30 = phi i64 [ 0, %bb17 ], [ %tmp144, %bb143 ]
  %tmp31 = shl nuw nsw i64 %tmp30, 1
  %tmp32 = icmp eq i64 %tmp30, %tmp28
  %tmp33 = and i1 %tmp19, %tmp32
  %tmp34 = select i1 %tmp33, i32 %tmp8, i32 2
  %tmp35 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp) #4
  %tmp36 = icmp eq i64 %tmp35, 0
  br i1 %tmp36, label %bb40, label %bb44

bb37:                                             ; preds = %bb
  %tmp38 = landingpad { i8*, i32 }
          cleanup
  %tmp39 = bitcast %"class.std::allocator.22"* %tmp2 to %"class.__gnu_cxx::new_allocator.23"*
  call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp39) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp13) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp9) #4
  resume { i8*, i32 } %tmp38

bb40:                                             ; preds = %bb44, %bb29
  %tmp41 = icmp sgt i32 %tmp34, 0
  br i1 %tmp41, label %bb42, label %bb50

bb42:                                             ; preds = %bb40
  %tmp43 = zext i32 %tmp34 to i64
  br label %bb56

bb44:                                             ; preds = %bb44, %bb29
  %tmp45 = phi i64 [ %tmp47, %bb44 ], [ 0, %bb29 ]
  %tmp46 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp45) #4
  call void @_ZN5adept5BlockILi2EdE4zeroEv(%"struct.adept::Block"* nonnull %tmp46)
  %tmp47 = add nuw i64 %tmp45, 1
  %tmp48 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp) #4
  %tmp49 = icmp ult i64 %tmp47, %tmp48
  br i1 %tmp49, label %bb44, label %bb40

bb50:                                             ; preds = %bb56, %bb40
  %tmp51 = load i32, i32* %tmp20, align 8, !tbaa !28
  %tmp52 = icmp sgt i32 %tmp51, 1
  br i1 %tmp52, label %bb53, label %bb67

bb53:                                             ; preds = %bb50
  %tmp54 = sext i32 %tmp51 to i64
  %tmp55 = zext i32 %tmp34 to i64
  br label %bb72

bb56:                                             ; preds = %bb56, %bb42
  %tmp57 = phi i64 [ 0, %bb42 ], [ %tmp65, %bb56 ]
  %tmp58 = add nuw nsw i64 %tmp57, %tmp31
  %tmp59 = call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp21, i64 %tmp58) #4
  %tmp60 = load i32, i32* %tmp59, align 4, !tbaa !34
  %tmp61 = sext i32 %tmp60 to i64
  %tmp62 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp61) #4
  %tmp63 = trunc i64 %tmp57 to i32
  %tmp64 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp62, i32 %tmp63)
  store double 1.000000e+00, double* %tmp64, align 8, !tbaa !31
  %tmp65 = add nuw nsw i64 %tmp57, 1
  %tmp66 = icmp eq i64 %tmp65, %tmp43
  br i1 %tmp66, label %bb50, label %bb56

bb67:                                             ; preds = %bb137, %bb50
  %tmp68 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp69 = icmp sgt i32 %tmp68, 0
  br i1 %tmp69, label %bb70, label %bb143

bb70:                                             ; preds = %bb67
  %tmp71 = trunc i64 %tmp31 to i32
  br label %bb139

bb72:                                             ; preds = %bb137, %bb53
  %tmp73 = phi i64 [ %tmp54, %bb53 ], [ %tmp74, %bb137 ]
  %tmp74 = add nsw i64 %tmp73, -1
  %tmp75 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp22, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp23) #4
  br i1 %tmp41, label %bb76, label %bb137

bb76:                                             ; preds = %bb72
  %tmp77 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp75, i64 %tmp74, i32 0
  br label %bb80

bb78:                                             ; preds = %bb80
  %tmp79 = icmp eq i32 %tmp98, 0
  br i1 %tmp79, label %bb137, label %bb101

bb80:                                             ; preds = %bb80, %bb76
  %tmp81 = phi i64 [ 0, %bb76 ], [ %tmp99, %bb80 ]
  %tmp82 = phi i32 [ 0, %bb76 ], [ %tmp98, %bb80 ]
  %tmp83 = load i32, i32* %tmp77, align 4, !tbaa !29
  %tmp84 = sext i32 %tmp83 to i64
  %tmp85 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp84) #4
  %tmp86 = trunc i64 %tmp81 to i32
  %tmp87 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp85, i32 %tmp86)
  %tmp88 = bitcast double* %tmp87 to i64*
  %tmp89 = load i64, i64* %tmp88, align 8, !tbaa !31
  %tmp90 = getelementptr inbounds [2 x double], [2 x double]* %tmp3, i64 0, i64 %tmp81
  %tmp91 = bitcast double* %tmp90 to i64*
  store i64 %tmp89, i64* %tmp91, align 8, !tbaa !31
  %tmp92 = load i32, i32* %tmp77, align 4, !tbaa !29
  %tmp93 = sext i32 %tmp92 to i64
  %tmp94 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp93) #4
  %tmp95 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp94, i32 %tmp86)
  store double 0.000000e+00, double* %tmp95, align 8, !tbaa !31
  %tmp96 = bitcast i64 %tmp89 to double
  %tmp97 = fcmp fast une double %tmp96, 0.000000e+00
  %tmp98 = select i1 %tmp97, i32 1, i32 %tmp82
  %tmp99 = add nuw nsw i64 %tmp81, 1
  %tmp100 = icmp eq i64 %tmp99, %tmp55
  br i1 %tmp100, label %bb78, label %bb80

bb101:                                            ; preds = %bb78
  %tmp102 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp22, align 8, !tbaa !24
  %tmp103 = add nsw i64 %tmp73, -2
  %tmp104 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp102, i64 %tmp103, i32 1
  %tmp105 = load i32, i32* %tmp104, align 4, !tbaa !33
  %tmp106 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp75, i64 %tmp74, i32 1
  %tmp107 = load i32, i32* %tmp106, align 4, !tbaa !33
  %tmp108 = icmp slt i32 %tmp105, %tmp107
  br i1 %tmp108, label %bb109, label %bb137

bb109:                                            ; preds = %bb101
  %tmp110 = sext i32 %tmp105 to i64
  br label %bb111

bb111:                                            ; preds = %bb122, %bb109
  %tmp112 = phi i64 [ %tmp110, %bb109 ], [ %tmp123, %bb122 ]
  %tmp113 = load double*, double** %tmp24, align 8, !tbaa !26
  %tmp114 = getelementptr inbounds double, double* %tmp113, i64 %tmp112
  %tmp115 = load double, double* %tmp114, align 8, !tbaa !31
  %tmp116 = load i32*, i32** %tmp25, align 8, !tbaa !27
  %tmp117 = getelementptr inbounds i32, i32* %tmp116, i64 %tmp112
  %tmp118 = load i32, i32* %tmp117, align 4, !tbaa !34
  %tmp119 = sext i32 %tmp118 to i64
  %tmp120 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp119) #4
  %tmp121 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp120, i32 0)
  br i1 true, label %bb127, label %._crit_edge

._crit_edge:                                      ; preds = %bb111
  br label %bb122

bb122:                                            ; preds = %._crit_edge, %bb127
  %tmp123 = add nsw i64 %tmp112, 1
  %tmp124 = load i32, i32* %tmp106, align 4, !tbaa !33
  %tmp125 = sext i32 %tmp124 to i64
  %tmp126 = icmp slt i64 %tmp123, %tmp125
  br i1 %tmp126, label %bb111, label %bb137

bb127:                                            ; preds = %bb127, %bb111
  %tmp128 = phi i64 [ %tmp135, %bb127 ], [ 0, %bb111 ]
  %tmp129 = getelementptr inbounds [2 x double], [2 x double]* %tmp3, i64 0, i64 %tmp128
  %tmp130 = load double, double* %tmp129, align 8, !tbaa !31
  %tmp131 = fmul fast double %tmp130, %tmp115
  %tmp132 = getelementptr inbounds double, double* %tmp121, i64 %tmp128
  %tmp133 = load double, double* %tmp132, align 8, !tbaa !31
  %tmp134 = fadd fast double %tmp133, %tmp131
  store double %tmp134, double* %tmp132, align 8, !tbaa !31
  %tmp135 = add nuw nsw i64 %tmp128, 1
  %tmp136 = icmp eq i64 %tmp135, %tmp55
  br i1 %tmp136, label %bb122, label %bb127

bb137:                                            ; preds = %bb122, %bb101, %bb78, %bb72
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp23) #4
  %tmp138 = icmp sgt i64 %tmp73, 2
  br i1 %tmp138, label %bb72, label %bb67

bb139:                                            ; preds = %bb146, %bb70
  %tmp140 = phi i64 [ 0, %bb70 ], [ %tmp147, %bb146 ]
  br i1 %tmp41, label %bb141, label %bb146

bb141:                                            ; preds = %bb139
  %tmp142 = trunc i64 %tmp140 to i32
  br label %bb151

bb143:                                            ; preds = %bb146, %bb67
  %tmp144 = add nuw nsw i64 %tmp30, 1
  %tmp145 = icmp slt i64 %tmp144, %tmp27
  br i1 %tmp145, label %bb29, label %bb169

bb146:                                            ; preds = %bb151, %bb139
  %tmp147 = add nuw nsw i64 %tmp140, 1
  %tmp148 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp149 = sext i32 %tmp148 to i64
  %tmp150 = icmp slt i64 %tmp147, %tmp149
  br i1 %tmp150, label %bb139, label %bb143

bb151:                                            ; preds = %bb151, %bb141
  %tmp152 = phi i32 [ 0, %bb141 ], [ %tmp167, %bb151 ]
  %tmp153 = call dereferenceable(4) i32* @_ZNKSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp26, i64 %tmp140) #4
  %tmp154 = load i32, i32* %tmp153, align 4, !tbaa !34
  %tmp155 = sext i32 %tmp154 to i64
  %tmp156 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp, i64 %tmp155) #4
  %tmp157 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp156, i32 %tmp152)
  %tmp158 = bitcast double* %tmp157 to i64*
  %tmp159 = load i64, i64* %tmp158, align 8, !tbaa !31
  %tmp160 = call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp161 = mul nsw i32 %tmp160, %tmp142
  %tmp162 = add nuw nsw i32 %tmp152, %tmp71
  %tmp163 = add i32 %tmp162, %tmp161
  %tmp164 = sext i32 %tmp163 to i64
  %tmp165 = getelementptr inbounds double, double* %arg1, i64 %tmp164
  %tmp166 = bitcast double* %tmp165 to i64*
  store i64 %tmp159, i64* %tmp166, align 8, !tbaa !31
  %tmp167 = add nuw nsw i32 %tmp152, 1
  %tmp168 = icmp eq i32 %tmp167, %tmp34
  br i1 %tmp168, label %bb146, label %bb151

bb169:                                            ; preds = %bb143, %bb14
  call void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"class.std::vector.20"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp9) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSaIN5adept5BlockILi2EdEEEC2Ev(%"class.std::allocator.22"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.22"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2Ev(%"class.__gnu_cxx::new_allocator.23"* %tmp) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_(%"class.std::vector.20"* %arg, i64 %arg1, %"class.std::allocator.22"* dereferenceable(1) %arg2) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0
  tail call void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_(%"struct.std::_Vector_base.21"* %tmp, i64 %arg1, %"class.std::allocator.22"* nonnull dereferenceable(1) %arg2)
  invoke void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EE21_M_default_initializeEm(%"class.std::vector.20"* %arg, i64 %arg1)
          to label %bb3 unwind label %bb4

bb3:                                              ; preds = %bb
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  tail call void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"struct.std::_Vector_base.21"* %tmp) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp1 = bitcast %"struct.adept::Block"** %tmp to i64*
  %tmp2 = load i64, i64* %tmp1, align 8, !tbaa !54
  %tmp3 = bitcast %"class.std::vector.20"* %arg to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !57
  %tmp5 = sub i64 %tmp2, %tmp4
  %tmp6 = ashr exact i64 %tmp5, 4
  ret i64 %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* %arg, i64 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.adept::Block"*, %"struct.adept::Block"** %tmp, align 8, !tbaa !57
  %tmp3 = getelementptr inbounds %"struct.adept::Block", %"struct.adept::Block"* %tmp2, i64 %arg1
  ret %"struct.adept::Block"* %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5BlockILi2EdE4zeroEv(%"struct.adept::Block"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Block"* %arg to i8*
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp, i8 0, i64 16, i1 false)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"class.std::vector.20"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0
  %tmp1 = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.adept::Block"*, %"struct.adept::Block"** %tmp1, align 8, !tbaa !57
  %tmp3 = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = load %"struct.adept::Block"*, %"struct.adept::Block"** %tmp3, align 8, !tbaa !54
  %tmp5 = tail call dereferenceable(1) %"class.std::allocator.22"* @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.21"* %tmp) #4
  invoke void @_ZSt8_DestroyIPN5adept5BlockILi2EdEES2_EvT_S4_RSaIT0_E(%"struct.adept::Block"* %tmp2, %"struct.adept::Block"* %tmp4, %"class.std::allocator.22"* nonnull dereferenceable(1) %tmp5)
          to label %bb6 unwind label %bb7

bb6:                                              ; preds = %bb
  tail call void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"struct.std::_Vector_base.21"* %tmp) #4
  ret void

bb7:                                              ; preds = %bb
  %tmp8 = landingpad { i8*, i32 }
          catch i8* null
  %tmp9 = extractvalue { i8*, i32 } %tmp8, 0
  tail call void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"struct.std::_Vector_base.21"* %tmp) #4
  tail call void @__clang_call_terminate(i8* %tmp9) #25
  unreachable
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack16jacobian_reverseEPd(%"class.adept::Stack"* %arg, double* nocapture %arg4) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp5 = alloca %"class.std::allocator", align 1
  %tmp6 = alloca %"class.std::vector.20", align 8
  %tmp7 = alloca %"class.std::allocator.22", align 1
  %tmp8 = alloca [2 x double], align 16
  %tmp9 = alloca [2 x double], align 16
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  %tmp11 = tail call zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(%"class.std::vector"* nonnull %tmp10) #4
  br i1 %tmp11, label %bb15, label %bb12

bb12:                                             ; preds = %bb
  %tmp13 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  %tmp14 = tail call zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(%"class.std::vector"* nonnull %tmp13) #4
  br i1 %tmp14, label %bb15, label %bb36

bb15:                                             ; preds = %bb12, %bb
  %tmp16 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp17 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp17) #4
  %tmp18 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp5, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp18) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp5) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.71, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp5)
          to label %bb19 unwind label %bb22

bb19:                                             ; preds = %bb15
  %tmp20 = bitcast i8* %tmp16 to %"class.adept::dependents_or_independents_not_identified"*
  invoke void @_ZN5adept41dependents_or_independents_not_identifiedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::dependents_or_independents_not_identified"* %tmp20, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb21 unwind label %bb26

bb21:                                             ; preds = %bb19
  invoke void @__cxa_throw(i8* %tmp16, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept41dependents_or_independents_not_identifiedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb332 unwind label %bb26

bb22:                                             ; preds = %bb15
  %tmp23 = landingpad { i8*, i32 }
          cleanup
  %tmp24 = extractvalue { i8*, i32 } %tmp23, 0
  %tmp25 = extractvalue { i8*, i32 } %tmp23, 1
  br label %bb31

bb26:                                             ; preds = %bb21, %bb19
  %tmp27 = phi i1 [ false, %bb21 ], [ true, %bb19 ]
  %tmp28 = landingpad { i8*, i32 }
          cleanup
  %tmp29 = extractvalue { i8*, i32 } %tmp28, 0
  %tmp30 = extractvalue { i8*, i32 } %tmp28, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb31

bb31:                                             ; preds = %bb26, %bb22
  %tmp32 = phi i1 [ %tmp27, %bb26 ], [ true, %bb22 ]
  %tmp33 = phi i32 [ %tmp30, %bb26 ], [ %tmp25, %bb22 ]
  %tmp34 = phi i8* [ %tmp29, %bb26 ], [ %tmp24, %bb22 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp18) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp17) #4
  br i1 %tmp32, label %bb35, label %bb327

bb35:                                             ; preds = %bb31
  call void @__cxa_free_exception(i8* %tmp16) #4
  br label %bb327

bb36:                                             ; preds = %bb12
  %tmp37 = bitcast %"class.std::vector.20"* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp37) #4
  %tmp38 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp39 = load i32, i32* %tmp38, align 8, !tbaa !41
  %tmp40 = sext i32 %tmp39 to i64
  %tmp41 = getelementptr inbounds %"class.std::allocator.22", %"class.std::allocator.22"* %tmp7, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp41) #4
  call void @_ZNSaIN5adept5BlockILi2EdEEEC2Ev(%"class.std::allocator.22"* nonnull %tmp7) #4
  invoke void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp40, %"class.std::allocator.22"* nonnull dereferenceable(1) %tmp7)
          to label %bb42 unwind label %bb68

bb42:                                             ; preds = %bb36
  %tmp43 = bitcast %"class.std::allocator.22"* %tmp7 to %"class.__gnu_cxx::new_allocator.23"*
  call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp43) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp41) #4
  %tmp44 = call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* nonnull %arg)
  %tmp45 = sdiv i32 %tmp44, 2
  %tmp46 = call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* nonnull %arg)
  %tmp47 = srem i32 %tmp46, 2
  %tmp48 = icmp sgt i32 %tmp44, 1
  br i1 %tmp48, label %bb49, label %bb62

bb49:                                             ; preds = %bb42
  %tmp50 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp51 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp52 = bitcast [2 x double]* %tmp8 to i8*
  %tmp53 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp54 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp55 = shl nsw i32 %tmp45, 1
  br label %bb56

bb56:                                             ; preds = %bb169, %bb49
  %tmp57 = phi i64 [ 0, %bb49 ], [ %tmp170, %bb169 ]
  %tmp58 = phi i32 [ 0, %bb49 ], [ %tmp171, %bb169 ]
  %tmp59 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp6) #4
  %tmp60 = icmp eq i64 %tmp59, 0
  br i1 %tmp60, label %bb61, label %bb73

bb61:                                             ; preds = %bb73, %bb56
  br label %bb84

bb62:                                             ; preds = %bb169, %bb42
  %tmp63 = phi i32 [ 0, %bb42 ], [ %tmp55, %bb169 ]
  %tmp64 = icmp sgt i32 %tmp47, 0
  br i1 %tmp64, label %bb65, label %bb326

bb65:                                             ; preds = %bb62
  %tmp66 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp6) #4
  %tmp67 = icmp eq i64 %tmp66, 0
  br i1 %tmp67, label %bb197, label %bb200

bb68:                                             ; preds = %bb36
  %tmp69 = landingpad { i8*, i32 }
          cleanup
  %tmp70 = extractvalue { i8*, i32 } %tmp69, 0
  %tmp71 = extractvalue { i8*, i32 } %tmp69, 1
  %tmp72 = bitcast %"class.std::allocator.22"* %tmp7 to %"class.__gnu_cxx::new_allocator.23"*
  call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp72) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp41) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp37) #4
  br label %bb327

bb73:                                             ; preds = %bb73, %bb56
  %tmp74 = phi i64 [ %tmp76, %bb73 ], [ 0, %bb56 ]
  %tmp75 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp74) #4
  call void @_ZN5adept5BlockILi2EdE4zeroEv(%"struct.adept::Block"* nonnull %tmp75)
  %tmp76 = add nuw i64 %tmp74, 1
  %tmp77 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp6) #4
  %tmp78 = icmp ult i64 %tmp76, %tmp77
  br i1 %tmp78, label %bb73, label %bb61

bb79:                                             ; preds = %bb84
  %tmp80 = load i32, i32* %tmp50, align 8, !tbaa !28
  %tmp81 = icmp sgt i32 %tmp80, 1
  br i1 %tmp81, label %bb82, label %bb95

bb82:                                             ; preds = %bb79
  %tmp83 = sext i32 %tmp80 to i64
  br label %bb100

bb84:                                             ; preds = %bb84, %bb61
  %tmp85 = phi i64 [ %tmp93, %bb84 ], [ 0, %bb61 ]
  %tmp86 = add nuw nsw i64 %tmp85, %tmp57
  %tmp87 = call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp13, i64 %tmp86) #4
  %tmp88 = load i32, i32* %tmp87, align 4, !tbaa !34
  %tmp89 = sext i32 %tmp88 to i64
  %tmp90 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp89) #4
  %tmp91 = trunc i64 %tmp85 to i32
  %tmp92 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp90, i32 %tmp91)
  store double 1.000000e+00, double* %tmp92, align 8, !tbaa !31
  %tmp93 = add nuw nsw i64 %tmp85, 1
  %tmp94 = icmp eq i64 %tmp93, 2
  br i1 %tmp94, label %bb79, label %bb84

bb95:                                             ; preds = %bb164, %bb79
  %tmp96 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp97 = icmp sgt i32 %tmp96, 0
  br i1 %tmp97, label %bb98, label %bb169

bb98:                                             ; preds = %bb95
  %tmp99 = trunc i64 %tmp57 to i32
  br label %bb166

bb100:                                            ; preds = %bb164, %bb82
  %tmp101 = phi i64 [ %tmp83, %bb82 ], [ %tmp102, %bb164 ]
  %tmp102 = add nsw i64 %tmp101, -1
  %tmp103 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp51, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp52) #4
  %tmp104 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp103, i64 %tmp102, i32 0
  br label %bb107

bb105:                                            ; preds = %bb107
  %tmp106 = icmp eq i32 %tmp125, 0
  br i1 %tmp106, label %bb164, label %bb128

bb107:                                            ; preds = %bb107, %bb100
  %tmp108 = phi i64 [ 0, %bb100 ], [ %tmp126, %bb107 ]
  %tmp109 = phi i32 [ 0, %bb100 ], [ %tmp125, %bb107 ]
  %tmp110 = load i32, i32* %tmp104, align 4, !tbaa !29
  %tmp111 = sext i32 %tmp110 to i64
  %tmp112 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp111) #4
  %tmp113 = trunc i64 %tmp108 to i32
  %tmp114 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp112, i32 %tmp113)
  %tmp115 = bitcast double* %tmp114 to i64*
  %tmp116 = load i64, i64* %tmp115, align 8, !tbaa !31
  %tmp117 = getelementptr inbounds [2 x double], [2 x double]* %tmp8, i64 0, i64 %tmp108
  %tmp118 = bitcast double* %tmp117 to i64*
  store i64 %tmp116, i64* %tmp118, align 8, !tbaa !31
  %tmp119 = load i32, i32* %tmp104, align 4, !tbaa !29
  %tmp120 = sext i32 %tmp119 to i64
  %tmp121 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp120) #4
  %tmp122 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp121, i32 %tmp113)
  store double 0.000000e+00, double* %tmp122, align 8, !tbaa !31
  %tmp123 = bitcast i64 %tmp116 to double
  %tmp124 = fcmp fast une double %tmp123, 0.000000e+00
  %tmp125 = select i1 %tmp124, i32 1, i32 %tmp109
  %tmp126 = add nuw nsw i64 %tmp108, 1
  %tmp127 = icmp eq i64 %tmp126, 2
  br i1 %tmp127, label %bb105, label %bb107

bb128:                                            ; preds = %bb105
  %tmp129 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp51, align 8, !tbaa !24
  %tmp130 = add nsw i64 %tmp101, -2
  %tmp131 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp129, i64 %tmp130, i32 1
  %tmp132 = load i32, i32* %tmp131, align 4, !tbaa !33
  %tmp133 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp103, i64 %tmp102, i32 1
  %tmp134 = load i32, i32* %tmp133, align 4, !tbaa !33
  %tmp135 = icmp slt i32 %tmp132, %tmp134
  br i1 %tmp135, label %bb136, label %bb164

bb136:                                            ; preds = %bb128
  %tmp137 = sext i32 %tmp132 to i64
  br label %bb138

bb138:                                            ; preds = %bb149, %bb136
  %tmp139 = phi i64 [ %tmp137, %bb136 ], [ %tmp150, %bb149 ]
  %tmp140 = load double*, double** %tmp53, align 8, !tbaa !26
  %tmp141 = getelementptr inbounds double, double* %tmp140, i64 %tmp139
  %tmp142 = load double, double* %tmp141, align 8, !tbaa !31
  %tmp143 = load i32*, i32** %tmp54, align 8, !tbaa !27
  %tmp144 = getelementptr inbounds i32, i32* %tmp143, i64 %tmp139
  %tmp145 = load i32, i32* %tmp144, align 4, !tbaa !34
  %tmp146 = sext i32 %tmp145 to i64
  %tmp147 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp146) #4
  %tmp148 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp147, i32 0)
  br label %bb154

bb149:                                            ; preds = %bb154
  %tmp150 = add nsw i64 %tmp139, 1
  %tmp151 = load i32, i32* %tmp133, align 4, !tbaa !33
  %tmp152 = sext i32 %tmp151 to i64
  %tmp153 = icmp slt i64 %tmp150, %tmp152
  br i1 %tmp153, label %bb138, label %bb164

bb154:                                            ; preds = %bb154, %bb138
  %tmp155 = phi i64 [ 0, %bb138 ], [ %tmp162, %bb154 ]
  %tmp156 = getelementptr inbounds [2 x double], [2 x double]* %tmp8, i64 0, i64 %tmp155
  %tmp157 = load double, double* %tmp156, align 8, !tbaa !31
  %tmp158 = fmul fast double %tmp157, %tmp142
  %tmp159 = getelementptr inbounds double, double* %tmp148, i64 %tmp155
  %tmp160 = load double, double* %tmp159, align 8, !tbaa !31
  %tmp161 = fadd fast double %tmp160, %tmp158
  store double %tmp161, double* %tmp159, align 8, !tbaa !31
  %tmp162 = add nuw nsw i64 %tmp155, 1
  %tmp163 = icmp eq i64 %tmp162, 2
  br i1 %tmp163, label %bb149, label %bb154

bb164:                                            ; preds = %bb149, %bb128, %bb105
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp52) #4
  %tmp165 = icmp sgt i64 %tmp101, 2
  br i1 %tmp165, label %bb100, label %bb95

bb166:                                            ; preds = %bb173, %bb98
  %tmp167 = phi i64 [ 0, %bb98 ], [ %tmp174, %bb173 ]
  %tmp168 = trunc i64 %tmp167 to i32
  br label %bb178

bb169:                                            ; preds = %bb173, %bb95
  %tmp170 = add nuw nsw i64 %tmp57, 2
  %tmp171 = add nuw nsw i32 %tmp58, 1
  %tmp172 = icmp eq i32 %tmp171, %tmp45
  br i1 %tmp172, label %bb62, label %bb56

bb173:                                            ; preds = %bb178
  %tmp174 = add nuw nsw i64 %tmp167, 1
  %tmp175 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp176 = sext i32 %tmp175 to i64
  %tmp177 = icmp slt i64 %tmp174, %tmp176
  br i1 %tmp177, label %bb166, label %bb169

bb178:                                            ; preds = %bb178, %bb166
  %tmp179 = phi i32 [ 0, %bb166 ], [ %tmp194, %bb178 ]
  %tmp180 = call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp10, i64 %tmp167) #4
  %tmp181 = load i32, i32* %tmp180, align 4, !tbaa !34
  %tmp182 = sext i32 %tmp181 to i64
  %tmp183 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp182) #4
  %tmp184 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp183, i32 %tmp179)
  %tmp185 = bitcast double* %tmp184 to i64*
  %tmp186 = load i64, i64* %tmp185, align 8, !tbaa !31
  %tmp187 = call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp188 = mul nsw i32 %tmp187, %tmp168
  %tmp189 = add nuw nsw i32 %tmp179, %tmp99
  %tmp190 = add i32 %tmp189, %tmp188
  %tmp191 = sext i32 %tmp190 to i64
  %tmp192 = getelementptr inbounds double, double* %arg4, i64 %tmp191
  %tmp193 = bitcast double* %tmp192 to i64*
  store i64 %tmp186, i64* %tmp193, align 8, !tbaa !31
  %tmp194 = add nuw nsw i32 %tmp179, 1
  %tmp195 = icmp eq i32 %tmp194, 2
  br i1 %tmp195, label %bb173, label %bb178

bb196:                                            ; preds = %bb200
  br i1 true, label %bb197, label %._crit_edge

._crit_edge:                                      ; preds = %bb196
  br label %bb206

bb197:                                            ; preds = %bb196, %bb65
  %tmp198 = zext i32 %tmp63 to i64
  %tmp199 = zext i32 %tmp47 to i64
  br label %bb217

bb200:                                            ; preds = %bb200, %bb65
  %tmp201 = phi i64 [ %tmp203, %bb200 ], [ 0, %bb65 ]
  %tmp202 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp201) #4
  call void @_ZN5adept5BlockILi2EdE4zeroEv(%"struct.adept::Block"* nonnull %tmp202)
  %tmp203 = add nuw i64 %tmp201, 1
  %tmp204 = call i64 @_ZNKSt6vectorIN5adept5BlockILi2EdEESaIS2_EE4sizeEv(%"class.std::vector.20"* nonnull %tmp6) #4
  %tmp205 = icmp ult i64 %tmp203, %tmp204
  br i1 %tmp205, label %bb200, label %bb196

bb206:                                            ; preds = %._crit_edge, %bb217
  %tmp207 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 3
  %tmp208 = load i32, i32* %tmp207, align 8, !tbaa !28
  %tmp209 = icmp sgt i32 %tmp208, 1
  br i1 %tmp209, label %bb210, label %bb228

bb210:                                            ; preds = %bb206
  %tmp211 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 0
  %tmp212 = bitcast [2 x double]* %tmp9 to i8*
  %tmp213 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 1
  %tmp214 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0, i32 2
  %tmp215 = sext i32 %tmp208 to i64
  %tmp216 = zext i32 %tmp47 to i64
  br label %bb232

bb217:                                            ; preds = %bb217, %bb197
  %tmp218 = phi i64 [ 0, %bb197 ], [ %tmp226, %bb217 ]
  %tmp219 = add nuw nsw i64 %tmp218, %tmp198
  %tmp220 = call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp13, i64 %tmp219) #4
  %tmp221 = load i32, i32* %tmp220, align 4, !tbaa !34
  %tmp222 = sext i32 %tmp221 to i64
  %tmp223 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp222) #4
  %tmp224 = trunc i64 %tmp218 to i32
  %tmp225 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp223, i32 %tmp224)
  store double 1.000000e+00, double* %tmp225, align 8, !tbaa !31
  %tmp226 = add nuw nsw i64 %tmp218, 1
  %tmp227 = icmp eq i64 %tmp226, %tmp199
  br i1 %tmp227, label %bb206, label %bb217

bb228:                                            ; preds = %bb297, %bb206
  %tmp229 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp230 = icmp sgt i32 %tmp229, 0
  br i1 %tmp230, label %bb231, label %bb326

bb231:                                            ; preds = %bb228
  br label %bb299

bb232:                                            ; preds = %bb297, %bb210
  %tmp233 = phi i64 [ %tmp215, %bb210 ], [ %tmp234, %bb297 ]
  %tmp234 = add nsw i64 %tmp233, -1
  %tmp235 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp211, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp212) #4
  br i1 true, label %bb236, label %._crit_edge1

._crit_edge1:                                     ; preds = %bb232
  br label %bb297

bb236:                                            ; preds = %bb232
  %tmp237 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp235, i64 %tmp234, i32 0
  br label %bb240

bb238:                                            ; preds = %bb240
  %tmp239 = icmp eq i32 %tmp258, 0
  br i1 %tmp239, label %bb297, label %bb261

bb240:                                            ; preds = %bb240, %bb236
  %tmp241 = phi i64 [ 0, %bb236 ], [ %tmp259, %bb240 ]
  %tmp242 = phi i32 [ 0, %bb236 ], [ %tmp258, %bb240 ]
  %tmp243 = load i32, i32* %tmp237, align 4, !tbaa !29
  %tmp244 = sext i32 %tmp243 to i64
  %tmp245 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp244) #4
  %tmp246 = trunc i64 %tmp241 to i32
  %tmp247 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp245, i32 %tmp246)
  %tmp248 = bitcast double* %tmp247 to i64*
  %tmp249 = load i64, i64* %tmp248, align 8, !tbaa !31
  %tmp250 = getelementptr inbounds [2 x double], [2 x double]* %tmp9, i64 0, i64 %tmp241
  %tmp251 = bitcast double* %tmp250 to i64*
  store i64 %tmp249, i64* %tmp251, align 8, !tbaa !31
  %tmp252 = load i32, i32* %tmp237, align 4, !tbaa !29
  %tmp253 = sext i32 %tmp252 to i64
  %tmp254 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp253) #4
  %tmp255 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp254, i32 %tmp246)
  store double 0.000000e+00, double* %tmp255, align 8, !tbaa !31
  %tmp256 = bitcast i64 %tmp249 to double
  %tmp257 = fcmp fast une double %tmp256, 0.000000e+00
  %tmp258 = select i1 %tmp257, i32 1, i32 %tmp242
  %tmp259 = add nuw nsw i64 %tmp241, 1
  %tmp260 = icmp eq i64 %tmp259, %tmp216
  br i1 %tmp260, label %bb238, label %bb240

bb261:                                            ; preds = %bb238
  %tmp262 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp211, align 8, !tbaa !24
  %tmp263 = add nsw i64 %tmp233, -2
  %tmp264 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp262, i64 %tmp263, i32 1
  %tmp265 = load i32, i32* %tmp264, align 4, !tbaa !33
  %tmp266 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp235, i64 %tmp234, i32 1
  %tmp267 = load i32, i32* %tmp266, align 4, !tbaa !33
  %tmp268 = icmp slt i32 %tmp265, %tmp267
  br i1 %tmp268, label %bb269, label %bb297

bb269:                                            ; preds = %bb261
  %tmp270 = sext i32 %tmp265 to i64
  br label %bb271

bb271:                                            ; preds = %bb282, %bb269
  %tmp272 = phi i64 [ %tmp270, %bb269 ], [ %tmp283, %bb282 ]
  %tmp273 = load double*, double** %tmp213, align 8, !tbaa !26
  %tmp274 = getelementptr inbounds double, double* %tmp273, i64 %tmp272
  %tmp275 = load double, double* %tmp274, align 8, !tbaa !31
  %tmp276 = load i32*, i32** %tmp214, align 8, !tbaa !27
  %tmp277 = getelementptr inbounds i32, i32* %tmp276, i64 %tmp272
  %tmp278 = load i32, i32* %tmp277, align 4, !tbaa !34
  %tmp279 = sext i32 %tmp278 to i64
  %tmp280 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp279) #4
  %tmp281 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp280, i32 0)
  br i1 true, label %bb287, label %._crit_edge2

._crit_edge2:                                     ; preds = %bb271
  br label %bb282

bb282:                                            ; preds = %._crit_edge2, %bb287
  %tmp283 = add nsw i64 %tmp272, 1
  %tmp284 = load i32, i32* %tmp266, align 4, !tbaa !33
  %tmp285 = sext i32 %tmp284 to i64
  %tmp286 = icmp slt i64 %tmp283, %tmp285
  br i1 %tmp286, label %bb271, label %bb297

bb287:                                            ; preds = %bb287, %bb271
  %tmp288 = phi i64 [ %tmp295, %bb287 ], [ 0, %bb271 ]
  %tmp289 = getelementptr inbounds [2 x double], [2 x double]* %tmp9, i64 0, i64 %tmp288
  %tmp290 = load double, double* %tmp289, align 8, !tbaa !31
  %tmp291 = fmul fast double %tmp290, %tmp275
  %tmp292 = getelementptr inbounds double, double* %tmp281, i64 %tmp288
  %tmp293 = load double, double* %tmp292, align 8, !tbaa !31
  %tmp294 = fadd fast double %tmp293, %tmp291
  store double %tmp294, double* %tmp292, align 8, !tbaa !31
  %tmp295 = add nuw nsw i64 %tmp288, 1
  %tmp296 = icmp eq i64 %tmp295, %tmp216
  br i1 %tmp296, label %bb282, label %bb287

bb297:                                            ; preds = %._crit_edge1, %bb282, %bb261, %bb238
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp212) #4
  %tmp298 = icmp sgt i64 %tmp233, 2
  br i1 %tmp298, label %bb232, label %bb228

bb299:                                            ; preds = %bb303, %bb231
  %tmp300 = phi i64 [ 0, %bb231 ], [ %tmp304, %bb303 ]
  br i1 true, label %bb301, label %._crit_edge3

._crit_edge3:                                     ; preds = %bb299
  br label %bb303

bb301:                                            ; preds = %bb299
  %tmp302 = trunc i64 %tmp300 to i32
  br label %bb308

bb303:                                            ; preds = %._crit_edge3, %bb308
  %tmp304 = add nuw nsw i64 %tmp300, 1
  %tmp305 = call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp306 = sext i32 %tmp305 to i64
  %tmp307 = icmp slt i64 %tmp304, %tmp306
  br i1 %tmp307, label %bb299, label %bb326

bb308:                                            ; preds = %bb308, %bb301
  %tmp309 = phi i32 [ 0, %bb301 ], [ %tmp324, %bb308 ]
  %tmp310 = call dereferenceable(4) i32* @_ZNSt6vectorIiSaIiEEixEm(%"class.std::vector"* nonnull %tmp10, i64 %tmp300) #4
  %tmp311 = load i32, i32* %tmp310, align 4, !tbaa !34
  %tmp312 = sext i32 %tmp311 to i64
  %tmp313 = call dereferenceable(16) %"struct.adept::Block"* @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EEixEm(%"class.std::vector.20"* nonnull %tmp6, i64 %tmp312) #4
  %tmp314 = call dereferenceable(8) double* @_ZN5adept5BlockILi2EdEixEi(%"struct.adept::Block"* nonnull %tmp313, i32 %tmp309)
  %tmp315 = bitcast double* %tmp314 to i64*
  %tmp316 = load i64, i64* %tmp315, align 8, !tbaa !31
  %tmp317 = call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp318 = mul nsw i32 %tmp317, %tmp302
  %tmp319 = add nuw nsw i32 %tmp309, %tmp63
  %tmp320 = add i32 %tmp319, %tmp318
  %tmp321 = sext i32 %tmp320 to i64
  %tmp322 = getelementptr inbounds double, double* %arg4, i64 %tmp321
  %tmp323 = bitcast double* %tmp322 to i64*
  store i64 %tmp316, i64* %tmp323, align 8, !tbaa !31
  %tmp324 = add nuw nsw i32 %tmp309, 1
  %tmp325 = icmp eq i32 %tmp324, %tmp47
  br i1 %tmp325, label %bb303, label %bb308

bb326:                                            ; preds = %bb303, %bb228, %bb62
  call void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"class.std::vector.20"* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp37) #4
  ret void

bb327:                                            ; preds = %bb68, %bb35, %bb31
  %tmp328 = phi i32 [ %tmp33, %bb35 ], [ %tmp33, %bb31 ], [ %tmp71, %bb68 ]
  %tmp329 = phi i8* [ %tmp34, %bb35 ], [ %tmp34, %bb31 ], [ %tmp70, %bb68 ]
  %tmp330 = insertvalue { i8*, i32 } undef, i8* %tmp329, 0
  %tmp331 = insertvalue { i8*, i32 } %tmp330, i32 %tmp328, 1
  resume { i8*, i32 } %tmp331

bb332:                                            ; preds = %bb21
  unreachable
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept5Stack8jacobianEPd(%"class.adept::Stack"* %arg, double* nocapture %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i32 @_ZNK5adept5Stack13n_independentEv(%"class.adept::Stack"* %arg)
  %tmp2 = tail call i32 @_ZNK5adept5Stack11n_dependentEv(%"class.adept::Stack"* %arg)
  %tmp3 = icmp sgt i32 %tmp, %tmp2
  br i1 %tmp3, label %bb5, label %bb4

bb4:                                              ; preds = %bb
  tail call void @_ZN5adept5Stack16jacobian_forwardEPd(%"class.adept::Stack"* %arg, double* %arg1)
  br label %bb6

bb5:                                              ; preds = %bb
  tail call void @_ZN5adept5Stack16jacobian_reverseEPd(%"class.adept::Stack"* %arg, double* %arg1)
  br label %bb6

bb6:                                              ; preds = %bb5, %bb4
  ret void
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept7versionB5cxx11Ev(%"class.std::__cxx11::basic_string"* noalias sret %arg) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* %arg, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.72, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb3

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  ret void

bb3:                                              ; preds = %bb
  %tmp4 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp4
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept16compiler_versionB5cxx11Ev(%"class.std::__cxx11::basic_string"* noalias sret %arg) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* %arg, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.73, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb4

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  %tmp3 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.74, i64 0, i64 0))
          to label %bb12 unwind label %bb8

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  %tmp6 = extractvalue { i8*, i32 } %tmp5, 0
  %tmp7 = extractvalue { i8*, i32 } %tmp5, 1
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  br label %bb13

bb8:                                              ; preds = %bb2
  %tmp9 = landingpad { i8*, i32 }
          cleanup
  %tmp10 = extractvalue { i8*, i32 } %tmp9, 0
  %tmp11 = extractvalue { i8*, i32 } %tmp9, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* %arg) #4
  br label %bb13

bb12:                                             ; preds = %bb2
  ret void

bb13:                                             ; preds = %bb8, %bb4
  %tmp14 = phi i8* [ %tmp10, %bb8 ], [ %tmp6, %bb4 ]
  %tmp15 = phi i32 [ %tmp11, %bb8 ], [ %tmp7, %bb4 ]
  %tmp16 = insertvalue { i8*, i32 } undef, i8* %tmp14, 0
  %tmp17 = insertvalue { i8*, i32 } %tmp16, i32 %tmp15, 1
  resume { i8*, i32 } %tmp17
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1)
  ret %"class.std::__cxx11::basic_string"* %tmp
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept14compiler_flagsB5cxx11Ev(%"class.std::__cxx11::basic_string"* noalias sret %arg) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* %arg, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.73, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
          to label %bb2 unwind label %bb3

bb2:                                              ; preds = %bb
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  ret void

bb3:                                              ; preds = %bb
  %tmp4 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  resume { i8*, i32 } %tmp4
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept13configurationB5cxx11Ev(%"class.std::__cxx11::basic_string"* noalias sret %arg) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %tmp1 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = bitcast %"class.std::__cxx11::basic_stringstream"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 392, i8* nonnull %tmp4) #4
  %tmp5 = tail call i32 @_ZStorSt13_Ios_OpenmodeS_(i32 16, i32 8)
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp, i32 %tmp5)
  %tmp6 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %tmp, i64 0, i32 0, i32 1
  %tmp7 = bitcast %"class.std::basic_ostream.base"* %tmp6 to %"class.std::basic_ostream"*
  %tmp8 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp7, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.75, i64 0, i64 0))
          to label %bb9 unwind label %bb39

bb9:                                              ; preds = %bb
  %tmp10 = bitcast %"class.std::__cxx11::basic_string"* %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp10) #4
  invoke void @_ZN5adept7versionB5cxx11Ev(%"class.std::__cxx11::basic_string"* nonnull sret %tmp1)
          to label %bb11 unwind label %bb43

bb11:                                             ; preds = %bb9
  %tmp12 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp1)
          to label %bb13 unwind label %bb47

bb13:                                             ; preds = %bb11
  %tmp14 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp12, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.76, i64 0, i64 0))
          to label %bb15 unwind label %bb47

bb15:                                             ; preds = %bb13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp10) #4
  %tmp16 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp7, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.77, i64 0, i64 0))
          to label %bb17 unwind label %bb39

bb17:                                             ; preds = %bb15
  %tmp18 = bitcast %"class.std::__cxx11::basic_string"* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp18) #4
  invoke void @_ZN5adept16compiler_versionB5cxx11Ev(%"class.std::__cxx11::basic_string"* nonnull sret %tmp2)
          to label %bb19 unwind label %bb54

bb19:                                             ; preds = %bb17
  %tmp20 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp16, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp2)
          to label %bb21 unwind label %bb58

bb21:                                             ; preds = %bb19
  %tmp22 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp20, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
          to label %bb23 unwind label %bb58

bb23:                                             ; preds = %bb21
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  %tmp24 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp7, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.78, i64 0, i64 0))
          to label %bb25 unwind label %bb39

bb25:                                             ; preds = %bb23
  %tmp26 = bitcast %"class.std::__cxx11::basic_string"* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp26) #4
  invoke void @_ZN5adept14compiler_flagsB5cxx11Ev(%"class.std::__cxx11::basic_string"* nonnull sret %tmp3)
          to label %bb27 unwind label %bb65

bb27:                                             ; preds = %bb25
  %tmp28 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp24, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp3)
          to label %bb29 unwind label %bb69

bb29:                                             ; preds = %bb27
  %tmp30 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.79, i64 0, i64 0))
          to label %bb31 unwind label %bb69

bb31:                                             ; preds = %bb29
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp26) #4
  %tmp32 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp7, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.80, i64 0, i64 0))
          to label %bb33 unwind label %bb39

bb33:                                             ; preds = %bb31
  %tmp34 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp32, i32 4)
          to label %bb35 unwind label %bb39

bb35:                                             ; preds = %bb33
  %tmp36 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp34, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
          to label %bb37 unwind label %bb39

bb37:                                             ; preds = %bb35
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::__cxx11::basic_string"* sret %arg, %"class.std::__cxx11::basic_stringstream"* nonnull %tmp)
          to label %bb38 unwind label %bb39

bb38:                                             ; preds = %bb37
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 392, i8* nonnull %tmp4) #4
  ret void

bb39:                                             ; preds = %bb37, %bb35, %bb33, %bb31, %bb23, %bb15, %bb
  %tmp40 = landingpad { i8*, i32 }
          cleanup
  %tmp41 = extractvalue { i8*, i32 } %tmp40, 0
  %tmp42 = extractvalue { i8*, i32 } %tmp40, 1
  br label %bb76

bb43:                                             ; preds = %bb9
  %tmp44 = landingpad { i8*, i32 }
          cleanup
  %tmp45 = extractvalue { i8*, i32 } %tmp44, 0
  %tmp46 = extractvalue { i8*, i32 } %tmp44, 1
  br label %bb51

bb47:                                             ; preds = %bb13, %bb11
  %tmp48 = landingpad { i8*, i32 }
          cleanup
  %tmp49 = extractvalue { i8*, i32 } %tmp48, 0
  %tmp50 = extractvalue { i8*, i32 } %tmp48, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp1) #4
  br label %bb51

bb51:                                             ; preds = %bb47, %bb43
  %tmp52 = phi i8* [ %tmp49, %bb47 ], [ %tmp45, %bb43 ]
  %tmp53 = phi i32 [ %tmp50, %bb47 ], [ %tmp46, %bb43 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp10) #4
  br label %bb76

bb54:                                             ; preds = %bb17
  %tmp55 = landingpad { i8*, i32 }
          cleanup
  %tmp56 = extractvalue { i8*, i32 } %tmp55, 0
  %tmp57 = extractvalue { i8*, i32 } %tmp55, 1
  br label %bb62

bb58:                                             ; preds = %bb21, %bb19
  %tmp59 = landingpad { i8*, i32 }
          cleanup
  %tmp60 = extractvalue { i8*, i32 } %tmp59, 0
  %tmp61 = extractvalue { i8*, i32 } %tmp59, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp2) #4
  br label %bb62

bb62:                                             ; preds = %bb58, %bb54
  %tmp63 = phi i8* [ %tmp60, %bb58 ], [ %tmp56, %bb54 ]
  %tmp64 = phi i32 [ %tmp61, %bb58 ], [ %tmp57, %bb54 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  br label %bb76

bb65:                                             ; preds = %bb25
  %tmp66 = landingpad { i8*, i32 }
          cleanup
  %tmp67 = extractvalue { i8*, i32 } %tmp66, 0
  %tmp68 = extractvalue { i8*, i32 } %tmp66, 1
  br label %bb73

bb69:                                             ; preds = %bb29, %bb27
  %tmp70 = landingpad { i8*, i32 }
          cleanup
  %tmp71 = extractvalue { i8*, i32 } %tmp70, 0
  %tmp72 = extractvalue { i8*, i32 } %tmp70, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp3) #4
  br label %bb73

bb73:                                             ; preds = %bb69, %bb65
  %tmp74 = phi i8* [ %tmp71, %bb69 ], [ %tmp67, %bb65 ]
  %tmp75 = phi i32 [ %tmp72, %bb69 ], [ %tmp68, %bb65 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp26) #4
  br label %bb76

bb76:                                             ; preds = %bb73, %bb62, %bb51, %bb39
  %tmp77 = phi i8* [ %tmp41, %bb39 ], [ %tmp74, %bb73 ], [ %tmp63, %bb62 ], [ %tmp52, %bb51 ]
  %tmp78 = phi i32 [ %tmp42, %bb39 ], [ %tmp75, %bb73 ], [ %tmp64, %bb62 ], [ %tmp53, %bb51 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 392, i8* nonnull %tmp4) #4
  %tmp79 = insertvalue { i8*, i32 } undef, i8* %tmp77, 0
  %tmp80 = insertvalue { i8*, i32 } %tmp79, i32 %tmp78, 1
  resume { i8*, i32 } %tmp80
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZStorSt13_Ios_OpenmodeS_(i32 %arg, i32 %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = or i32 %arg1, %arg
  ret i32 %tmp
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::__cxx11::basic_stringstream"* %arg, i32 %arg1) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to i8*
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 2
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev(%"class.std::basic_ios"* nonnull %tmp2)
  %tmp3 = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to %"class.std::basic_iostream"*
  invoke void @_ZNSdC2Ev(%"class.std::basic_iostream"* %tmp3, i8** getelementptr inbounds ([10 x i8*], [10 x i8*]* @_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, i64 1))
          to label %bb4 unwind label %bb19

bb4:                                              ; preds = %bb
  %tmp5 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*], [5 x i8*], [5 x i8*] }, { [5 x i8*], [5 x i8*], [5 x i8*] }* @_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, inrange i32 0, i64 3) to i32 (...)**), i32 (...)*** %tmp5, align 8, !tbaa !8
  %tmp6 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %tmp2, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*], [5 x i8*], [5 x i8*] }, { [5 x i8*], [5 x i8*], [5 x i8*] }* @_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, inrange i32 2, i64 3) to i32 (...)**), i32 (...)*** %tmp6, align 8, !tbaa !8
  %tmp7 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 0, i32 1, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*], [5 x i8*], [5 x i8*] }, { [5 x i8*], [5 x i8*], [5 x i8*] }* @_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, inrange i32 1, i64 3) to i32 (...)**), i32 (...)*** %tmp7, align 8, !tbaa !8
  %tmp8 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 1
  invoke void @_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode(%"class.std::__cxx11::basic_stringbuf"* nonnull %tmp8, i32 %arg1)
          to label %bb9 unwind label %bb23

bb9:                                              ; preds = %bb4
  %tmp10 = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to i8**
  %tmp11 = load i8*, i8** %tmp10, align 8, !tbaa !8
  %tmp12 = getelementptr i8, i8* %tmp11, i64 -24
  %tmp13 = bitcast i8* %tmp12 to i64*
  %tmp14 = load i64, i64* %tmp13, align 8
  %tmp15 = getelementptr inbounds i8, i8* %tmp, i64 %tmp14
  %tmp16 = bitcast i8* %tmp15 to %"class.std::basic_ios"*
  %tmp17 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %tmp8, i64 0, i32 0
  invoke void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"* %tmp16, %"class.std::basic_streambuf"* nonnull %tmp17)
          to label %bb18 unwind label %bb27

bb18:                                             ; preds = %bb9
  ret void

bb19:                                             ; preds = %bb
  %tmp20 = landingpad { i8*, i32 }
          cleanup
  %tmp21 = extractvalue { i8*, i32 } %tmp20, 0
  %tmp22 = extractvalue { i8*, i32 } %tmp20, 1
  br label %bb34

bb23:                                             ; preds = %bb4
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  br label %bb31

bb27:                                             ; preds = %bb9
  %tmp28 = landingpad { i8*, i32 }
          cleanup
  %tmp29 = extractvalue { i8*, i32 } %tmp28, 0
  %tmp30 = extractvalue { i8*, i32 } %tmp28, 1
  tail call void @_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_stringbuf"* nonnull %tmp8) #4
  br label %bb31

bb31:                                             ; preds = %bb27, %bb23
  %tmp32 = phi i8* [ %tmp29, %bb27 ], [ %tmp25, %bb23 ]
  %tmp33 = phi i32 [ %tmp30, %bb27 ], [ %tmp26, %bb23 ]
  tail call void @_ZNSdD2Ev(%"class.std::basic_iostream"* nonnull %tmp3, i8** getelementptr inbounds ([10 x i8*], [10 x i8*]* @_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, i64 1)) #4
  br label %bb34

bb34:                                             ; preds = %bb31, %bb19
  %tmp35 = phi i8* [ %tmp32, %bb31 ], [ %tmp21, %bb19 ]
  %tmp36 = phi i32 [ %tmp33, %bb31 ], [ %tmp22, %bb19 ]
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* nonnull %tmp2) #4
  %tmp37 = insertvalue { i8*, i32 } undef, i8* %tmp35, 0
  %tmp38 = insertvalue { i8*, i32 } %tmp37, i32 %tmp36, 1
  resume { i8*, i32 } %tmp38
}

; Function Attrs: inlinehint uwtable
define available_externally dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(%"class.std::basic_ostream"* dereferenceable(272) %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) local_unnamed_addr #10 {
bb:
  %tmp = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  %tmp2 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  %tmp3 = tail call dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* nonnull dereferenceable(272) %arg, i8* %tmp, i64 %tmp2)
  ret %"class.std::basic_ostream"* %tmp3
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::__cxx11::basic_string"* noalias sret %arg, %"class.std::__cxx11::basic_stringstream"* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg1, i64 0, i32 1
  tail call void @_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv(%"class.std::__cxx11::basic_string"* sret %arg, %"class.std::__cxx11::basic_stringbuf"* nonnull %tmp)
  ret void
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::__cxx11::basic_stringstream"* %arg) unnamed_addr #3 align 2 {
bb:
  tail call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_stringstream"* %arg, i8** getelementptr inbounds ([10 x i8*], [10 x i8*]* @_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE, i64 0, i64 0)) #4
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 2
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* nonnull %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local i32 @_ZN5adept16max_blas_threadsEv() local_unnamed_addr #9 {
bb:
  ret i32 1
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local i32 @_ZN5adept20set_max_blas_threadsEi(i32 %arg) local_unnamed_addr #9 {
bb:
  ret i32 1
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local zeroext i1 @_ZN5adept26have_matrix_multiplicationEv() local_unnamed_addr #9 {
bb:
  ret i1 false
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local zeroext i1 @_ZN5adept19have_linear_algebraEv() local_unnamed_addr #9 {
bb:
  ret i1 false
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfEENS_5ArrayILi1ET_Lb0EEERKNS1_ILi2ES2_Lb0EEERKS3_(%"class.adept::Array.25"* noalias sret %arg, %"class.adept::Array"* dereferenceable(32) %arg1, %"class.adept::Array.25"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.25"* noalias sret %arg, %"class.adept::SpecialMatrix"* dereferenceable(24) %arg1, %"class.adept::Array.25"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.25"* noalias sret %arg, %"class.adept::SpecialMatrix.9"* dereferenceable(24) %arg1, %"class.adept::Array.25"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfEENS_5ArrayILi2ET_Lb0EEERKS3_S5_(%"class.adept::Array"* noalias sret %arg, %"class.adept::Array"* dereferenceable(32) %arg1, %"class.adept::Array"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array"* noalias sret %arg, %"class.adept::SpecialMatrix"* dereferenceable(24) %arg1, %"class.adept::Array"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIfLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array"* noalias sret %arg, %"class.adept::SpecialMatrix.9"* dereferenceable(24) %arg1, %"class.adept::Array"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdEENS_5ArrayILi1ET_Lb0EEERKNS1_ILi2ES2_Lb0EEERKS3_(%"class.adept::Array.28"* noalias sret %arg, %"class.adept::Array.12"* dereferenceable(32) %arg1, %"class.adept::Array.28"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.28"* noalias sret %arg, %"class.adept::SpecialMatrix.15"* dereferenceable(24) %arg1, %"class.adept::Array.28"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi1ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.28"* noalias sret %arg, %"class.adept::SpecialMatrix.17"* dereferenceable(24) %arg1, %"class.adept::Array.28"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdEENS_5ArrayILi2ET_Lb0EEERKS3_S5_(%"class.adept::Array.12"* noalias sret %arg, %"class.adept::Array.12"* dereferenceable(32) %arg1, %"class.adept::Array.12"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE0EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.12"* noalias sret %arg, %"class.adept::SpecialMatrix.15"* dereferenceable(24) %arg1, %"class.adept::Array.12"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define weak_odr dso_local void @_ZN5adept5solveIdLNS_8internal21SymmMatrixOrientationE1EEENS_5ArrayILi2ET_Lb0EEERKNS_13SpecialMatrixIS4_NS1_10SymmEngineIXT0_EEELb0EEERKS5_(%"class.adept::Array.12"* noalias sret %arg, %"class.adept::SpecialMatrix.17"* dereferenceable(24) %arg1, %"class.adept::Array.12"* dereferenceable(32) %arg2) local_unnamed_addr #0 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::allocator", align 1
  %tmp4 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp5 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp3, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.81, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp3)
          to label %bb7 unwind label %bb10

bb7:                                              ; preds = %bb
  %tmp8 = bitcast i8* %tmp4 to %"class.adept::feature_not_available"*
  invoke void @_ZN5adept21feature_not_availableC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::feature_not_available"* %tmp8, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb9 unwind label %bb14

bb9:                                              ; preds = %bb7
  invoke void @__cxa_throw(i8* %tmp4, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21feature_not_availableE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb27 unwind label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = extractvalue { i8*, i32 } %tmp11, 1
  br label %bb19

bb14:                                             ; preds = %bb9, %bb7
  %tmp15 = phi i1 [ false, %bb9 ], [ true, %bb7 ]
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb19

bb19:                                             ; preds = %bb14, %bb10
  %tmp20 = phi i8* [ %tmp17, %bb14 ], [ %tmp12, %bb10 ]
  %tmp21 = phi i32 [ %tmp18, %bb14 ], [ %tmp13, %bb10 ]
  %tmp22 = phi i1 [ %tmp15, %bb14 ], [ true, %bb10 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp5) #4
  br i1 %tmp22, label %bb23, label %bb24

bb23:                                             ; preds = %bb19
  call void @__cxa_free_exception(i8* %tmp4) #4
  br label %bb24

bb24:                                             ; preds = %bb23, %bb19
  %tmp25 = insertvalue { i8*, i32 } undef, i8* %tmp20, 0
  %tmp26 = insertvalue { i8*, i32 } %tmp25, i32 %tmp21, 1
  resume { i8*, i32 } %tmp26

bb27:                                             ; preds = %bb9
  unreachable
}

; Function Attrs: uwtable
define dso_local void @_ZN5adept8linspaceEddi(%"class.adept::Array.28"* noalias sret %arg, double %arg1, double %arg2, i32 %arg3) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = alloca %"class.std::allocator", align 1
  tail call void @_ZN5adept5ArrayILi1EdLb0EEC2Ei(%"class.adept::Array.28"* %arg, i32 %arg3)
  %tmp5 = icmp sgt i32 %arg3, 1
  br i1 %tmp5, label %bb6, label %bb25

bb6:                                              ; preds = %bb
  %tmp7 = fsub fast double %arg2, %arg1
  %tmp8 = add nsw i32 %arg3, -1
  %tmp9 = sitofp i32 %tmp8 to double
  %tmp10 = fdiv fast double 1.000000e+00, %tmp9
  br label %bb11

bb11:                                             ; preds = %bb14, %bb6
  %tmp12 = phi i32 [ 0, %bb6 ], [ %tmp19, %bb14 ]
  %tmp13 = invoke dereferenceable(8) double* @_ZN5adept5ArrayILi1EdLb0EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valuentLb0EERdE4typeES5_(%"class.adept::Array.28"* %arg, i32 %tmp12)
          to label %bb14 unwind label %bb21

bb14:                                             ; preds = %bb11
  %tmp15 = sitofp i32 %tmp12 to double
  %tmp16 = fmul fast double %tmp7, %tmp15
  %tmp17 = fmul fast double %tmp16, %tmp10
  %tmp18 = fadd fast double %tmp17, %arg1
  store double %tmp18, double* %tmp13, align 8, !tbaa !31
  %tmp19 = add nuw nsw i32 %tmp12, 1
  %tmp20 = icmp slt i32 %tmp19, %arg3
  br i1 %tmp20, label %bb11, label %bb58

bb21:                                             ; preds = %bb11
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb59

bb25:                                             ; preds = %bb
  %tmp26 = icmp eq i32 %arg3, 1
  %tmp27 = fcmp fast oeq double %arg1, %arg2
  %tmp28 = and i1 %tmp27, %tmp26
  br i1 %tmp28, label %bb29, label %bb36

bb29:                                             ; preds = %bb25
  %tmp30 = invoke dereferenceable(8) double* @_ZN5adept5ArrayILi1EdLb0EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valuentLb0EERdE4typeES5_(%"class.adept::Array.28"* %arg, i32 0)
          to label %bb31 unwind label %bb32

bb31:                                             ; preds = %bb29
  store double %arg1, double* %tmp30, align 8, !tbaa !31
  br label %bb58

bb32:                                             ; preds = %bb29
  %tmp33 = landingpad { i8*, i32 }
          cleanup
  %tmp34 = extractvalue { i8*, i32 } %tmp33, 0
  %tmp35 = extractvalue { i8*, i32 } %tmp33, 1
  br label %bb59

bb36:                                             ; preds = %bb25
  br i1 %tmp26, label %bb37, label %bb58

bb37:                                             ; preds = %bb36
  %tmp38 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp39 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp39) #4
  %tmp40 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp4, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp40) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.82, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp4)
          to label %bb41 unwind label %bb44

bb41:                                             ; preds = %bb37
  %tmp42 = bitcast i8* %tmp38 to %"class.adept::invalid_operation"*
  invoke void @_ZN5adept17invalid_operationC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_operation"* %tmp42, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb43 unwind label %bb48

bb43:                                             ; preds = %bb41
  invoke void @__cxa_throw(i8* %tmp38, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_operationE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb64 unwind label %bb48

bb44:                                             ; preds = %bb37
  %tmp45 = landingpad { i8*, i32 }
          cleanup
  %tmp46 = extractvalue { i8*, i32 } %tmp45, 0
  %tmp47 = extractvalue { i8*, i32 } %tmp45, 1
  br label %bb53

bb48:                                             ; preds = %bb43, %bb41
  %tmp49 = phi i1 [ false, %bb43 ], [ true, %bb41 ]
  %tmp50 = landingpad { i8*, i32 }
          cleanup
  %tmp51 = extractvalue { i8*, i32 } %tmp50, 0
  %tmp52 = extractvalue { i8*, i32 } %tmp50, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb53

bb53:                                             ; preds = %bb48, %bb44
  %tmp54 = phi i8* [ %tmp51, %bb48 ], [ %tmp46, %bb44 ]
  %tmp55 = phi i32 [ %tmp52, %bb48 ], [ %tmp47, %bb44 ]
  %tmp56 = phi i1 [ %tmp49, %bb48 ], [ true, %bb44 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp40) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp39) #4
  br i1 %tmp56, label %bb57, label %bb59

bb57:                                             ; preds = %bb53
  call void @__cxa_free_exception(i8* %tmp38) #4
  br label %bb59

bb58:                                             ; preds = %bb36, %bb31, %bb14
  ret void

bb59:                                             ; preds = %bb57, %bb53, %bb32, %bb21
  %tmp60 = phi i8* [ %tmp23, %bb21 ], [ %tmp34, %bb32 ], [ %tmp54, %bb57 ], [ %tmp54, %bb53 ]
  %tmp61 = phi i32 [ %tmp24, %bb21 ], [ %tmp35, %bb32 ], [ %tmp55, %bb57 ], [ %tmp55, %bb53 ]
  call void @_ZN5adept5ArrayILi1EdLb0EED2Ev(%"class.adept::Array.28"* %arg) #4
  %tmp62 = insertvalue { i8*, i32 } undef, i8* %tmp60, 0
  %tmp63 = insertvalue { i8*, i32 } %tmp62, i32 %tmp61, 1
  resume { i8*, i32 } %tmp63

bb64:                                             ; preds = %bb43
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EEC2Ei(%"class.adept::Array.28"* %arg, i32 %arg1) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.adept::Array.28"* %arg to %"struct.adept::internal::GradientIndex"*
  tail call void @_ZN5adept8internal13GradientIndexILb0EEC2Ei(%"struct.adept::internal::GradientIndex"* %tmp, i32 -9999)
  %tmp2 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 1
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp2, align 8, !tbaa !58
  %tmp3 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 2
  tail call void @_ZN5adept14ExpressionSizeILi1EEC2Ev(%"class.adept::ExpressionSize.27"* nonnull %tmp3)
  %tmp4 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  tail call void @_ZN5adept14ExpressionSizeILi1EEC2Ev(%"class.adept::ExpressionSize.27"* nonnull %tmp4)
  tail call void @_ZN5adept5ArrayILi1EdLb0EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii(%"class.adept::Array.28"* %arg, i32 %arg1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5adept5ArrayILi1EdLb0EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valuentLb0EERdE4typeES5_(%"class.adept::Array.28"* %arg, i32 %arg1) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 0
  %tmp2 = load double*, double** %tmp, align 8, !tbaa !61
  %tmp3 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 2
  %tmp4 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp3, i32 0)
  %tmp5 = load i32, i32* %tmp4, align 4, !tbaa !34
  %tmp6 = tail call i32 @_ZN5adept8internal18get_index_with_lenEii(i32 %arg1, i32 %tmp5)
  %tmp7 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  %tmp8 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp7, i32 0)
  %tmp9 = load i32, i32* %tmp8, align 4, !tbaa !34
  %tmp10 = mul nsw i32 %tmp9, %tmp6
  %tmp11 = sext i32 %tmp10 to i64
  %tmp12 = getelementptr inbounds double, double* %tmp2, i64 %tmp11
  ret double* %tmp12
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EED2Ev(%"class.adept::Array.28"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 1
  %tmp1 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !58
  %tmp2 = icmp eq %"class.adept::Storage.14"* %tmp1, null
  br i1 %tmp2, label %bb4, label %bb3

bb3:                                              ; preds = %bb
  invoke void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp1)
          to label %bb4 unwind label %bb5

bb4:                                              ; preds = %bb3, %bb
  ret void

bb5:                                              ; preds = %bb3
  %tmp6 = landingpad { i8*, i32 }
          catch i8* null
  %tmp7 = extractvalue { i8*, i32 } %tmp6, 0
  tail call void @__clang_call_terminate(i8* %tmp7) #25
  unreachable
}

; Function Attrs: norecurse nounwind readonly uwtable
define dso_local float @_Z5tdiffP7timevalS0_(%struct.timeval* nocapture readonly %arg, %struct.timeval* nocapture readonly %arg1) local_unnamed_addr #19 {
bb:
  %tmp = getelementptr inbounds %struct.timeval, %struct.timeval* %arg1, i64 0, i32 0
  %tmp2 = load i64, i64* %tmp, align 8, !tbaa !62
  %tmp3 = getelementptr inbounds %struct.timeval, %struct.timeval* %arg, i64 0, i32 0
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !62
  %tmp5 = sub nsw i64 %tmp2, %tmp4
  %tmp6 = sitofp i64 %tmp5 to double
  %tmp7 = getelementptr inbounds %struct.timeval, %struct.timeval* %arg1, i64 0, i32 1
  %tmp8 = load i64, i64* %tmp7, align 8, !tbaa !65
  %tmp9 = getelementptr inbounds %struct.timeval, %struct.timeval* %arg, i64 0, i32 1
  %tmp10 = load i64, i64* %tmp9, align 8, !tbaa !65
  %tmp11 = sub nsw i64 %tmp8, %tmp10
  %tmp12 = sitofp i64 %tmp11 to double
  %tmp13 = fmul fast double %tmp12, 0x3EB0C6F7A0B5ED8D
  %tmp14 = fadd fast double %tmp13, %tmp6
  %tmp15 = fptrunc double %tmp14 to float
  ret float %tmp15
}

; Function Attrs: uwtable
define internal fastcc void @__cxx_global_var_init.83() unnamed_addr #0 section ".text.startup" {
bb:
  tail call void @_ZN5boost6detail11multi_array10extent_genILm0EEC2Ev(%"class.boost::detail::multi_array::extent_gen"* nonnull @_ZN5boost12_GLOBAL__N_17extentsE)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5boost6detail11multi_array10extent_genILm0EEC2Ev(%"class.boost::detail::multi_array::extent_gen"* %arg) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::detail::multi_array::extent_gen", %"class.boost::detail::multi_array::extent_gen"* %arg, i64 0, i32 0
  tail call void @_ZN5boost5arrayINS_6detail11multi_array12extent_rangeIlmEELm1EEC2Ev(%"class.boost::array"* %tmp)
  ret void
}

; Function Attrs: norecurse uwtable
define internal fastcc void @__cxx_global_var_init.84() unnamed_addr #14 section ".text.startup" {
bb:
  tail call void @_ZN5boost6detail11multi_array9index_genILi0ELi0EEC2Ev(%"struct.boost::detail::multi_array::index_gen"* nonnull @_ZN5boost12_GLOBAL__N_17indicesE)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5boost6detail11multi_array9index_genILi0ELi0EEC2Ev(%"struct.boost::detail::multi_array::index_gen"* %arg) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.boost::detail::multi_array::index_gen", %"struct.boost::detail::multi_array::index_gen"* %arg, i64 0, i32 0
  tail call void @_ZN5boost5arrayINS_6detail11multi_array11index_rangeIlmEELm1EEC2Ev(%"class.boost::array.30"* %tmp)
  ret void
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local void @_ZN5boost15throw_exceptionERKSt9exception(%"class.std::exception"* nocapture dereferenceable(8) %arg) local_unnamed_addr #9 {
bb:
  ret void
}

; Function Attrs: nounwind uwtable
define dso_local void @_Z16init_brusselatorPdS_(double* noalias nocapture %arg, double* noalias nocapture %arg1) local_unnamed_addr #3 {
bb:
  br label %bb2

bb2:                                              ; preds = %bb13, %bb
  %tmp = phi i64 [ 0, %bb ], [ %tmp14, %bb13 ]
  %tmp3 = trunc i64 %tmp to i32
  %tmp4 = sitofp i32 %tmp3 to double
  %tmp5 = fmul fast double %tmp4, 0x3FA0842108421084
  %tmp6 = shl i64 %tmp, 5
  %tmp7 = fsub fast double 1.000000e+00, %tmp5
  %tmp8 = fmul fast double %tmp7, %tmp5
  %tmp9 = fmul fast double %tmp8, 2.700000e+01
  %tmp10 = tail call fast double @llvm.sqrt.f64(double %tmp8)
  %tmp11 = fmul fast double %tmp9, %tmp10
  br label %bb16

bb12:                                             ; preds = %bb13
  ret void

bb13:                                             ; preds = %bb16
  %tmp14 = add nuw nsw i64 %tmp, 1
  %tmp15 = icmp eq i64 %tmp14, 32
  br i1 %tmp15, label %bb12, label %bb2

bb16:                                             ; preds = %bb16, %bb2
  %tmp17 = phi i64 [ 0, %bb2 ], [ %tmp29, %bb16 ]
  %tmp18 = trunc i64 %tmp17 to i32
  %tmp19 = sitofp i32 %tmp18 to double
  %tmp20 = fmul fast double %tmp19, 0x3FA0842108421084
  %tmp21 = fsub fast double 1.000000e+00, %tmp20
  %tmp22 = fmul fast double %tmp21, %tmp20
  %tmp23 = fmul fast double %tmp22, 2.200000e+01
  %tmp24 = tail call fast double @llvm.sqrt.f64(double %tmp22)
  %tmp25 = fmul fast double %tmp23, %tmp24
  %tmp26 = add nuw nsw i64 %tmp17, %tmp6
  %tmp27 = getelementptr inbounds double, double* %arg, i64 %tmp26
  store double %tmp25, double* %tmp27, align 8, !tbaa !31
  %tmp28 = getelementptr inbounds double, double* %arg1, i64 %tmp26
  store double %tmp11, double* %tmp28, align 8, !tbaa !31
  %tmp29 = add nuw nsw i64 %tmp17, 1
  %tmp30 = icmp eq i64 %tmp29, 32
  br i1 %tmp30, label %bb13, label %bb16
}

; Function Attrs: nounwind readnone speculatable
declare double @llvm.sqrt.f64(double) #11

define i1 @truer(i1 %z) #30 {
entry:
    ret i1 true
}

; Function Attrs: nounwind uwtable
define dso_local void @_Z19brusselator_2d_loopPdS_PKdS1_S1_d(double* noalias nocapture readnone %arg, double* noalias nocapture %arg1, double* noalias nocapture readonly %arg2, double* noalias nocapture readonly %arg3, double* noalias nocapture readonly %arg4, double %arg5) #3 {
bb:
  %A = load double, double* %arg4, align 8, !tbaa !31

  %v0 = load double, double* %arg3, align 8, !tbaa !31

  br label %bb9

bb9:                                              ; preds = %bb22, %bb
  %i = phi i64 [ 0, %bb ], [ %tmp23, %bb22 ]
  %i32 = shl i64 %i, 5
  %tmp12 = icmp eq i64 %i, 0
  %tmp13 = icmp eq i64 %i, 31
  %tmp14 = add i64 %i32, -32
  %ip132 = add i64 %i32, 32
  %maxip132 = select i1 %tmp13, i64 992, i64 %ip132
  %tmp18 = and i64 %tmp14, 4294967264
  %minim132 = select i1 %tmp12, i64 0, i64 %tmp18
  br label %bb25

bb21:                                             ; preds = %bb22
  ret void

bb22:                                             ; preds = %bb39
  %tmp23 = add nuw nsw i64 %i, 1
  %tmp24 = icmp ult i64 %tmp23, 32
  br i1 %tmp24, label %bb9, label %bb21

bb25:                                             ; preds = %bb39, %bb9
  %j = phi i64 [ 0, %bb9 ], [ %jp1, %bb39 ]

  %jp1 = add nuw nsw i64 %j, 1
  %endj = icmp eq i64 %j, 31
  %maxjp1 = select i1 %endj, i64 31, i64 %jp1

  %tmp28 = icmp eq i64 %j, 0
  %jm1 = add i64 %j, -1

  %tmp30 = trunc i64 %jm1 to i32
  %tmp31 = select i1 %tmp28, i32 0, i32 %tmp30

  %tmp31_ext = zext i32 %tmp31 to i64

  %maxjm1 = select i1 %tmp28, i64 0, i64 %jm1

  %ijm1 = add i64 %tmp31_ext, %i32

  %ij = add nuw nsw i64 %j, %i32
  %tmp33 = getelementptr inbounds double, double* %arg3, i64 %ij
  %vij = load double, double* %tmp33, align 8, !tbaa !31

  %tmp61 = fmul fast double %vij, %v0
  %term2 = fsub fast double %A, %tmp61
  %term2p = fmul fast double %term2, %vij

  %tmp37 = icmp ult i64 %tmp31_ext, 33



  %im1j = add nuw nsw i64 %j, %minim132
  %ip1j = add nuw nsw i64 %j, %maxip132
  %ijp1 = add i64 %maxjp1, %i32
  %ijp1AND = and i64 %ijp1, 4294967295

  %tmp43 = getelementptr inbounds double, double* %arg3, i64 %im1j
  %vim1j = load double, double* %tmp43, align 8, !tbaa !31
  %tmp46 = getelementptr inbounds double, double* %arg3, i64 %ip1j
  %vip1j = load double, double* %tmp46, align 8, !tbaa !31
  %tmp50 = getelementptr inbounds double, double* %arg3, i64 %ijp1AND
  %vijp1 = load double, double* %tmp50, align 8, !tbaa !31
  %tmp54 = getelementptr inbounds double, double* %arg3, i64 %ijm1
  %vijm1 = load double, double* %tmp54, align 8, !tbaa !31
  %tmp56 = fadd fast double %vim1j, %v0
  %tmp57 = fadd fast double %tmp56, %vip1j
  %tmp58 = fadd fast double %tmp57, %vijp1
  %sum = fadd fast double %tmp58, %vijm1
  %tmp60 = fmul fast double %A, %sum
  %tmp64 = fadd fast double %term2p, %tmp60
  %tmp65 = getelementptr inbounds double, double* %arg1, i64 %ij
  store double %tmp64, double* %tmp65, align 8, !tbaa !31

  %tmp66 = icmp ult i64 %jp1, 32

  br i1 %tmp37, label %bb39, label %bb38

bb38:                                             ; preds = %bb25
  tail call void @__assert_fail(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.85, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.86, i64 0, i64 0), i32 106, i8* getelementptr inbounds ([151 x i8], [151 x i8]* @__PRETTY_FUNCTION__._Z19brusselator_2d_loopPdS_PKdS1_S1_d, i64 0, i64 0)) #25
  unreachable

bb39:                                             ; preds = %bb25
  br i1 %tmp66, label %bb25, label %bb22
}

; Function Attrs: noreturn nounwind
declare dso_local void @__assert_fail(i8*, i8*, i32, i8*) local_unnamed_addr #20

; Function Attrs: nounwind uwtable
define dso_local void @_Z6lorenzRKN5boost5arrayIdLm2048EEERS1_d(%"class.boost::array.31"* dereferenceable(16384) %arg, %"class.boost::array.31"* dereferenceable(16384) %arg1, double %arg2) local_unnamed_addr #3 {
bb:
  %tmp = alloca [3 x double], align 16
  %tmp3 = bitcast [3 x double]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp3) #4
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 16 %tmp3, i8* align 16 bitcast ([3 x double]* @_ZZ6lorenzRKN5boost5arrayIdLm2048EEERS1_dE1p to i8*), i64 24, i1 false)
  %tmp4 = tail call double* @_ZN5boost5arrayIdLm2048EE7c_arrayEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp5 = tail call double* @_ZN5boost5arrayIdLm2048EE7c_arrayEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp6 = getelementptr inbounds double, double* %tmp5, i64 1024
  %tmp7 = tail call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg)
  %tmp8 = tail call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg)
  %tmp9 = getelementptr inbounds double, double* %tmp8, i64 1024
  %tmp10 = getelementptr inbounds [3 x double], [3 x double]* %tmp, i64 0, i64 0
  call void @_Z19brusselator_2d_loopPdS_PKdS1_S1_d(double* undef, double* nonnull %tmp6, double* %tmp7, double* nonnull %tmp9, double* nonnull %tmp10, double undef)
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp3) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double* @_ZN5boost5arrayIdLm2048EE7c_arrayEv(%"class.boost::array.31"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::array.31", %"class.boost::array.31"* %arg, i64 0, i32 0, i64 0
  ret double* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::array.31", %"class.boost::array.31"* %arg, i64 0, i32 0, i64 0
  ret double* %tmp
}

; Function Attrs: uwtable
define dso_local double @_Z6foobarPKdN5boost5arrayIdLm2048EEES3_d(double* %arg, %"class.boost::array.31"* byval align 8 %arg1, %"class.boost::array.31"* byval nocapture readonly align 8 %arg2, double %arg3) local_unnamed_addr #0 {
bb:
  %tmp = alloca [3 x double], align 16
  %tmp4 = alloca %"class.boost::array.31", align 8
  %tmp5 = alloca %"class.boost::array.31", align 8
  %tmp6 = bitcast [3 x double]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp6) #4
  call void @llvm.memset.p0i8.i64(i8* nonnull align 16 %tmp6, i8 0, i64 24, i1 false)
  %tmp7 = bitcast %"class.boost::array.31"* %tmp4 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp7) #4
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %tmp7, i8 0, i64 16384, i1 false)
  %tmp8 = bitcast %"class.boost::array.31"* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp8) #4
  %tmp9 = bitcast %"class.boost::array.31"* %arg2 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp8, i8* nonnull align 8 %tmp9, i64 16384, i1 false), !tbaa.struct !66
  %tmp10 = load i32, i32* @enzyme_dupnoneed, align 4, !tbaa !34
  %tmp11 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp5)
  %tmp12 = load i32, i32* @enzyme_dupnoneed, align 4, !tbaa !34
  %tmp13 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp5)
  %tmp14 = getelementptr inbounds double, double* %tmp13, i64 1024
  %tmp15 = load i32, i32* @enzyme_dup, align 4, !tbaa !34
  %tmp16 = call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp17 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp4)
  %tmp18 = load i32, i32* @enzyme_dup, align 4, !tbaa !34
  %tmp19 = call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp20 = getelementptr inbounds double, double* %tmp19, i64 1024
  %tmp21 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp4)
  %tmp22 = getelementptr inbounds double, double* %tmp21, i64 1024
  %tmp23 = load i32, i32* @enzyme_dup, align 4, !tbaa !34
  %tmp24 = getelementptr inbounds [3 x double], [3 x double]* %tmp, i64 0, i64 0
  %tmp25 = load i32, i32* @enzyme_const, align 4, !tbaa !34
  call void @_Z17__enzyme_autodiffIvJPFvPdS0_PKdS2_S2_dEiDnS0_iDnS0_iS2_S0_iS2_S0_iS2_S0_idEET_DpT0_(void (double*, double*, double*, double*, double*, double)* nonnull @_Z19brusselator_2d_loopPdS_PKdS1_S1_d, i32 %tmp10, i8* null, double* %tmp11, i32 %tmp12, i8* null, double* nonnull %tmp14, i32 %tmp15, double* %tmp16, double* %tmp17, i32 %tmp18, double* nonnull %tmp20, double* nonnull %tmp22, i32 %tmp23, double* %arg, double* nonnull %tmp24, i32 %tmp25, double %arg3)
  %tmp26 = call dereferenceable(8) double* @_ZN5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %tmp4, i64 0)
  %tmp27 = load double, double* %tmp26, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp6) #4
  ret double %tmp27
}

; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #5

declare dso_local void @_Z17__enzyme_autodiffIvJPFvPdS0_PKdS2_S2_dEiDnS0_iDnS0_iS2_S0_iS2_S0_iS2_S0_idEET_DpT0_(void (double*, double*, double*, double*, double*, double)*, i32, i8*, double*, i32, i8*, double*, i32, double*, double*, i32, double*, double*, i32, double*, double*, i32, double) local_unnamed_addr #1

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::array.31", %"class.boost::array.31"* %arg, i64 0, i32 0, i64 0
  ret double* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* %arg, i64 %arg1) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = icmp ult i64 %arg1, 2048
  br i1 %tmp, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @__assert_fail(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.108, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.109, i64 0, i64 0), i32 118, i8* getelementptr inbounds ([111 x i8], [111 x i8]* @__PRETTY_FUNCTION__._ZN5boost5arrayIdLm2048EEixEm, i64 0, i64 0)) #25
  unreachable

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"class.boost::array.31", %"class.boost::array.31"* %arg, i64 0, i32 0, i64 %arg1
  ret double* %tmp4
}

; Function Attrs: uwtable
define dso_local void @_Z20abrusselator_2d_loopRN5adept5ArrayILi1EdLb1EEES2_S2_S2_S2_d(%"class.adept::Array.32"* dereferenceable(32) %arg, %"class.adept::Array.32"* dereferenceable(32) %arg1, %"class.adept::Array.32"* dereferenceable(32) %arg2, %"class.adept::Array.32"* dereferenceable(32) %arg3, %"class.adept::Array.32"* dereferenceable(32) %arg4, double %arg5) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca double, align 8
  %tmp6 = alloca %"class.adept::Active", align 8
  %tmp7 = alloca %"class.adept::ActiveReference", align 8
  %tmp8 = alloca %"class.adept::Active", align 8
  %tmp9 = alloca %"class.adept::ActiveReference", align 8
  %tmp10 = alloca %"class.adept::Active", align 8
  %tmp11 = alloca %"class.adept::ActiveReference", align 8
  %tmp12 = alloca %"class.adept::Active", align 8
  %tmp13 = alloca double, align 8
  %tmp14 = alloca %"struct.adept::internal::BinaryOperation", align 8
  %tmp15 = alloca %"struct.adept::internal::BinaryOperation.38", align 8
  %tmp16 = alloca %"class.adept::Active", align 8
  %tmp17 = alloca double, align 8
  %tmp18 = alloca %"class.adept::Active", align 8
  %tmp19 = alloca double, align 8
  %tmp20 = alloca %"class.adept::Active", align 8
  %tmp21 = alloca %"struct.adept::internal::BinaryOperation.40", align 8
  %tmp22 = alloca %"struct.adept::internal::BinaryOperation.42", align 8
  %tmp23 = alloca %"class.adept::ActiveReference", align 8
  %tmp24 = alloca %"class.adept::ActiveReference", align 8
  %tmp25 = alloca %"class.adept::ActiveReference", align 8
  %tmp26 = alloca %"struct.adept::internal::BinaryOperation.44", align 8
  %tmp27 = alloca %"struct.adept::internal::BinaryOperation.46", align 8
  %tmp28 = alloca %"struct.adept::internal::BinaryOperation.48", align 8
  %tmp29 = alloca %"struct.adept::internal::BinaryOperation.50", align 8
  %tmp30 = alloca %"struct.adept::internal::BinaryOperation.52", align 8
  %tmp31 = alloca %"struct.adept::internal::BinaryOperation.54", align 8
  %tmp32 = alloca %"struct.adept::internal::BinaryOperation.56", align 8
  %tmp33 = alloca %"struct.adept::internal::BinaryOperation.58", align 8
  %tmp34 = alloca %"struct.adept::internal::BinaryOperation.60", align 8
  %tmp35 = alloca %"class.adept::ActiveReference", align 8
  %tmp36 = alloca %"class.adept::ActiveReference", align 8
  %tmp37 = alloca %"class.adept::ActiveReference", align 8
  %tmp38 = alloca %"class.adept::ActiveReference", align 8
  %tmp39 = alloca %"struct.adept::internal::BinaryOpScalarLeft", align 8
  %tmp40 = alloca i32, align 4
  %tmp41 = alloca %"class.adept::ActiveReference", align 8
  %tmp42 = alloca %"struct.adept::internal::BinaryOperation.64", align 8
  %tmp43 = alloca { %"class.adept::Active"*, i32 }, align 8
  %tmp44 = alloca i32, align 4
  %tmp45 = alloca %"class.adept::ActiveReference", align 8
  %tmp46 = alloca %"class.adept::Active", align 8
  %tmp47 = alloca %"class.adept::Active", align 8
  %tmp48 = alloca %"class.adept::Active", align 8
  %tmp49 = alloca %"class.adept::Active", align 8
  %tmp50 = alloca %"class.adept::ActiveReference", align 8
  %tmp51 = alloca %"struct.adept::internal::BinaryOperation.67", align 8
  %tmp52 = alloca %"struct.adept::internal::BinaryOperation.69", align 8
  %tmp53 = alloca %"struct.adept::internal::BinaryOperation.52", align 8
  %tmp54 = alloca %"struct.adept::internal::BinaryOperation.54", align 8
  %tmp55 = alloca %"struct.adept::internal::BinaryOperation.56", align 8
  %tmp56 = alloca %"struct.adept::internal::BinaryOperation.58", align 8
  %tmp57 = alloca %"struct.adept::internal::BinaryOperation.60", align 8
  %tmp58 = alloca %"class.adept::ActiveReference", align 8
  %tmp59 = alloca %"class.adept::ActiveReference", align 8
  %tmp60 = alloca %"class.adept::ActiveReference", align 8
  %tmp61 = alloca %"class.adept::ActiveReference", align 8
  %tmp62 = alloca %"struct.adept::internal::BinaryOpScalarLeft", align 8
  %tmp63 = alloca i32, align 4
  %tmp64 = alloca %"class.adept::ActiveReference", align 8
  %tmp65 = alloca %"struct.adept::internal::BinaryOperation.71", align 8
  %tmp66 = alloca %"class.adept::ActiveReference", align 8
  %tmp67 = alloca %"class.adept::ActiveReference", align 8
  store double %arg5, double* %tmp, align 8, !tbaa !31
  %tmp68 = bitcast %"class.adept::Active"* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp68) #4
  %tmp69 = bitcast %"class.adept::ActiveReference"* %tmp7 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp69) #4
  call void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp7, %"class.adept::Array.32"* nonnull %arg4, i32 0)
  %tmp70 = bitcast %"class.adept::ActiveReference"* %tmp7 to %"struct.adept::Expression.36"*
  invoke void @_ZN5adept6ActiveIdEC2IdNS_15ActiveReferenceIdEEEERKNS_10ExpressionIT_T0_EEPNS_8internal9enable_ifIXaaeqsrS7_4rankLi0EsrS7_9is_activeEvE4typeE(%"class.adept::Active"* nonnull %tmp6, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp70, i8* null)
          to label %bb71 unwind label %bb219

bb71:                                             ; preds = %bb
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp69) #4
  %tmp72 = bitcast %"class.adept::Active"* %tmp8 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp72) #4
  %tmp73 = bitcast %"class.adept::ActiveReference"* %tmp9 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp73) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp9, %"class.adept::Array.32"* nonnull %arg4, i32 1)
          to label %bb74 unwind label %bb223

bb74:                                             ; preds = %bb71
  %tmp75 = bitcast %"class.adept::ActiveReference"* %tmp9 to %"struct.adept::Expression.36"*
  invoke void @_ZN5adept6ActiveIdEC2IdNS_15ActiveReferenceIdEEEERKNS_10ExpressionIT_T0_EEPNS_8internal9enable_ifIXaaeqsrS7_4rankLi0EsrS7_9is_activeEvE4typeE(%"class.adept::Active"* nonnull %tmp8, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp75, i8* null)
          to label %bb76 unwind label %bb227

bb76:                                             ; preds = %bb74
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp73) #4
  %tmp77 = bitcast %"class.adept::Active"* %tmp10 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp77) #4
  %tmp78 = bitcast %"class.adept::ActiveReference"* %tmp11 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp78) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp11, %"class.adept::Array.32"* nonnull %arg4, i32 2)
          to label %bb79 unwind label %bb234

bb79:                                             ; preds = %bb76
  %tmp80 = bitcast %"class.adept::ActiveReference"* %tmp11 to %"struct.adept::Expression.36"*
  invoke void @_ZN5adept6ActiveIdEC2IdNS_15ActiveReferenceIdEEEERKNS_10ExpressionIT_T0_EEPNS_8internal9enable_ifIXaaeqsrS7_4rankLi0EsrS7_9is_activeEvE4typeE(%"class.adept::Active"* nonnull %tmp10, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp80, i8* null)
          to label %bb81 unwind label %bb238

bb81:                                             ; preds = %bb79
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp78) #4
  %tmp82 = bitcast %"class.adept::Active"* %tmp12 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp82) #4
  %tmp83 = bitcast double* %tmp13 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp83) #4
  store double 0x3FA0842108421084, double* %tmp13, align 8, !tbaa !31
  invoke void @_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* nonnull %tmp12, double* nonnull dereferenceable(8) %tmp13, i8* null)
          to label %bb84 unwind label %bb245

bb84:                                             ; preds = %bb81
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp83) #4
  %tmp85 = bitcast %"struct.adept::internal::BinaryOperation"* %tmp14 to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp85) #4
  %tmp86 = bitcast %"class.adept::Active"* %tmp10 to %"struct.adept::Expression.35"*
  %tmp87 = bitcast %"struct.adept::internal::BinaryOperation.38"* %tmp15 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp87) #4
  %tmp88 = bitcast %"class.adept::Active"* %tmp12 to %"struct.adept::Expression.35"*
  %tmp89 = invoke { %"class.adept::Active"*, %"class.adept::Active"* } @_ZN5adeptmlINS_6ActiveIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp88, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp88)
          to label %bb90 unwind label %bb249

bb90:                                             ; preds = %bb84
  %tmp91 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %tmp15, i64 0, i32 0
  %tmp92 = extractvalue { %"class.adept::Active"*, %"class.adept::Active"* } %tmp89, 0
  store %"class.adept::Active"* %tmp92, %"class.adept::Active"** %tmp91, align 8
  %tmp93 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %tmp15, i64 0, i32 1
  %tmp94 = extractvalue { %"class.adept::Active"*, %"class.adept::Active"* } %tmp89, 1
  store %"class.adept::Active"* %tmp94, %"class.adept::Active"** %tmp93, align 8
  %tmp95 = bitcast %"struct.adept::internal::BinaryOperation.38"* %tmp15 to %"struct.adept::Expression.39"*
  invoke void @_ZN5adeptdvINS_6ActiveIdEENS_8internal15BinaryOperationIdS2_NS3_8MultiplyES2_EEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINS8_4typeENS9_4typeEE4typeES8_NS3_6DivideES9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSJ_ISC_S9_EE(%"struct.adept::internal::BinaryOperation"* nonnull sret %tmp14, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp86, %"struct.adept::Expression.39"* nonnull dereferenceable(1) %tmp95)
          to label %bb96 unwind label %bb249

bb96:                                             ; preds = %bb90
  %tmp97 = bitcast %"struct.adept::internal::BinaryOperation"* %tmp14 to %"struct.adept::Expression.37"*
  %tmp98 = invoke dereferenceable(16) %"class.adept::Active"* @_ZN5adept6ActiveIdEaSIdNS_8internal15BinaryOperationIdS1_NS3_6DivideENS4_IdS1_NS3_8MultiplyES1_EEEEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSA_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SA_EE(%"class.adept::Active"* nonnull %tmp10, %"struct.adept::Expression.37"* nonnull dereferenceable(1) %tmp97)
          to label %bb99 unwind label %bb249

bb99:                                             ; preds = %bb96
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp87) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp85) #4
  %tmp100 = bitcast %"class.adept::Active"* %tmp16 to i8*
  %tmp101 = bitcast double* %tmp17 to i8*
  %tmp102 = bitcast %"class.adept::Active"* %tmp18 to i8*
  %tmp103 = bitcast double* %tmp19 to i8*
  %tmp104 = bitcast %"class.adept::Active"* %tmp20 to i8*
  %tmp105 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %tmp21, i64 0, i32 0, i64 0
  %tmp106 = bitcast %"struct.adept::internal::BinaryOperation.42"* %tmp22 to i8*
  %tmp107 = bitcast %"class.adept::ActiveReference"* %tmp23 to i8*
  %tmp108 = bitcast %"class.adept::ActiveReference"* %tmp24 to i8*
  %tmp109 = bitcast %"class.adept::ActiveReference"* %tmp23 to %"struct.adept::Expression.36"*
  %tmp110 = bitcast %"class.adept::ActiveReference"* %tmp24 to %"struct.adept::Expression.36"*
  %tmp111 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %tmp22, i64 0, i32 0
  %tmp112 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %tmp22, i64 0, i32 1
  %tmp113 = bitcast %"class.adept::ActiveReference"* %tmp25 to i8*
  %tmp114 = bitcast %"struct.adept::internal::BinaryOperation.42"* %tmp22 to %"struct.adept::Expression.43"*
  %tmp115 = bitcast %"class.adept::ActiveReference"* %tmp25 to %"struct.adept::Expression.36"*
  %tmp116 = bitcast %"struct.adept::internal::BinaryOperation.40"* %tmp21 to %"struct.adept::Expression.41"*
  %tmp117 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %tmp26, i64 0, i32 0, i64 0
  %tmp118 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %tmp27, i64 0, i32 0, i32 0, i64 0
  %tmp119 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %tmp28, i64 0, i32 0, i64 0
  %tmp120 = bitcast %"struct.adept::internal::BinaryOperation.50"* %tmp29 to i8*
  %tmp121 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp30 to i8*
  %tmp122 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %tmp31, i64 0, i32 0, i32 0, i64 0
  %tmp123 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %tmp32, i64 0, i32 0, i64 0
  %tmp124 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %tmp33, i64 0, i32 0, i64 0
  %tmp125 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp34 to i8*
  %tmp126 = bitcast %"class.adept::ActiveReference"* %tmp35 to i8*
  %tmp127 = bitcast %"class.adept::ActiveReference"* %tmp36 to i8*
  %tmp128 = bitcast %"class.adept::ActiveReference"* %tmp35 to %"struct.adept::Expression.36"*
  %tmp129 = bitcast %"class.adept::ActiveReference"* %tmp36 to %"struct.adept::Expression.36"*
  %tmp130 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp34, i64 0, i32 0
  %tmp131 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp34, i64 0, i32 1
  %tmp132 = bitcast %"class.adept::ActiveReference"* %tmp37 to i8*
  %tmp133 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp34 to %"struct.adept::Expression.61"*
  %tmp134 = bitcast %"class.adept::ActiveReference"* %tmp37 to %"struct.adept::Expression.36"*
  %tmp135 = bitcast %"class.adept::ActiveReference"* %tmp38 to i8*
  %tmp136 = bitcast %"struct.adept::internal::BinaryOperation.58"* %tmp33 to %"struct.adept::Expression.59"*
  %tmp137 = bitcast %"class.adept::ActiveReference"* %tmp38 to %"struct.adept::Expression.36"*
  %tmp138 = bitcast %"struct.adept::internal::BinaryOperation.56"* %tmp32 to %"struct.adept::Expression.57"*
  %tmp139 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %tmp39 to i8*
  %tmp140 = bitcast i32* %tmp40 to i8*
  %tmp141 = bitcast %"class.adept::ActiveReference"* %tmp41 to i8*
  %tmp142 = bitcast %"class.adept::ActiveReference"* %tmp41 to %"struct.adept::Expression.36"*
  %tmp143 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp39, i64 0, i32 0, i32 0
  %tmp144 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp39, i64 0, i32 1
  %tmp145 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %tmp39 to %"struct.adept::Expression.62"*
  %tmp146 = bitcast %"struct.adept::internal::BinaryOperation.54"* %tmp31 to %"struct.adept::Expression.55"*
  %tmp147 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp30 to %"struct.adept::Expression.53"*
  %tmp148 = bitcast %"class.adept::Active"* %tmp8 to %"struct.adept::Expression.35"*
  %tmp149 = bitcast %"struct.adept::internal::BinaryOperation.50"* %tmp29 to %"struct.adept::Expression.51"*
  %tmp150 = bitcast %"class.adept::Active"* %tmp20 to %"struct.adept::Expression.35"*
  %tmp151 = bitcast %"struct.adept::internal::BinaryOperation.48"* %tmp28 to %"struct.adept::Expression.49"*
  %tmp152 = bitcast %"struct.adept::internal::BinaryOperation.64"* %tmp42 to i8*
  %tmp153 = bitcast { %"class.adept::Active"*, i32 }* %tmp43 to i8*
  %tmp154 = bitcast %"class.adept::Active"* %tmp6 to %"struct.adept::Expression.35"*
  %tmp155 = bitcast i32* %tmp44 to i8*
  %tmp156 = getelementptr inbounds { %"class.adept::Active"*, i32 }, { %"class.adept::Active"*, i32 }* %tmp43, i64 0, i32 0
  %tmp157 = getelementptr inbounds { %"class.adept::Active"*, i32 }, { %"class.adept::Active"*, i32 }* %tmp43, i64 0, i32 1
  %tmp158 = bitcast %"class.adept::ActiveReference"* %tmp45 to i8*
  %tmp159 = bitcast { %"class.adept::Active"*, i32 }* %tmp43 to %"struct.adept::Expression.66"*
  %tmp160 = bitcast %"class.adept::ActiveReference"* %tmp45 to %"struct.adept::Expression.36"*
  %tmp161 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %tmp42, i64 0, i32 0
  %tmp162 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %tmp42, i64 0, i32 1
  %tmp163 = bitcast %"struct.adept::internal::BinaryOperation.64"* %tmp42 to %"struct.adept::Expression.65"*
  %tmp164 = bitcast %"struct.adept::internal::BinaryOperation.46"* %tmp27 to %"struct.adept::Expression.47"*
  %tmp165 = bitcast %"class.adept::Active"* %tmp46 to i8*
  %tmp166 = bitcast %"class.adept::Active"* %tmp46 to %"struct.adept::Expression.35"*
  %tmp167 = bitcast %"class.adept::ActiveReference"* %tmp50 to i8*
  %tmp168 = bitcast %"struct.adept::internal::BinaryOperation.44"* %tmp26 to %"struct.adept::Expression.45"*
  %tmp169 = bitcast %"struct.adept::internal::BinaryOperation.67"* %tmp51 to i8*
  %tmp170 = bitcast %"struct.adept::internal::BinaryOperation.69"* %tmp52 to i8*
  %tmp171 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp53 to i8*
  %tmp172 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %tmp54, i64 0, i32 0, i32 0, i64 0
  %tmp173 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %tmp55, i64 0, i32 0, i64 0
  %tmp174 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %tmp56, i64 0, i32 0, i64 0
  %tmp175 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp57 to i8*
  %tmp176 = bitcast %"class.adept::ActiveReference"* %tmp58 to i8*
  %tmp177 = bitcast %"class.adept::ActiveReference"* %tmp59 to i8*
  %tmp178 = bitcast %"class.adept::ActiveReference"* %tmp58 to %"struct.adept::Expression.36"*
  %tmp179 = bitcast %"class.adept::ActiveReference"* %tmp59 to %"struct.adept::Expression.36"*
  %tmp180 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp57, i64 0, i32 0
  %tmp181 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp57, i64 0, i32 1
  %tmp182 = bitcast %"class.adept::ActiveReference"* %tmp60 to i8*
  %tmp183 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp57 to %"struct.adept::Expression.61"*
  %tmp184 = bitcast %"class.adept::ActiveReference"* %tmp60 to %"struct.adept::Expression.36"*
  %tmp185 = bitcast %"class.adept::ActiveReference"* %tmp61 to i8*
  %tmp186 = bitcast %"struct.adept::internal::BinaryOperation.58"* %tmp56 to %"struct.adept::Expression.59"*
  %tmp187 = bitcast %"class.adept::ActiveReference"* %tmp61 to %"struct.adept::Expression.36"*
  %tmp188 = bitcast %"struct.adept::internal::BinaryOperation.56"* %tmp55 to %"struct.adept::Expression.57"*
  %tmp189 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %tmp62 to i8*
  %tmp190 = bitcast i32* %tmp63 to i8*
  %tmp191 = bitcast %"class.adept::ActiveReference"* %tmp64 to i8*
  %tmp192 = bitcast %"class.adept::ActiveReference"* %tmp64 to %"struct.adept::Expression.36"*
  %tmp193 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp62, i64 0, i32 0, i32 0
  %tmp194 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp62, i64 0, i32 1
  %tmp195 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %tmp62 to %"struct.adept::Expression.62"*
  %tmp196 = bitcast %"struct.adept::internal::BinaryOperation.54"* %tmp54 to %"struct.adept::Expression.55"*
  %tmp197 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp53 to %"struct.adept::Expression.53"*
  %tmp198 = bitcast %"struct.adept::internal::BinaryOperation.71"* %tmp65 to i8*
  %tmp199 = bitcast %"class.adept::ActiveReference"* %tmp66 to i8*
  %tmp200 = bitcast %"class.adept::ActiveReference"* %tmp66 to %"struct.adept::Expression.36"*
  %tmp201 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %tmp65, i64 0, i32 0
  %tmp202 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %tmp65, i64 0, i32 1
  %tmp203 = bitcast %"struct.adept::internal::BinaryOperation.71"* %tmp65 to %"struct.adept::Expression.72"*
  %tmp204 = bitcast %"struct.adept::internal::BinaryOperation.69"* %tmp52 to %"struct.adept::Expression.70"*
  %tmp205 = bitcast %"class.adept::ActiveReference"* %tmp67 to i8*
  %tmp206 = bitcast %"struct.adept::internal::BinaryOperation.67"* %tmp51 to %"struct.adept::Expression.68"*
  br label %bb207

bb207:                                            ; preds = %bb253, %bb99
  %tmp208 = phi i32 [ 0, %bb99 ], [ %tmp254, %bb253 ]
  %tmp209 = sitofp i32 %tmp208 to double
  %tmp210 = fmul fast double %tmp209, 0x3FA0842108421084
  %tmp211 = icmp eq i32 %tmp208, 31
  %tmp212 = icmp eq i32 %tmp208, 0
  %tmp213 = shl i32 %tmp208, 5
  %tmp214 = add nsw i32 %tmp213, -32
  %tmp215 = select i1 %tmp212, i32 0, i32 %tmp214
  %tmp216 = add nuw nsw i32 %tmp213, 32
  %tmp217 = select i1 %tmp211, i32 992, i32 %tmp216
  br label %bb256

bb218:                                            ; preds = %bb253
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp12) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp82) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp10) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp77) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp72) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp68) #4
  ret void

bb219:                                            ; preds = %bb
  %tmp220 = landingpad { i8*, i32 }
          cleanup
  %tmp221 = extractvalue { i8*, i32 } %tmp220, 0
  %tmp222 = extractvalue { i8*, i32 } %tmp220, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp69) #4
  br label %bb629

bb223:                                            ; preds = %bb71
  %tmp224 = landingpad { i8*, i32 }
          cleanup
  %tmp225 = extractvalue { i8*, i32 } %tmp224, 0
  %tmp226 = extractvalue { i8*, i32 } %tmp224, 1
  br label %bb231

bb227:                                            ; preds = %bb74
  %tmp228 = landingpad { i8*, i32 }
          cleanup
  %tmp229 = extractvalue { i8*, i32 } %tmp228, 0
  %tmp230 = extractvalue { i8*, i32 } %tmp228, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp9) #4
  br label %bb231

bb231:                                            ; preds = %bb227, %bb223
  %tmp232 = phi i32 [ %tmp230, %bb227 ], [ %tmp226, %bb223 ]
  %tmp233 = phi i8* [ %tmp229, %bb227 ], [ %tmp225, %bb223 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp73) #4
  br label %bb626

bb234:                                            ; preds = %bb76
  %tmp235 = landingpad { i8*, i32 }
          cleanup
  %tmp236 = extractvalue { i8*, i32 } %tmp235, 0
  %tmp237 = extractvalue { i8*, i32 } %tmp235, 1
  br label %bb242

bb238:                                            ; preds = %bb79
  %tmp239 = landingpad { i8*, i32 }
          cleanup
  %tmp240 = extractvalue { i8*, i32 } %tmp239, 0
  %tmp241 = extractvalue { i8*, i32 } %tmp239, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp11) #4
  br label %bb242

bb242:                                            ; preds = %bb238, %bb234
  %tmp243 = phi i32 [ %tmp241, %bb238 ], [ %tmp237, %bb234 ]
  %tmp244 = phi i8* [ %tmp240, %bb238 ], [ %tmp236, %bb234 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp78) #4
  br label %bb623

bb245:                                            ; preds = %bb81
  %tmp246 = landingpad { i8*, i32 }
          cleanup
  %tmp247 = extractvalue { i8*, i32 } %tmp246, 0
  %tmp248 = extractvalue { i8*, i32 } %tmp246, 1
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp83) #4
  br label %bb620

bb249:                                            ; preds = %bb96, %bb90, %bb84
  %tmp250 = landingpad { i8*, i32 }
          cleanup
  %tmp251 = extractvalue { i8*, i32 } %tmp250, 0
  %tmp252 = extractvalue { i8*, i32 } %tmp250, 1
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp87) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp85) #4
  br label %bb617

bb253:                                            ; preds = %bb551
  %tmp254 = add nuw nsw i32 %tmp208, 1
  %tmp255 = icmp ult i32 %tmp254, 32
  br i1 %tmp255, label %bb207, label %bb218

bb256:                                            ; preds = %bb551, %bb207
  %tmp257 = phi i32 [ 0, %bb207 ], [ %tmp263, %bb551 ]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp100) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp101) #4
  store double %tmp210, double* %tmp17, align 8, !tbaa !31
  invoke void @_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* nonnull %tmp16, double* nonnull dereferenceable(8) %tmp17, i8* null)
          to label %bb258 unwind label %bb269

bb258:                                            ; preds = %bb256
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp101) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp102) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp103) #4
  %tmp259 = sitofp i32 %tmp257 to double
  %tmp260 = fmul fast double %tmp259, 0x3FA0842108421084
  store double %tmp260, double* %tmp19, align 8, !tbaa !31
  invoke void @_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* nonnull %tmp18, double* nonnull dereferenceable(8) %tmp19, i8* null)
          to label %bb261 unwind label %bb273

bb261:                                            ; preds = %bb258
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp103) #4
  %tmp262 = icmp eq i32 %tmp257, 31
  %tmp263 = add nuw nsw i32 %tmp257, 1
  %tmp264 = select i1 %tmp262, i32 31, i32 %tmp263
  %tmp265 = icmp eq i32 %tmp257, 0
  %tmp266 = add nsw i32 %tmp257, -1
  %tmp267 = select i1 %tmp265, i32 0, i32 %tmp266
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp104) #4
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp105) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp106) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp107) #4
  %tmp268 = add nuw nsw i32 %tmp257, %tmp213
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp23, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp268)
          to label %bb277 unwind label %bb278

bb269:                                            ; preds = %bb256
  %tmp270 = landingpad { i8*, i32 }
          cleanup
  %tmp271 = extractvalue { i8*, i32 } %tmp270, 0
  %tmp272 = extractvalue { i8*, i32 } %tmp270, 1
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp101) #4
  br label %bb614

bb273:                                            ; preds = %bb258
  %tmp274 = landingpad { i8*, i32 }
          cleanup
  %tmp275 = extractvalue { i8*, i32 } %tmp274, 0
  %tmp276 = extractvalue { i8*, i32 } %tmp274, 1
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp103) #4
  br label %bb611

bb277:                                            ; preds = %bb261
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp108) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp24, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp268)
          to label %bb282 unwind label %bb287

bb278:                                            ; preds = %bb261
  %tmp279 = landingpad { i8*, i32 }
          cleanup
  %tmp280 = extractvalue { i8*, i32 } %tmp279, 0
  %tmp281 = extractvalue { i8*, i32 } %tmp279, 1
  br label %bb316

bb282:                                            ; preds = %bb277
  %tmp283 = invoke { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp109, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp110)
          to label %bb284 unwind label %bb291

bb284:                                            ; preds = %bb282
  %tmp285 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp283, 0
  store %"class.adept::ActiveReference"* %tmp285, %"class.adept::ActiveReference"** %tmp111, align 8
  %tmp286 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp283, 1
  store %"class.adept::ActiveReference"* %tmp286, %"class.adept::ActiveReference"** %tmp112, align 8
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp113) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp25, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp268)
          to label %bb295 unwind label %bb299

bb287:                                            ; preds = %bb277
  %tmp288 = landingpad { i8*, i32 }
          cleanup
  %tmp289 = extractvalue { i8*, i32 } %tmp288, 0
  %tmp290 = extractvalue { i8*, i32 } %tmp288, 1
  br label %bb313

bb291:                                            ; preds = %bb282
  %tmp292 = landingpad { i8*, i32 }
          cleanup
  %tmp293 = extractvalue { i8*, i32 } %tmp292, 0
  %tmp294 = extractvalue { i8*, i32 } %tmp292, 1
  br label %bb310

bb295:                                            ; preds = %bb284
  invoke void @_ZN5adeptmlINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE(%"struct.adept::internal::BinaryOperation.40"* nonnull sret %tmp21, %"struct.adept::Expression.43"* nonnull dereferenceable(1) %tmp114, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp115)
          to label %bb296 unwind label %bb303

bb296:                                            ; preds = %bb295
  invoke void @_ZN5adept6ActiveIdEC2IdNS_8internal15BinaryOperationIdNS4_IdNS_15ActiveReferenceIdEENS3_8MultiplyES6_EES7_S6_EEEERKNS_10ExpressionIT_T0_EEPNS3_9enable_ifIXaaeqsrSC_4rankLi0EsrSC_9is_activeEvE4typeE(%"class.adept::Active"* nonnull %tmp20, %"struct.adept::Expression.41"* nonnull dereferenceable(1) %tmp116, i8* null)
          to label %bb297 unwind label %bb303

bb297:                                            ; preds = %bb296
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp25) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp113) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp24) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp108) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp23) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp107) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp106) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp105) #4
  call void @llvm.lifetime.start.p0i8(i64 120, i8* nonnull %tmp117) #4
  call void @llvm.lifetime.start.p0i8(i64 104, i8* nonnull %tmp118) #4
  call void @llvm.lifetime.start.p0i8(i64 88, i8* nonnull %tmp119) #4
  call void @llvm.lifetime.start.p0i8(i64 72, i8* nonnull %tmp120) #4
  call void @llvm.lifetime.start.p0i8(i64 64, i8* nonnull %tmp121) #4
  call void @llvm.lifetime.start.p0i8(i64 56, i8* nonnull %tmp122) #4
  call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %tmp123) #4
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp124) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp125) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp126) #4
  %tmp298 = add nuw nsw i32 %tmp257, %tmp215
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp35, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp298)
          to label %bb319 unwind label %bb321

bb299:                                            ; preds = %bb284
  %tmp300 = landingpad { i8*, i32 }
          cleanup
  %tmp301 = extractvalue { i8*, i32 } %tmp300, 0
  %tmp302 = extractvalue { i8*, i32 } %tmp300, 1
  br label %bb307

bb303:                                            ; preds = %bb296, %bb295
  %tmp304 = landingpad { i8*, i32 }
          cleanup
  %tmp305 = extractvalue { i8*, i32 } %tmp304, 0
  %tmp306 = extractvalue { i8*, i32 } %tmp304, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp25) #4
  br label %bb307

bb307:                                            ; preds = %bb303, %bb299
  %tmp308 = phi i32 [ %tmp306, %bb303 ], [ %tmp302, %bb299 ]
  %tmp309 = phi i8* [ %tmp305, %bb303 ], [ %tmp301, %bb299 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp113) #4
  br label %bb310

bb310:                                            ; preds = %bb307, %bb291
  %tmp311 = phi i32 [ %tmp308, %bb307 ], [ %tmp294, %bb291 ]
  %tmp312 = phi i8* [ %tmp309, %bb307 ], [ %tmp293, %bb291 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp24) #4
  br label %bb313

bb313:                                            ; preds = %bb310, %bb287
  %tmp314 = phi i32 [ %tmp311, %bb310 ], [ %tmp290, %bb287 ]
  %tmp315 = phi i8* [ %tmp312, %bb310 ], [ %tmp289, %bb287 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp108) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp23) #4
  br label %bb316

bb316:                                            ; preds = %bb313, %bb278
  %tmp317 = phi i32 [ %tmp314, %bb313 ], [ %tmp281, %bb278 ]
  %tmp318 = phi i8* [ %tmp315, %bb313 ], [ %tmp280, %bb278 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp107) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp106) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp105) #4
  br label %bb608

bb319:                                            ; preds = %bb297
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp127) #4
  %tmp320 = add nuw nsw i32 %tmp257, %tmp217
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp36, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp320)
          to label %bb325 unwind label %bb327

bb321:                                            ; preds = %bb297
  %tmp322 = landingpad { i8*, i32 }
          cleanup
  %tmp323 = extractvalue { i8*, i32 } %tmp322, 0
  %tmp324 = extractvalue { i8*, i32 } %tmp322, 1
  br label %bb486

bb325:                                            ; preds = %bb319
  %tmp326 = invoke { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } @_ZN5adeptplINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_3AddES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp128, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp129)
          to label %bb335 unwind label %bb331

bb327:                                            ; preds = %bb319
  %tmp328 = landingpad { i8*, i32 }
          cleanup
  %tmp329 = extractvalue { i8*, i32 } %tmp328, 0
  %tmp330 = extractvalue { i8*, i32 } %tmp328, 1
  br label %bb483

bb331:                                            ; preds = %bb325
  %tmp332 = landingpad { i8*, i32 }
          cleanup
  %tmp333 = extractvalue { i8*, i32 } %tmp332, 0
  %tmp334 = extractvalue { i8*, i32 } %tmp332, 1
  br label %bb480

bb335:                                            ; preds = %bb325
  %tmp336 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp326, 0
  store %"class.adept::ActiveReference"* %tmp336, %"class.adept::ActiveReference"** %tmp130, align 8
  %tmp337 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp326, 1
  store %"class.adept::ActiveReference"* %tmp337, %"class.adept::ActiveReference"** %tmp131, align 8
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp132) #4
  %tmp338 = add nuw i32 %tmp264, %tmp213
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp37, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp338)
          to label %bb339 unwind label %bb340

bb339:                                            ; preds = %bb335
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE(%"struct.adept::internal::BinaryOperation.58"* nonnull sret %tmp33, %"struct.adept::Expression.61"* nonnull dereferenceable(1) %tmp133, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp134)
          to label %bb348 unwind label %bb344

bb340:                                            ; preds = %bb335
  %tmp341 = landingpad { i8*, i32 }
          cleanup
  %tmp342 = extractvalue { i8*, i32 } %tmp341, 0
  %tmp343 = extractvalue { i8*, i32 } %tmp341, 1
  br label %bb477

bb344:                                            ; preds = %bb339
  %tmp345 = landingpad { i8*, i32 }
          cleanup
  %tmp346 = extractvalue { i8*, i32 } %tmp345, 0
  %tmp347 = extractvalue { i8*, i32 } %tmp345, 1
  br label %bb474

bb348:                                            ; preds = %bb339
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp135) #4
  %tmp349 = add i32 %tmp267, %tmp213
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp38, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp349)
          to label %bb350 unwind label %bb352

bb350:                                            ; preds = %bb348
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS9_4typeENSA_4typeEE4typeES9_S5_SA_EEE4typeERKNS_10ExpressionISC_S9_EERKNSJ_ISD_SA_EE(%"struct.adept::internal::BinaryOperation.56"* nonnull sret %tmp32, %"struct.adept::Expression.59"* nonnull dereferenceable(1) %tmp136, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp137)
          to label %bb351 unwind label %bb356

bb351:                                            ; preds = %bb350
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp139) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp140) #4
  store i32 4, i32* %tmp40, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp141) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp41, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp268)
          to label %bb360 unwind label %bb373

bb352:                                            ; preds = %bb348
  %tmp353 = landingpad { i8*, i32 }
          cleanup
  %tmp354 = extractvalue { i8*, i32 } %tmp353, 0
  %tmp355 = extractvalue { i8*, i32 } %tmp353, 1
  br label %bb471

bb356:                                            ; preds = %bb350
  %tmp357 = landingpad { i8*, i32 }
          cleanup
  %tmp358 = extractvalue { i8*, i32 } %tmp357, 0
  %tmp359 = extractvalue { i8*, i32 } %tmp357, 1
  br label %bb468

bb360:                                            ; preds = %bb351
  %tmp361 = invoke { i32, %"class.adept::ActiveReference"* } @_ZN5adeptmlIiNS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT_EE5valueENS3_18BinaryOpScalarLeftINS3_7promoteIS5_NT0_4typeEE4typeES5_NS3_8MultiplyES8_EEE4typeERKS5_RKNS_10ExpressionIS9_S8_EE(i32* nonnull dereferenceable(4) %tmp40, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp142)
          to label %bb362 unwind label %bb377

bb362:                                            ; preds = %bb360
  %tmp363 = extractvalue { i32, %"class.adept::ActiveReference"* } %tmp361, 0
  store i32 %tmp363, i32* %tmp143, align 8
  %tmp364 = extractvalue { i32, %"class.adept::ActiveReference"* } %tmp361, 1
  store %"class.adept::ActiveReference"* %tmp364, %"class.adept::ActiveReference"** %tmp144, align 8
  invoke void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSD_4typeENSE_4typeEE4typeESD_NS1_8SubtractESE_EEE4typeERKNS_10ExpressionISG_SD_EERKNSO_ISH_SE_EE(%"struct.adept::internal::BinaryOperation.54"* nonnull sret %tmp31, %"struct.adept::Expression.57"* nonnull dereferenceable(1) %tmp138, %"struct.adept::Expression.62"* nonnull dereferenceable(1) %tmp145)
          to label %bb365 unwind label %bb377

bb365:                                            ; preds = %bb362
  invoke void @_ZN5adeptmlINS_6ActiveIdEENS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS_15ActiveReferenceIdEENS3_3AddES6_EES7_S6_EES7_S6_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiNS3_8MultiplyES6_EEEEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINSH_4typeENSI_4typeEE4typeESH_SD_SI_EEE4typeERKNS_10ExpressionISK_SH_EERKNSR_ISL_SI_EE(%"struct.adept::internal::BinaryOperation.52"* nonnull sret %tmp30, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp86, %"struct.adept::Expression.55"* nonnull dereferenceable(1) %tmp146)
          to label %bb366 unwind label %bb377

bb366:                                            ; preds = %bb365
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSI_4typeENSJ_4typeEE4typeESI_S8_SJ_EEE4typeERKNS_10ExpressionISL_SI_EERKNSS_ISM_SJ_EE(%"struct.adept::internal::BinaryOperation.50"* nonnull sret %tmp29, %"struct.adept::Expression.53"* nonnull dereferenceable(1) %tmp147, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp148)
          to label %bb367 unwind label %bb377

bb367:                                            ; preds = %bb366
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE(%"struct.adept::internal::BinaryOperation.48"* nonnull sret %tmp28, %"struct.adept::Expression.51"* nonnull dereferenceable(1) %tmp149, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp150)
          to label %bb368 unwind label %bb377

bb368:                                            ; preds = %bb367
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp152) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp153) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp155) #4
  store i32 1, i32* %tmp44, align 4, !tbaa !34
  %tmp369 = invoke { %"class.adept::Active"*, i32 } @_ZN5adeptplINS_6ActiveIdEEiEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_3AddES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp154, i32* nonnull dereferenceable(4) %tmp44)
          to label %bb370 unwind label %bb381

bb370:                                            ; preds = %bb368
  %tmp371 = extractvalue { %"class.adept::Active"*, i32 } %tmp369, 0
  store %"class.adept::Active"* %tmp371, %"class.adept::Active"** %tmp156, align 8
  %tmp372 = extractvalue { %"class.adept::Active"*, i32 } %tmp369, 1
  store i32 %tmp372, i32* %tmp157, align 8
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp158) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp45, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp268)
          to label %bb385 unwind label %bb399

bb373:                                            ; preds = %bb351
  %tmp374 = landingpad { i8*, i32 }
          cleanup
  %tmp375 = extractvalue { i8*, i32 } %tmp374, 0
  %tmp376 = extractvalue { i8*, i32 } %tmp374, 1
  br label %bb465

bb377:                                            ; preds = %bb367, %bb366, %bb365, %bb362, %bb360
  %tmp378 = landingpad { i8*, i32 }
          cleanup
  %tmp379 = extractvalue { i8*, i32 } %tmp378, 0
  %tmp380 = extractvalue { i8*, i32 } %tmp378, 1
  br label %bb462

bb381:                                            ; preds = %bb368
  %tmp382 = landingpad { i8*, i32 }
          cleanup
  %tmp383 = extractvalue { i8*, i32 } %tmp382, 0
  %tmp384 = extractvalue { i8*, i32 } %tmp382, 1
  br label %bb459

bb385:                                            ; preds = %bb370
  %tmp386 = invoke { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS_15ActiveReferenceIdEEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINSA_4typeENSB_4typeEE4typeESA_NS1_8MultiplyESB_EEE4typeERKNS_10ExpressionISE_SA_EERKNSM_ISF_SB_EE(%"struct.adept::Expression.66"* nonnull dereferenceable(1) %tmp159, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp160)
          to label %bb387 unwind label %bb403

bb387:                                            ; preds = %bb385
  %tmp388 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } %tmp386, 0
  store %"struct.adept::internal::BinaryOpScalarRight"* %tmp388, %"struct.adept::internal::BinaryOpScalarRight"** %tmp161, align 8
  %tmp389 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } %tmp386, 1
  store %"class.adept::ActiveReference"* %tmp389, %"class.adept::ActiveReference"** %tmp162, align 8
  invoke void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EENS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSN_4typeENSO_4typeEE4typeESN_SC_SO_EEE4typeERKNS_10ExpressionISQ_SN_EERKNSX_ISR_SO_EE(%"struct.adept::internal::BinaryOperation.46"* nonnull sret %tmp27, %"struct.adept::Expression.49"* nonnull dereferenceable(1) %tmp151, %"struct.adept::Expression.65"* nonnull dereferenceable(1) %tmp163)
          to label %bb390 unwind label %bb403

bb390:                                            ; preds = %bb387
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp165) #4
  invoke void @_ZN5adept6ActiveIdEC2ERKS1_(%"class.adept::Active"* nonnull %tmp47, %"class.adept::Active"* nonnull dereferenceable(16) %tmp16)
          to label %bb391 unwind label %bb407

bb391:                                            ; preds = %bb390
  invoke void @_ZN5adept6ActiveIdEC2ERKS1_(%"class.adept::Active"* nonnull %tmp48, %"class.adept::Active"* nonnull dereferenceable(16) %tmp18)
          to label %bb392 unwind label %bb411

bb392:                                            ; preds = %bb391
  invoke void @_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* nonnull %tmp49, double* nonnull dereferenceable(8) %tmp, i8* null)
          to label %bb393 unwind label %bb415

bb393:                                            ; preds = %bb392
  invoke void @_Z13brusselator_fIN5adept6ActiveIdEEET_S3_S3_S3_(%"class.adept::Active"* nonnull sret %tmp46, %"class.adept::Active"* nonnull %tmp47, %"class.adept::Active"* nonnull %tmp48, %"class.adept::Active"* nonnull %tmp49)
          to label %bb394 unwind label %bb419

bb394:                                            ; preds = %bb393
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSO_4typeENSP_4typeEE4typeESO_S8_SP_EEE4typeERKNS_10ExpressionISR_SO_EERKNSY_ISS_SP_EE(%"struct.adept::internal::BinaryOperation.44"* nonnull sret %tmp26, %"struct.adept::Expression.47"* nonnull dereferenceable(1) %tmp164, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp166)
          to label %bb395 unwind label %bb423

bb395:                                            ; preds = %bb394
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp167) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp50, %"class.adept::Array.32"* nonnull %arg, i32 %tmp268)
          to label %bb396 unwind label %bb427

bb396:                                            ; preds = %bb395
  %tmp397 = invoke dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_S6_EES8_S6_EESC_NS4_IdNS3_19BinaryOpScalarRightIdS6_S8_iEES7_S1_EEEES8_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSP_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SP_EE(%"class.adept::ActiveReference"* nonnull %tmp50, %"struct.adept::Expression.45"* nonnull dereferenceable(1) %tmp168)
          to label %bb398 unwind label %bb431

bb398:                                            ; preds = %bb396
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp50) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp167) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp46) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp49) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp48) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp47) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp165) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp45) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp158) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp155) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp153) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp152) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp41) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp141) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp140) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp139) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp38) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp135) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp37) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp132) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp36) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp127) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp35) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp126) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp125) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp124) #4
  call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %tmp123) #4
  call void @llvm.lifetime.end.p0i8(i64 56, i8* nonnull %tmp122) #4
  call void @llvm.lifetime.end.p0i8(i64 64, i8* nonnull %tmp121) #4
  call void @llvm.lifetime.end.p0i8(i64 72, i8* nonnull %tmp120) #4
  call void @llvm.lifetime.end.p0i8(i64 88, i8* nonnull %tmp119) #4
  call void @llvm.lifetime.end.p0i8(i64 104, i8* nonnull %tmp118) #4
  call void @llvm.lifetime.end.p0i8(i64 120, i8* nonnull %tmp117) #4
  call void @llvm.lifetime.start.p0i8(i64 88, i8* nonnull %tmp169) #4
  call void @llvm.lifetime.start.p0i8(i64 80, i8* nonnull %tmp170) #4
  call void @llvm.lifetime.start.p0i8(i64 64, i8* nonnull %tmp171) #4
  call void @llvm.lifetime.start.p0i8(i64 56, i8* nonnull %tmp172) #4
  call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %tmp173) #4
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp174) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp175) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp176) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp58, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp298)
          to label %bb489 unwind label %bb490

bb399:                                            ; preds = %bb370
  %tmp400 = landingpad { i8*, i32 }
          cleanup
  %tmp401 = extractvalue { i8*, i32 } %tmp400, 0
  %tmp402 = extractvalue { i8*, i32 } %tmp400, 1
  br label %bb456

bb403:                                            ; preds = %bb387, %bb385
  %tmp404 = landingpad { i8*, i32 }
          cleanup
  %tmp405 = extractvalue { i8*, i32 } %tmp404, 0
  %tmp406 = extractvalue { i8*, i32 } %tmp404, 1
  br label %bb453

bb407:                                            ; preds = %bb390
  %tmp408 = landingpad { i8*, i32 }
          cleanup
  %tmp409 = extractvalue { i8*, i32 } %tmp408, 0
  %tmp410 = extractvalue { i8*, i32 } %tmp408, 1
  br label %bb450

bb411:                                            ; preds = %bb391
  %tmp412 = landingpad { i8*, i32 }
          cleanup
  %tmp413 = extractvalue { i8*, i32 } %tmp412, 0
  %tmp414 = extractvalue { i8*, i32 } %tmp412, 1
  br label %bb447

bb415:                                            ; preds = %bb392
  %tmp416 = landingpad { i8*, i32 }
          cleanup
  %tmp417 = extractvalue { i8*, i32 } %tmp416, 0
  %tmp418 = extractvalue { i8*, i32 } %tmp416, 1
  br label %bb444

bb419:                                            ; preds = %bb393
  %tmp420 = landingpad { i8*, i32 }
          cleanup
  %tmp421 = extractvalue { i8*, i32 } %tmp420, 0
  %tmp422 = extractvalue { i8*, i32 } %tmp420, 1
  br label %bb441

bb423:                                            ; preds = %bb394
  %tmp424 = landingpad { i8*, i32 }
          cleanup
  %tmp425 = extractvalue { i8*, i32 } %tmp424, 0
  %tmp426 = extractvalue { i8*, i32 } %tmp424, 1
  br label %bb438

bb427:                                            ; preds = %bb395
  %tmp428 = landingpad { i8*, i32 }
          cleanup
  %tmp429 = extractvalue { i8*, i32 } %tmp428, 0
  %tmp430 = extractvalue { i8*, i32 } %tmp428, 1
  br label %bb435

bb431:                                            ; preds = %bb396
  %tmp432 = landingpad { i8*, i32 }
          cleanup
  %tmp433 = extractvalue { i8*, i32 } %tmp432, 0
  %tmp434 = extractvalue { i8*, i32 } %tmp432, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp50) #4
  br label %bb435

bb435:                                            ; preds = %bb431, %bb427
  %tmp436 = phi i32 [ %tmp434, %bb431 ], [ %tmp430, %bb427 ]
  %tmp437 = phi i8* [ %tmp433, %bb431 ], [ %tmp429, %bb427 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp167) #4
  br label %bb438

bb438:                                            ; preds = %bb435, %bb423
  %tmp439 = phi i32 [ %tmp436, %bb435 ], [ %tmp426, %bb423 ]
  %tmp440 = phi i8* [ %tmp437, %bb435 ], [ %tmp425, %bb423 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp46) #4
  br label %bb441

bb441:                                            ; preds = %bb438, %bb419
  %tmp442 = phi i32 [ %tmp439, %bb438 ], [ %tmp422, %bb419 ]
  %tmp443 = phi i8* [ %tmp440, %bb438 ], [ %tmp421, %bb419 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp49) #4
  br label %bb444

bb444:                                            ; preds = %bb441, %bb415
  %tmp445 = phi i32 [ %tmp442, %bb441 ], [ %tmp418, %bb415 ]
  %tmp446 = phi i8* [ %tmp443, %bb441 ], [ %tmp417, %bb415 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp48) #4
  br label %bb447

bb447:                                            ; preds = %bb444, %bb411
  %tmp448 = phi i32 [ %tmp445, %bb444 ], [ %tmp414, %bb411 ]
  %tmp449 = phi i8* [ %tmp446, %bb444 ], [ %tmp413, %bb411 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp47) #4
  br label %bb450

bb450:                                            ; preds = %bb447, %bb407
  %tmp451 = phi i32 [ %tmp448, %bb447 ], [ %tmp410, %bb407 ]
  %tmp452 = phi i8* [ %tmp449, %bb447 ], [ %tmp409, %bb407 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp165) #4
  br label %bb453

bb453:                                            ; preds = %bb450, %bb403
  %tmp454 = phi i32 [ %tmp451, %bb450 ], [ %tmp406, %bb403 ]
  %tmp455 = phi i8* [ %tmp452, %bb450 ], [ %tmp405, %bb403 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp45) #4
  br label %bb456

bb456:                                            ; preds = %bb453, %bb399
  %tmp457 = phi i32 [ %tmp454, %bb453 ], [ %tmp402, %bb399 ]
  %tmp458 = phi i8* [ %tmp455, %bb453 ], [ %tmp401, %bb399 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp158) #4
  br label %bb459

bb459:                                            ; preds = %bb456, %bb381
  %tmp460 = phi i32 [ %tmp457, %bb456 ], [ %tmp384, %bb381 ]
  %tmp461 = phi i8* [ %tmp458, %bb456 ], [ %tmp383, %bb381 ]
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp155) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp153) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp152) #4
  br label %bb462

bb462:                                            ; preds = %bb459, %bb377
  %tmp463 = phi i32 [ %tmp460, %bb459 ], [ %tmp380, %bb377 ]
  %tmp464 = phi i8* [ %tmp461, %bb459 ], [ %tmp379, %bb377 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp41) #4
  br label %bb465

bb465:                                            ; preds = %bb462, %bb373
  %tmp466 = phi i32 [ %tmp463, %bb462 ], [ %tmp376, %bb373 ]
  %tmp467 = phi i8* [ %tmp464, %bb462 ], [ %tmp375, %bb373 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp141) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp140) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp139) #4
  br label %bb468

bb468:                                            ; preds = %bb465, %bb356
  %tmp469 = phi i32 [ %tmp466, %bb465 ], [ %tmp359, %bb356 ]
  %tmp470 = phi i8* [ %tmp467, %bb465 ], [ %tmp358, %bb356 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp38) #4
  br label %bb471

bb471:                                            ; preds = %bb468, %bb352
  %tmp472 = phi i32 [ %tmp469, %bb468 ], [ %tmp355, %bb352 ]
  %tmp473 = phi i8* [ %tmp470, %bb468 ], [ %tmp354, %bb352 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp135) #4
  br label %bb474

bb474:                                            ; preds = %bb471, %bb344
  %tmp475 = phi i32 [ %tmp472, %bb471 ], [ %tmp347, %bb344 ]
  %tmp476 = phi i8* [ %tmp473, %bb471 ], [ %tmp346, %bb344 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp37) #4
  br label %bb477

bb477:                                            ; preds = %bb474, %bb340
  %tmp478 = phi i32 [ %tmp475, %bb474 ], [ %tmp343, %bb340 ]
  %tmp479 = phi i8* [ %tmp476, %bb474 ], [ %tmp342, %bb340 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp132) #4
  br label %bb480

bb480:                                            ; preds = %bb477, %bb331
  %tmp481 = phi i32 [ %tmp478, %bb477 ], [ %tmp334, %bb331 ]
  %tmp482 = phi i8* [ %tmp479, %bb477 ], [ %tmp333, %bb331 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp36) #4
  br label %bb483

bb483:                                            ; preds = %bb480, %bb327
  %tmp484 = phi i32 [ %tmp481, %bb480 ], [ %tmp330, %bb327 ]
  %tmp485 = phi i8* [ %tmp482, %bb480 ], [ %tmp329, %bb327 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp127) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp35) #4
  br label %bb486

bb486:                                            ; preds = %bb483, %bb321
  %tmp487 = phi i32 [ %tmp484, %bb483 ], [ %tmp324, %bb321 ]
  %tmp488 = phi i8* [ %tmp485, %bb483 ], [ %tmp323, %bb321 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp126) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp125) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp124) #4
  call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %tmp123) #4
  call void @llvm.lifetime.end.p0i8(i64 56, i8* nonnull %tmp122) #4
  call void @llvm.lifetime.end.p0i8(i64 64, i8* nonnull %tmp121) #4
  call void @llvm.lifetime.end.p0i8(i64 72, i8* nonnull %tmp120) #4
  call void @llvm.lifetime.end.p0i8(i64 88, i8* nonnull %tmp119) #4
  call void @llvm.lifetime.end.p0i8(i64 104, i8* nonnull %tmp118) #4
  call void @llvm.lifetime.end.p0i8(i64 120, i8* nonnull %tmp117) #4
  br label %bb605

bb489:                                            ; preds = %bb398
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp177) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp59, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp320)
          to label %bb494 unwind label %bb499

bb490:                                            ; preds = %bb398
  %tmp491 = landingpad { i8*, i32 }
          cleanup
  %tmp492 = extractvalue { i8*, i32 } %tmp491, 0
  %tmp493 = extractvalue { i8*, i32 } %tmp491, 1
  br label %bb602

bb494:                                            ; preds = %bb489
  %tmp495 = invoke { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } @_ZN5adeptplINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_3AddES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp178, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp179)
          to label %bb496 unwind label %bb503

bb496:                                            ; preds = %bb494
  %tmp497 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp495, 0
  store %"class.adept::ActiveReference"* %tmp497, %"class.adept::ActiveReference"** %tmp180, align 8
  %tmp498 = extractvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp495, 1
  store %"class.adept::ActiveReference"* %tmp498, %"class.adept::ActiveReference"** %tmp181, align 8
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp182) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp60, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp338)
          to label %bb507 unwind label %bb509

bb499:                                            ; preds = %bb489
  %tmp500 = landingpad { i8*, i32 }
          cleanup
  %tmp501 = extractvalue { i8*, i32 } %tmp500, 0
  %tmp502 = extractvalue { i8*, i32 } %tmp500, 1
  br label %bb599

bb503:                                            ; preds = %bb494
  %tmp504 = landingpad { i8*, i32 }
          cleanup
  %tmp505 = extractvalue { i8*, i32 } %tmp504, 0
  %tmp506 = extractvalue { i8*, i32 } %tmp504, 1
  br label %bb596

bb507:                                            ; preds = %bb496
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE(%"struct.adept::internal::BinaryOperation.58"* nonnull sret %tmp56, %"struct.adept::Expression.61"* nonnull dereferenceable(1) %tmp183, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp184)
          to label %bb508 unwind label %bb513

bb508:                                            ; preds = %bb507
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp185) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp61, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp349)
          to label %bb517 unwind label %bb519

bb509:                                            ; preds = %bb496
  %tmp510 = landingpad { i8*, i32 }
          cleanup
  %tmp511 = extractvalue { i8*, i32 } %tmp510, 0
  %tmp512 = extractvalue { i8*, i32 } %tmp510, 1
  br label %bb593

bb513:                                            ; preds = %bb507
  %tmp514 = landingpad { i8*, i32 }
          cleanup
  %tmp515 = extractvalue { i8*, i32 } %tmp514, 0
  %tmp516 = extractvalue { i8*, i32 } %tmp514, 1
  br label %bb590

bb517:                                            ; preds = %bb508
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS9_4typeENSA_4typeEE4typeES9_S5_SA_EEE4typeERKNS_10ExpressionISC_S9_EERKNSJ_ISD_SA_EE(%"struct.adept::internal::BinaryOperation.56"* nonnull sret %tmp55, %"struct.adept::Expression.59"* nonnull dereferenceable(1) %tmp186, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp187)
          to label %bb518 unwind label %bb523

bb518:                                            ; preds = %bb517
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp189) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp190) #4
  store i32 4, i32* %tmp63, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp191) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp64, %"class.adept::Array.32"* nonnull %arg3, i32 %tmp268)
          to label %bb527 unwind label %bb534

bb519:                                            ; preds = %bb508
  %tmp520 = landingpad { i8*, i32 }
          cleanup
  %tmp521 = extractvalue { i8*, i32 } %tmp520, 0
  %tmp522 = extractvalue { i8*, i32 } %tmp520, 1
  br label %bb587

bb523:                                            ; preds = %bb517
  %tmp524 = landingpad { i8*, i32 }
          cleanup
  %tmp525 = extractvalue { i8*, i32 } %tmp524, 0
  %tmp526 = extractvalue { i8*, i32 } %tmp524, 1
  br label %bb584

bb527:                                            ; preds = %bb518
  %tmp528 = invoke { i32, %"class.adept::ActiveReference"* } @_ZN5adeptmlIiNS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT_EE5valueENS3_18BinaryOpScalarLeftINS3_7promoteIS5_NT0_4typeEE4typeES5_NS3_8MultiplyES8_EEE4typeERKS5_RKNS_10ExpressionIS9_S8_EE(i32* nonnull dereferenceable(4) %tmp63, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp192)
          to label %bb529 unwind label %bb538

bb529:                                            ; preds = %bb527
  %tmp530 = extractvalue { i32, %"class.adept::ActiveReference"* } %tmp528, 0
  store i32 %tmp530, i32* %tmp193, align 8
  %tmp531 = extractvalue { i32, %"class.adept::ActiveReference"* } %tmp528, 1
  store %"class.adept::ActiveReference"* %tmp531, %"class.adept::ActiveReference"** %tmp194, align 8
  invoke void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSD_4typeENSE_4typeEE4typeESD_NS1_8SubtractESE_EEE4typeERKNS_10ExpressionISG_SD_EERKNSO_ISH_SE_EE(%"struct.adept::internal::BinaryOperation.54"* nonnull sret %tmp54, %"struct.adept::Expression.57"* nonnull dereferenceable(1) %tmp188, %"struct.adept::Expression.62"* nonnull dereferenceable(1) %tmp195)
          to label %bb532 unwind label %bb538

bb532:                                            ; preds = %bb529
  invoke void @_ZN5adeptmlINS_6ActiveIdEENS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS_15ActiveReferenceIdEENS3_3AddES6_EES7_S6_EES7_S6_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiNS3_8MultiplyES6_EEEEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINSH_4typeENSI_4typeEE4typeESH_SD_SI_EEE4typeERKNS_10ExpressionISK_SH_EERKNSR_ISL_SI_EE(%"struct.adept::internal::BinaryOperation.52"* nonnull sret %tmp53, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp86, %"struct.adept::Expression.55"* nonnull dereferenceable(1) %tmp196)
          to label %bb533 unwind label %bb538

bb533:                                            ; preds = %bb532
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp198) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp199) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp66, %"class.adept::Array.32"* nonnull %arg2, i32 %tmp268)
          to label %bb542 unwind label %bb553

bb534:                                            ; preds = %bb518
  %tmp535 = landingpad { i8*, i32 }
          cleanup
  %tmp536 = extractvalue { i8*, i32 } %tmp535, 0
  %tmp537 = extractvalue { i8*, i32 } %tmp535, 1
  br label %bb581

bb538:                                            ; preds = %bb532, %bb529, %bb527
  %tmp539 = landingpad { i8*, i32 }
          cleanup
  %tmp540 = extractvalue { i8*, i32 } %tmp539, 0
  %tmp541 = extractvalue { i8*, i32 } %tmp539, 1
  br label %bb578

bb542:                                            ; preds = %bb533
  %tmp543 = invoke { %"class.adept::Active"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_6ActiveIdEENS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS5_15BinaryOperationINS5_7promoteINS7_4typeENS8_4typeEE4typeES7_NS5_8MultiplyES8_EEE4typeERKNS_10ExpressionISB_S7_EERKNSJ_ISC_S8_EE(%"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp154, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp200)
          to label %bb544 unwind label %bb557

bb544:                                            ; preds = %bb542
  %tmp545 = extractvalue { %"class.adept::Active"*, %"class.adept::ActiveReference"* } %tmp543, 0
  store %"class.adept::Active"* %tmp545, %"class.adept::Active"** %tmp201, align 8
  %tmp546 = extractvalue { %"class.adept::Active"*, %"class.adept::ActiveReference"* } %tmp543, 1
  store %"class.adept::ActiveReference"* %tmp546, %"class.adept::ActiveReference"** %tmp202, align 8
  invoke void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEENS2_IdS4_S5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE(%"struct.adept::internal::BinaryOperation.69"* nonnull sret %tmp52, %"struct.adept::Expression.53"* nonnull dereferenceable(1) %tmp197, %"struct.adept::Expression.72"* nonnull dereferenceable(1) %tmp203)
          to label %bb547 unwind label %bb557

bb547:                                            ; preds = %bb544
  invoke void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSK_4typeENSL_4typeEE4typeESK_SC_SL_EEE4typeERKNS_10ExpressionISN_SK_EERKNSU_ISO_SL_EE(%"struct.adept::internal::BinaryOperation.67"* nonnull sret %tmp51, %"struct.adept::Expression.70"* nonnull dereferenceable(1) %tmp204, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp150)
          to label %bb548 unwind label %bb557

bb548:                                            ; preds = %bb547
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp205) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp67, %"class.adept::Array.32"* nonnull %arg1, i32 %tmp268)
          to label %bb549 unwind label %bb561

bb549:                                            ; preds = %bb548
  %tmp550 = invoke dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_NS4_IdS6_S7_S1_EEEESC_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSL_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SL_EE(%"class.adept::ActiveReference"* nonnull %tmp67, %"struct.adept::Expression.68"* nonnull dereferenceable(1) %tmp206)
          to label %bb551 unwind label %bb565

bb551:                                            ; preds = %bb549
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp67) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp205) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp66) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp199) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp198) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp64) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp191) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp190) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp189) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp61) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp185) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp60) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp182) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp59) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp177) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp58) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp176) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp175) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp174) #4
  call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %tmp173) #4
  call void @llvm.lifetime.end.p0i8(i64 56, i8* nonnull %tmp172) #4
  call void @llvm.lifetime.end.p0i8(i64 64, i8* nonnull %tmp171) #4
  call void @llvm.lifetime.end.p0i8(i64 80, i8* nonnull %tmp170) #4
  call void @llvm.lifetime.end.p0i8(i64 88, i8* nonnull %tmp169) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp20) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp104) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp18) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp102) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp100) #4
  %tmp552 = icmp ult i32 %tmp263, 32
  br i1 %tmp552, label %bb256, label %bb253

bb553:                                            ; preds = %bb533
  %tmp554 = landingpad { i8*, i32 }
          cleanup
  %tmp555 = extractvalue { i8*, i32 } %tmp554, 0
  %tmp556 = extractvalue { i8*, i32 } %tmp554, 1
  br label %bb575

bb557:                                            ; preds = %bb547, %bb544, %bb542
  %tmp558 = landingpad { i8*, i32 }
          cleanup
  %tmp559 = extractvalue { i8*, i32 } %tmp558, 0
  %tmp560 = extractvalue { i8*, i32 } %tmp558, 1
  br label %bb572

bb561:                                            ; preds = %bb548
  %tmp562 = landingpad { i8*, i32 }
          cleanup
  %tmp563 = extractvalue { i8*, i32 } %tmp562, 0
  %tmp564 = extractvalue { i8*, i32 } %tmp562, 1
  br label %bb569

bb565:                                            ; preds = %bb549
  %tmp566 = landingpad { i8*, i32 }
          cleanup
  %tmp567 = extractvalue { i8*, i32 } %tmp566, 0
  %tmp568 = extractvalue { i8*, i32 } %tmp566, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp67) #4
  br label %bb569

bb569:                                            ; preds = %bb565, %bb561
  %tmp570 = phi i32 [ %tmp568, %bb565 ], [ %tmp564, %bb561 ]
  %tmp571 = phi i8* [ %tmp567, %bb565 ], [ %tmp563, %bb561 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp205) #4
  br label %bb572

bb572:                                            ; preds = %bb569, %bb557
  %tmp573 = phi i32 [ %tmp570, %bb569 ], [ %tmp560, %bb557 ]
  %tmp574 = phi i8* [ %tmp571, %bb569 ], [ %tmp559, %bb557 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp66) #4
  br label %bb575

bb575:                                            ; preds = %bb572, %bb553
  %tmp576 = phi i32 [ %tmp573, %bb572 ], [ %tmp556, %bb553 ]
  %tmp577 = phi i8* [ %tmp574, %bb572 ], [ %tmp555, %bb553 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp199) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp198) #4
  br label %bb578

bb578:                                            ; preds = %bb575, %bb538
  %tmp579 = phi i32 [ %tmp576, %bb575 ], [ %tmp541, %bb538 ]
  %tmp580 = phi i8* [ %tmp577, %bb575 ], [ %tmp540, %bb538 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp64) #4
  br label %bb581

bb581:                                            ; preds = %bb578, %bb534
  %tmp582 = phi i32 [ %tmp579, %bb578 ], [ %tmp537, %bb534 ]
  %tmp583 = phi i8* [ %tmp580, %bb578 ], [ %tmp536, %bb534 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp191) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp190) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp189) #4
  br label %bb584

bb584:                                            ; preds = %bb581, %bb523
  %tmp585 = phi i32 [ %tmp582, %bb581 ], [ %tmp526, %bb523 ]
  %tmp586 = phi i8* [ %tmp583, %bb581 ], [ %tmp525, %bb523 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp61) #4
  br label %bb587

bb587:                                            ; preds = %bb584, %bb519
  %tmp588 = phi i32 [ %tmp585, %bb584 ], [ %tmp522, %bb519 ]
  %tmp589 = phi i8* [ %tmp586, %bb584 ], [ %tmp521, %bb519 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp185) #4
  br label %bb590

bb590:                                            ; preds = %bb587, %bb513
  %tmp591 = phi i32 [ %tmp588, %bb587 ], [ %tmp516, %bb513 ]
  %tmp592 = phi i8* [ %tmp589, %bb587 ], [ %tmp515, %bb513 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp60) #4
  br label %bb593

bb593:                                            ; preds = %bb590, %bb509
  %tmp594 = phi i32 [ %tmp591, %bb590 ], [ %tmp512, %bb509 ]
  %tmp595 = phi i8* [ %tmp592, %bb590 ], [ %tmp511, %bb509 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp182) #4
  br label %bb596

bb596:                                            ; preds = %bb593, %bb503
  %tmp597 = phi i32 [ %tmp594, %bb593 ], [ %tmp506, %bb503 ]
  %tmp598 = phi i8* [ %tmp595, %bb593 ], [ %tmp505, %bb503 ]
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp59) #4
  br label %bb599

bb599:                                            ; preds = %bb596, %bb499
  %tmp600 = phi i32 [ %tmp597, %bb596 ], [ %tmp502, %bb499 ]
  %tmp601 = phi i8* [ %tmp598, %bb596 ], [ %tmp501, %bb499 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp177) #4
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp58) #4
  br label %bb602

bb602:                                            ; preds = %bb599, %bb490
  %tmp603 = phi i32 [ %tmp600, %bb599 ], [ %tmp493, %bb490 ]
  %tmp604 = phi i8* [ %tmp601, %bb599 ], [ %tmp492, %bb490 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp176) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp175) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp174) #4
  call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %tmp173) #4
  call void @llvm.lifetime.end.p0i8(i64 56, i8* nonnull %tmp172) #4
  call void @llvm.lifetime.end.p0i8(i64 64, i8* nonnull %tmp171) #4
  call void @llvm.lifetime.end.p0i8(i64 80, i8* nonnull %tmp170) #4
  call void @llvm.lifetime.end.p0i8(i64 88, i8* nonnull %tmp169) #4
  br label %bb605

bb605:                                            ; preds = %bb602, %bb486
  %tmp606 = phi i32 [ %tmp603, %bb602 ], [ %tmp487, %bb486 ]
  %tmp607 = phi i8* [ %tmp604, %bb602 ], [ %tmp488, %bb486 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp20) #4
  br label %bb608

bb608:                                            ; preds = %bb605, %bb316
  %tmp609 = phi i32 [ %tmp606, %bb605 ], [ %tmp317, %bb316 ]
  %tmp610 = phi i8* [ %tmp607, %bb605 ], [ %tmp318, %bb316 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp104) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp18) #4
  br label %bb611

bb611:                                            ; preds = %bb608, %bb273
  %tmp612 = phi i32 [ %tmp609, %bb608 ], [ %tmp276, %bb273 ]
  %tmp613 = phi i8* [ %tmp610, %bb608 ], [ %tmp275, %bb273 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp102) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp16) #4
  br label %bb614

bb614:                                            ; preds = %bb611, %bb269
  %tmp615 = phi i32 [ %tmp612, %bb611 ], [ %tmp272, %bb269 ]
  %tmp616 = phi i8* [ %tmp613, %bb611 ], [ %tmp271, %bb269 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp100) #4
  br label %bb617

bb617:                                            ; preds = %bb614, %bb249
  %tmp618 = phi i32 [ %tmp615, %bb614 ], [ %tmp252, %bb249 ]
  %tmp619 = phi i8* [ %tmp616, %bb614 ], [ %tmp251, %bb249 ]
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp12) #4
  br label %bb620

bb620:                                            ; preds = %bb617, %bb245
  %tmp621 = phi i32 [ %tmp618, %bb617 ], [ %tmp248, %bb245 ]
  %tmp622 = phi i8* [ %tmp619, %bb617 ], [ %tmp247, %bb245 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp82) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp10) #4
  br label %bb623

bb623:                                            ; preds = %bb620, %bb242
  %tmp624 = phi i32 [ %tmp621, %bb620 ], [ %tmp243, %bb242 ]
  %tmp625 = phi i8* [ %tmp622, %bb620 ], [ %tmp244, %bb242 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp77) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp8) #4
  br label %bb626

bb626:                                            ; preds = %bb623, %bb231
  %tmp627 = phi i32 [ %tmp624, %bb623 ], [ %tmp232, %bb231 ]
  %tmp628 = phi i8* [ %tmp625, %bb623 ], [ %tmp233, %bb231 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp72) #4
  call void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* nonnull %tmp6) #4
  br label %bb629

bb629:                                            ; preds = %bb626, %bb219
  %tmp630 = phi i32 [ %tmp627, %bb626 ], [ %tmp222, %bb219 ]
  %tmp631 = phi i8* [ %tmp628, %bb626 ], [ %tmp221, %bb219 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp68) #4
  %tmp632 = insertvalue { i8*, i32 } undef, i8* %tmp631, 0
  %tmp633 = insertvalue { i8*, i32 } %tmp632, i32 %tmp630, 1
  resume { i8*, i32 } %tmp633
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* noalias sret %arg, %"class.adept::Array.32"* %arg1, i32 %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 3
  %tmp3 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  %tmp4 = load i32, i32* %tmp3, align 4, !tbaa !34
  %tmp5 = tail call i32 @_ZN5adept8internal18get_index_with_lenEii(i32 %arg2, i32 %tmp4)
  %tmp6 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 4
  %tmp7 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp6, i32 0)
  %tmp8 = load i32, i32* %tmp7, align 4, !tbaa !34
  %tmp9 = mul nsw i32 %tmp8, %tmp5
  %tmp10 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 1
  %tmp11 = load double*, double** %tmp10, align 8, !tbaa !67
  %tmp12 = sext i32 %tmp9 to i64
  %tmp13 = getelementptr inbounds double, double* %tmp11, i64 %tmp12
  %tmp14 = tail call i32 @_ZNK5adept5ArrayILi1EdLb1EE14gradient_indexEv(%"class.adept::Array.32"* %arg1)
  %tmp15 = add nsw i32 %tmp14, %tmp9
  tail call void @_ZN5adept15ActiveReferenceIdEC2ERdi(%"class.adept::ActiveReference"* %arg, double* dereferenceable(8) %tmp13, i32 %tmp15)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdEC2IdNS_15ActiveReferenceIdEEEERKNS_10ExpressionIT_T0_EEPNS_8internal9enable_ifIXaaeqsrS7_4rankLi0EsrS7_9is_activeEvE4typeE(%"class.adept::Active"* %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1, i8* %arg2) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  %tmp3 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp4 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp3, align 8, !tbaa !18
  %tmp5 = tail call i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %tmp4)
  store i32 %tmp5, i32* %tmp, align 8, !tbaa !69
  %tmp6 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp7 = bitcast %"class.adept::Stack"** %tmp6 to %"class.adept::internal::StackStorageOrig"**
  %tmp8 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp7, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi1EEEvv(%"class.adept::internal::StackStorageOrig"* %tmp8)
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp9, align 8, !tbaa !18
  %tmp11 = tail call fast double @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.36"* nonnull %arg1, %"class.adept::Stack"* dereferenceable(152) %tmp10)
  %tmp12 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  store double %tmp11, double* %tmp12, align 8, !tbaa !71
  %tmp13 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp14 = bitcast %"class.adept::Stack"** %tmp13 to %"class.adept::internal::StackStorageOrig"**
  %tmp15 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp14, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp15, i32* nonnull dereferenceable(4) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdEC2IdEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* %arg, double* dereferenceable(8) %arg1, i8* %arg2) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast double* %arg1 to i64*
  %tmp3 = load i64, i64* %tmp, align 8, !tbaa !31
  %tmp4 = bitcast %"class.adept::Active"* %arg to i64*
  store i64 %tmp3, i64* %tmp4, align 8, !tbaa !71
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  %tmp6 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp7 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp6, align 8, !tbaa !18
  %tmp8 = tail call i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %tmp7)
  store i32 %tmp8, i32* %tmp5, align 8, !tbaa !69
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = bitcast %"class.adept::Stack"** %tmp9 to %"class.adept::internal::StackStorageOrig"**
  %tmp11 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp10, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp11, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptdvINS_6ActiveIdEENS_8internal15BinaryOperationIdS2_NS3_8MultiplyES2_EEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINS8_4typeENS9_4typeEE4typeES8_NS3_6DivideES9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSJ_ISC_S9_EE(%"struct.adept::internal::BinaryOperation"* noalias sret %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.39"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  %tmp3 = bitcast %"class.adept::Active"* %tmp to %"struct.adept::Expression.35"*
  %tmp4 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.38"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.39"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.38"* %tmp4 to %"struct.adept::Expression.39"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE(%"struct.adept::internal::BinaryOperation"* %arg, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.39"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"class.adept::Active"*, %"class.adept::Active"* } @_ZN5adeptmlINS_6ActiveIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.35"* dereferenceable(1) %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.38", align 8
  %tmp2 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg)
  %tmp3 = bitcast %"class.adept::Active"* %tmp2 to %"struct.adept::Expression.35"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  %tmp5 = bitcast %"class.adept::Active"* %tmp4 to %"struct.adept::Expression.35"*
  call void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.38"* nonnull %tmp, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %tmp, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8
  %tmp8 = insertvalue { %"class.adept::Active"*, %"class.adept::Active"* } undef, %"class.adept::Active"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %tmp, i64 0, i32 1
  %tmp10 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp9, align 8
  %tmp11 = insertvalue { %"class.adept::Active"*, %"class.adept::Active"* } %tmp8, %"class.adept::Active"* %tmp10, 1
  ret { %"class.adept::Active"*, %"class.adept::Active"* } %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::Active"* @_ZN5adept6ActiveIdEaSIdNS_8internal15BinaryOperationIdS1_NS3_6DivideENS4_IdS1_NS3_8MultiplyES1_EEEEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSA_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SA_EE(%"class.adept::Active"* %arg, %"struct.adept::Expression.37"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp2 = bitcast %"class.adept::Stack"** %tmp to %"class.adept::internal::StackStorageOrig"**
  %tmp3 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp2, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi3EEEvv(%"class.adept::internal::StackStorageOrig"* %tmp3)
  %tmp4 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp5 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp4, align 8, !tbaa !18
  %tmp6 = tail call fast double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.37"* nonnull %arg1, %"class.adept::Stack"* dereferenceable(152) %tmp5)
  %tmp7 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  store double %tmp6, double* %tmp7, align 8, !tbaa !71
  %tmp8 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = bitcast %"class.adept::Stack"** %tmp8 to %"class.adept::internal::StackStorageOrig"**
  %tmp10 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp9, align 8, !tbaa !18
  %tmp11 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp10, i32* nonnull dereferenceable(4) %tmp11)
  ret %"class.adept::Active"* %arg
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptmlINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE(%"struct.adept::internal::BinaryOperation.40"* noalias sret %arg, %"struct.adept::Expression.43"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.42"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.43"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.42"* %tmp to %"struct.adept::Expression.43"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"struct.adept::Expression.43"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_8MultiplyES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.36"* dereferenceable(1) %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.42", align 8
  %tmp2 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg)
  %tmp3 = bitcast %"class.adept::ActiveReference"* %tmp2 to %"struct.adept::Expression.36"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  call void @_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.42"* nonnull %tmp, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %tmp, i64 0, i32 0
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8
  %tmp8 = insertvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } undef, %"class.adept::ActiveReference"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %tmp, i64 0, i32 1
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8
  %tmp11 = insertvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp8, %"class.adept::ActiveReference"* %tmp10, 1
  ret { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdEC2IdNS_8internal15BinaryOperationIdNS4_IdNS_15ActiveReferenceIdEENS3_8MultiplyES6_EES7_S6_EEEERKNS_10ExpressionIT_T0_EEPNS3_9enable_ifIXaaeqsrSC_4rankLi0EsrSC_9is_activeEvE4typeE(%"class.adept::Active"* %arg, %"struct.adept::Expression.41"* dereferenceable(1) %arg1, i8* %arg2) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  %tmp3 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp4 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp3, align 8, !tbaa !18
  %tmp5 = tail call i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %tmp4)
  store i32 %tmp5, i32* %tmp, align 8, !tbaa !69
  %tmp6 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp7 = bitcast %"class.adept::Stack"** %tmp6 to %"class.adept::internal::StackStorageOrig"**
  %tmp8 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp7, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi3EEEvv(%"class.adept::internal::StackStorageOrig"* %tmp8)
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp9, align 8, !tbaa !18
  %tmp11 = tail call fast double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.41"* nonnull %arg1, %"class.adept::Stack"* dereferenceable(152) %tmp10)
  %tmp12 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  store double %tmp11, double* %tmp12, align 8, !tbaa !71
  %tmp13 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp14 = bitcast %"class.adept::Stack"** %tmp13 to %"class.adept::internal::StackStorageOrig"**
  %tmp15 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp14, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp15, i32* nonnull dereferenceable(4) %tmp)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSO_4typeENSP_4typeEE4typeESO_S8_SP_EEE4typeERKNS_10ExpressionISR_SO_EERKNSY_ISS_SP_EE(%"struct.adept::internal::BinaryOperation.44"* noalias sret %arg, %"struct.adept::Expression.47"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(104) %"struct.adept::internal::BinaryOperation.46"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEEE4castEv(%"struct.adept::Expression.47"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.46"* %tmp to %"struct.adept::Expression.47"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::Active"* %tmp4 to %"struct.adept::Expression.35"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_EC2ERKNS_10ExpressionIdSL_EERKNSN_IdS3_EE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"struct.adept::Expression.47"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EENS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSN_4typeENSO_4typeEE4typeESN_SC_SO_EEE4typeERKNS_10ExpressionISQ_SN_EERKNSX_ISR_SO_EE(%"struct.adept::internal::BinaryOperation.46"* noalias sret %arg, %"struct.adept::Expression.49"* dereferenceable(1) %arg1, %"struct.adept::Expression.65"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(88) %"struct.adept::internal::BinaryOperation.48"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EEE4castEv(%"struct.adept::Expression.49"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.48"* %tmp to %"struct.adept::Expression.49"*
  %tmp4 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.64"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.65"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.64"* %tmp4 to %"struct.adept::Expression.65"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEC2ERKNS_10ExpressionIdSH_EERKNSM_IdSK_EE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"struct.adept::Expression.49"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.65"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE(%"struct.adept::internal::BinaryOperation.48"* noalias sret %arg, %"struct.adept::Expression.51"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(72) %"struct.adept::internal::BinaryOperation.50"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EEE4castEv(%"struct.adept::Expression.51"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.50"* %tmp to %"struct.adept::Expression.51"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::Active"* %tmp4 to %"struct.adept::Expression.35"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EC2ERKNS_10ExpressionIdSG_EERKNSI_IdS3_EE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"struct.adept::Expression.51"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSI_4typeENSJ_4typeEE4typeESI_S8_SJ_EEE4typeERKNS_10ExpressionISL_SI_EERKNSS_ISM_SJ_EE(%"struct.adept::internal::BinaryOperation.50"* noalias sret %arg, %"struct.adept::Expression.53"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(64) %"struct.adept::internal::BinaryOperation.52"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv(%"struct.adept::Expression.53"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp to %"struct.adept::Expression.53"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::Active"* %tmp4 to %"struct.adept::Expression.35"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EC2ERKNS_10ExpressionIdSF_EERKNSH_IdS3_EE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"struct.adept::Expression.53"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptmlINS_6ActiveIdEENS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS_15ActiveReferenceIdEENS3_3AddES6_EES7_S6_EES7_S6_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiNS3_8MultiplyES6_EEEEEENS3_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS4_INS3_7promoteINSH_4typeENSI_4typeEE4typeESH_SD_SI_EEE4typeERKNS_10ExpressionISK_SH_EERKNSR_ISL_SI_EE(%"struct.adept::internal::BinaryOperation.52"* noalias sret %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.55"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  %tmp3 = bitcast %"class.adept::Active"* %tmp to %"struct.adept::Expression.35"*
  %tmp4 = tail call dereferenceable(56) %"struct.adept::internal::BinaryOperation.54"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.55"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.54"* %tmp4 to %"struct.adept::Expression.55"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEC2ERKNS_10ExpressionIdS3_EERKNSG_IdSE_EE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.55"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSD_4typeENSE_4typeEE4typeESD_NS1_8SubtractESE_EEE4typeERKNS_10ExpressionISG_SD_EERKNSO_ISH_SE_EE(%"struct.adept::internal::BinaryOperation.54"* noalias sret %arg, %"struct.adept::Expression.57"* dereferenceable(1) %arg1, %"struct.adept::Expression.62"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(48) %"struct.adept::internal::BinaryOperation.56"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EEE4castEv(%"struct.adept::Expression.57"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.56"* %tmp to %"struct.adept::Expression.57"*
  %tmp4 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOpScalarLeft"* @_ZNK5adept10ExpressionIdNS_8internal18BinaryOpScalarLeftIdiNS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.62"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %tmp4 to %"struct.adept::Expression.62"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS7_EERKNSD_IdSB_EE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"struct.adept::Expression.57"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.62"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS9_4typeENSA_4typeEE4typeES9_S5_SA_EEE4typeERKNS_10ExpressionISC_S9_EERKNSJ_ISD_SA_EE(%"struct.adept::internal::BinaryOperation.56"* noalias sret %arg, %"struct.adept::Expression.59"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(32) %"struct.adept::internal::BinaryOperation.58"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.59"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.58"* %tmp to %"struct.adept::Expression.59"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EC2ERKNS_10ExpressionIdS6_EERKNS8_IdS3_EE(%"struct.adept::internal::BinaryOperation.56"* %arg, %"struct.adept::Expression.59"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINS8_4typeENS9_4typeEE4typeES8_S5_S9_EEE4typeERKNS_10ExpressionISB_S8_EERKNSI_ISC_S9_EE(%"struct.adept::internal::BinaryOperation.58"* noalias sret %arg, %"struct.adept::Expression.61"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.60"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EEE4castEv(%"struct.adept::Expression.61"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp to %"struct.adept::Expression.61"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE(%"struct.adept::internal::BinaryOperation.58"* %arg, %"struct.adept::Expression.61"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } @_ZN5adeptplINS_15ActiveReferenceIdEES2_EENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS3_15BinaryOperationINS3_7promoteINS5_4typeENS6_4typeEE4typeES5_NS3_3AddES6_EEE4typeERKNS_10ExpressionIS9_S5_EERKNSH_ISA_S6_EE(%"struct.adept::Expression.36"* dereferenceable(1) %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.60", align 8
  %tmp2 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg)
  %tmp3 = bitcast %"class.adept::ActiveReference"* %tmp2 to %"struct.adept::Expression.36"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  call void @_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.60"* nonnull %tmp, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp, i64 0, i32 0
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8
  %tmp8 = insertvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } undef, %"class.adept::ActiveReference"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %tmp, i64 0, i32 1
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8
  %tmp11 = insertvalue { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp8, %"class.adept::ActiveReference"* %tmp10, 1
  ret { %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"* } %tmp11
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* noalias sret %arg, %"class.adept::Array.32"* %arg1, i32 %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 3
  %tmp3 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  %tmp4 = load i32, i32* %tmp3, align 4, !tbaa !34
  %tmp5 = tail call i32 @_ZN5adept8internal18get_index_with_lenEii(i32 %arg2, i32 %tmp4)
  %tmp6 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 4
  %tmp7 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp6, i32 0)
  %tmp8 = load i32, i32* %tmp7, align 4, !tbaa !34
  %tmp9 = mul nsw i32 %tmp8, %tmp5
  %tmp10 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg1, i64 0, i32 1
  %tmp11 = load double*, double** %tmp10, align 8, !tbaa !67
  %tmp12 = sext i32 %tmp9 to i64
  %tmp13 = getelementptr inbounds double, double* %tmp11, i64 %tmp12
  %tmp14 = tail call i32 @_ZNK5adept5ArrayILi1EdLb1EE14gradient_indexEv(%"class.adept::Array.32"* %arg1)
  %tmp15 = add nsw i32 %tmp14, %tmp9
  tail call void @_ZN5adept15ActiveReferenceIdEC2ERdi(%"class.adept::ActiveReference"* %arg, double* dereferenceable(8) %tmp13, i32 %tmp15)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { i32, %"class.adept::ActiveReference"* } @_ZN5adeptmlIiNS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT_EE5valueENS3_18BinaryOpScalarLeftINS3_7promoteIS5_NT0_4typeEE4typeES5_NS3_8MultiplyES8_EEE4typeERKS5_RKNS_10ExpressionIS9_S8_EE(i32* dereferenceable(4) %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOpScalarLeft", align 8
  %tmp2 = load i32, i32* %arg, align 4, !tbaa !34
  %tmp3 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  %tmp4 = bitcast %"class.adept::ActiveReference"* %tmp3 to %"struct.adept::Expression.36"*
  call void @_ZN5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEEC2EiRKNS_10ExpressionIdS4_EE(%"struct.adept::internal::BinaryOpScalarLeft"* nonnull %tmp, i32 %tmp2, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp4)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp, i64 0, i32 0, i32 0
  %tmp6 = load i32, i32* %tmp5, align 8
  %tmp7 = insertvalue { i32, %"class.adept::ActiveReference"* } undef, i32 %tmp6, 0
  %tmp8 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %tmp, i64 0, i32 1
  %tmp9 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp8, align 8
  %tmp10 = insertvalue { i32, %"class.adept::ActiveReference"* } %tmp7, %"class.adept::ActiveReference"* %tmp9, 1
  ret { i32, %"class.adept::ActiveReference"* } %tmp10
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS_15ActiveReferenceIdEEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINSA_4typeENSB_4typeEE4typeESA_NS1_8MultiplyESB_EEE4typeERKNS_10ExpressionISE_SA_EERKNSM_ISF_SB_EE(%"struct.adept::Expression.66"* dereferenceable(1) %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.64", align 8
  %tmp2 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOpScalarRight"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEEE4castEv(%"struct.adept::Expression.66"* nonnull %arg)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOpScalarRight"* %tmp2 to %"struct.adept::Expression.66"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  call void @_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS6_EERKNSB_IdS9_EE(%"struct.adept::internal::BinaryOperation.64"* nonnull %tmp, %"struct.adept::Expression.66"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %tmp, i64 0, i32 0
  %tmp7 = load %"struct.adept::internal::BinaryOpScalarRight"*, %"struct.adept::internal::BinaryOpScalarRight"** %tmp6, align 8
  %tmp8 = insertvalue { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } undef, %"struct.adept::internal::BinaryOpScalarRight"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %tmp, i64 0, i32 1
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8
  %tmp11 = insertvalue { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } %tmp8, %"class.adept::ActiveReference"* %tmp10, 1
  ret { %"struct.adept::internal::BinaryOpScalarRight"*, %"class.adept::ActiveReference"* } %tmp11
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"class.adept::Active"*, i32 } @_ZN5adeptplINS_6ActiveIdEEiEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_3AddES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::Expression.35"* dereferenceable(1) %arg, i32* dereferenceable(4) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca { %"class.adept::Active"*, i32 }, align 8
  %tmp2 = bitcast { %"class.adept::Active"*, i32 }* %tmp to %"struct.adept::internal::BinaryOpScalarRight"*
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg)
  %tmp4 = bitcast %"class.adept::Active"* %tmp3 to %"struct.adept::Expression.35"*
  %tmp5 = load i32, i32* %arg1, align 4, !tbaa !34
  call void @_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEC2ERKNS_10ExpressionIdS3_EEi(%"struct.adept::internal::BinaryOpScalarRight"* nonnull %tmp2, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp4, i32 %tmp5)
  %tmp6 = getelementptr inbounds { %"class.adept::Active"*, i32 }, { %"class.adept::Active"*, i32 }* %tmp, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8
  %tmp8 = insertvalue { %"class.adept::Active"*, i32 } undef, %"class.adept::Active"* %tmp7, 0
  %tmp9 = getelementptr inbounds { %"class.adept::Active"*, i32 }, { %"class.adept::Active"*, i32 }* %tmp, i64 0, i32 1
  %tmp10 = load i32, i32* %tmp9, align 8
  %tmp11 = insertvalue { %"class.adept::Active"*, i32 } %tmp8, i32 %tmp10, 1
  ret { %"class.adept::Active"*, i32 } %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_Z13brusselator_fIN5adept6ActiveIdEEET_S3_S3_S3_(%"class.adept::Active"* noalias sret %arg, %"class.adept::Active"* %arg1, %"class.adept::Active"* %arg2, %"class.adept::Active"* %arg3) local_unnamed_addr #0 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.79", align 8
  %tmp4 = alloca %"struct.adept::internal::BinaryOperation.80", align 8
  %tmp5 = alloca %"struct.adept::internal::BinaryOpScalarRight.82", align 16
  %tmp6 = alloca double, align 8
  %tmp7 = alloca %"struct.adept::internal::BinaryOpScalarRight.82", align 16
  %tmp8 = alloca double, align 8
  %tmp9 = alloca %"struct.adept::internal::BinaryOperation.80", align 8
  %tmp10 = alloca %"struct.adept::internal::BinaryOpScalarRight.82", align 16
  %tmp11 = alloca double, align 8
  %tmp12 = alloca %"struct.adept::internal::BinaryOpScalarRight.82", align 16
  %tmp13 = alloca double, align 8
  %tmp14 = alloca double, align 8
  %tmp15 = alloca double, align 8
  %tmp16 = alloca i32, align 4
  %tmp17 = alloca i32, align 4
  %tmp18 = bitcast %"struct.adept::internal::BinaryOperation.79"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp18) #4
  %tmp19 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp4 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp19) #4
  %tmp20 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp20) #4
  %tmp21 = bitcast %"class.adept::Active"* %arg1 to %"struct.adept::Expression.35"*
  %tmp22 = bitcast double* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp22) #4
  store double 3.000000e-01, double* %tmp6, align 8, !tbaa !31
  call void @_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::internal::BinaryOpScalarRight.82"* nonnull sret %tmp5, %"struct.adept::Expression.35"* dereferenceable(1) %tmp21, double* nonnull dereferenceable(8) %tmp6)
  %tmp23 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp5 to %"struct.adept::Expression.83"*
  %tmp24 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp7 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp24) #4
  %tmp25 = bitcast double* %tmp8 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp25) #4
  store double 3.000000e-01, double* %tmp8, align 8, !tbaa !31
  call void @_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::internal::BinaryOpScalarRight.82"* nonnull sret %tmp7, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp21, double* nonnull dereferenceable(8) %tmp8)
  %tmp26 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp7 to %"struct.adept::Expression.83"*
  %tmp27 = call { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } @_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEES6_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINS8_4typeENS9_4typeEE4typeES8_NS1_8MultiplyES9_EEE4typeERKNS_10ExpressionISC_S8_EERKNSK_ISD_S9_EE(%"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp23, %"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp26)
  %tmp28 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp4, i64 0, i32 0
  %tmp29 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp27, 0
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp29, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp28, align 8
  %tmp30 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp4, i64 0, i32 1
  %tmp31 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp27, 1
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp31, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp30, align 8
  %tmp32 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp4 to %"struct.adept::Expression.81"*
  %tmp33 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp9 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp33) #4
  %tmp34 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp10 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp34) #4
  %tmp35 = bitcast %"class.adept::Active"* %arg2 to %"struct.adept::Expression.35"*
  %tmp36 = bitcast double* %tmp11 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp36) #4
  store double 6.000000e-01, double* %tmp11, align 8, !tbaa !31
  call void @_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::internal::BinaryOpScalarRight.82"* nonnull sret %tmp10, %"struct.adept::Expression.35"* dereferenceable(1) %tmp35, double* nonnull dereferenceable(8) %tmp11)
  %tmp37 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp10 to %"struct.adept::Expression.83"*
  %tmp38 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp12 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp38) #4
  %tmp39 = bitcast double* %tmp13 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp39) #4
  store double 6.000000e-01, double* %tmp13, align 8, !tbaa !31
  call void @_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::internal::BinaryOpScalarRight.82"* nonnull sret %tmp12, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp35, double* nonnull dereferenceable(8) %tmp13)
  %tmp40 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp12 to %"struct.adept::Expression.83"*
  %tmp41 = call { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } @_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEES6_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINS8_4typeENS9_4typeEE4typeES8_NS1_8MultiplyES9_EEE4typeERKNS_10ExpressionISC_S8_EERKNSK_ISD_S9_EE(%"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp37, %"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp40)
  %tmp42 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp9, i64 0, i32 0
  %tmp43 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp41, 0
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp43, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp42, align 8
  %tmp44 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp9, i64 0, i32 1
  %tmp45 = extractvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp41, 1
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp45, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp44, align 8
  %tmp46 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp9 to %"struct.adept::Expression.81"*
  call void @_ZN5adeptplINS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EES9_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSB_4typeENSC_4typeEE4typeESB_NS1_3AddESC_EEE4typeERKNS_10ExpressionISE_SB_EERKNSM_ISF_SC_EE(%"struct.adept::internal::BinaryOperation.79"* nonnull sret %tmp, %"struct.adept::Expression.81"* nonnull dereferenceable(1) %tmp32, %"struct.adept::Expression.81"* nonnull dereferenceable(1) %tmp46)
  %tmp47 = bitcast %"struct.adept::internal::BinaryOperation.79"* %tmp to %"struct.adept::Expression.78"*
  %tmp48 = bitcast double* %tmp14 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp48) #4
  store double 0x3F847AE147AE147C, double* %tmp14, align 8, !tbaa !31
  %tmp49 = call zeroext i1 @_ZN5adeptleINS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEdEENS1_9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINSE_4typeESE_EERKSD_(%"struct.adept::Expression.78"* nonnull dereferenceable(1) %tmp47, double* nonnull dereferenceable(8) %tmp14)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp48) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp38) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp36) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp34) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp33) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp25) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp24) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp22) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp20) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp19) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  %tmp50 = bitcast %"class.adept::Active"* %arg3 to %"struct.adept::Expression.35"*
  %tmp51 = bitcast double* %tmp15 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp51) #4
  store double 1.100000e+00, double* %tmp15, align 8, !tbaa !31
  %tmp52 = call zeroext i1 @_ZN5adeptgeINS_6ActiveIdEEdEENS_8internal9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINS6_4typeES6_EERKS5_(%"struct.adept::Expression.35"* dereferenceable(1) %tmp50, double* nonnull dereferenceable(8) %tmp15)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp51) #4
  %tmp53 = and i1 %tmp49, %tmp52
  br i1 %tmp53, label %bb54, label %bb56

bb54:                                             ; preds = %bb
  %tmp55 = bitcast i32* %tmp16 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp55) #4
  store i32 5, i32* %tmp16, align 4, !tbaa !34
  call void @_ZN5adept6ActiveIdEC2IiEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* %arg, i32* nonnull dereferenceable(4) %tmp16, i8* null)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp55) #4
  br label %bb58

bb56:                                             ; preds = %bb
  %tmp57 = bitcast i32* %tmp17 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp57) #4
  store i32 0, i32* %tmp17, align 4, !tbaa !34
  call void @_ZN5adept6ActiveIdEC2IiEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* %arg, i32* nonnull dereferenceable(4) %tmp17, i8* null)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp57) #4
  br label %bb58

bb58:                                             ; preds = %bb56, %bb54
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdEC2ERKS1_(%"class.adept::Active"* %arg, %"class.adept::Active"* dereferenceable(16) %arg1) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  store double 0.000000e+00, double* %tmp, align 8, !tbaa !71
  %tmp2 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  %tmp3 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp4 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp3, align 8, !tbaa !18
  %tmp5 = tail call i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %tmp4)
  store i32 %tmp5, i32* %tmp2, align 8, !tbaa !69
  %tmp6 = tail call dereferenceable(16) %"class.adept::Active"* @_ZN5adept6ActiveIdEaSERKS1_(%"class.adept::Active"* %arg, %"class.adept::Active"* nonnull dereferenceable(16) %arg1)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_S6_EES8_S6_EESC_NS4_IdNS3_19BinaryOpScalarRightIdS6_S8_iEES7_S1_EEEES8_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSP_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SP_EE(%"class.adept::ActiveReference"* %arg, %"struct.adept::Expression.45"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp2 = bitcast %"class.adept::Stack"** %tmp to %"class.adept::internal::StackStorageOrig"**
  %tmp3 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp2, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi11EEEvv(%"class.adept::internal::StackStorageOrig"* %tmp3)
  %tmp4 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp5 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp4, align 8, !tbaa !18
  %tmp6 = tail call fast double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.45"* nonnull %arg1, %"class.adept::Stack"* dereferenceable(152) %tmp5)
  %tmp7 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp8 = load double*, double** %tmp7, align 8, !tbaa !72
  store double %tmp6, double* %tmp8, align 8, !tbaa !31
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = bitcast %"class.adept::Stack"** %tmp9 to %"class.adept::internal::StackStorageOrig"**
  %tmp11 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp10, align 8, !tbaa !18
  %tmp12 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp11, i32* nonnull dereferenceable(4) %tmp12)
  ret %"class.adept::ActiveReference"* %arg
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdED2Ev(%"class.adept::Active"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE() #4
  %tmp1 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp, align 8, !tbaa !18
  %tmp2 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  invoke void @_ZN5adept5Stack19unregister_gradientERKi(%"class.adept::Stack"* %tmp1, i32* nonnull dereferenceable(4) %tmp2)
          to label %bb3 unwind label %bb4

bb3:                                              ; preds = %bb
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          catch i8* null
  %tmp6 = extractvalue { i8*, i32 } %tmp5, 0
  tail call void @__clang_call_terminate(i8* %tmp6) #25
  unreachable
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptmiINS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEES4_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSK_4typeENSL_4typeEE4typeESK_SC_SL_EEE4typeERKNS_10ExpressionISN_SK_EERKNSU_ISO_SL_EE(%"struct.adept::internal::BinaryOperation.67"* noalias sret %arg, %"struct.adept::Expression.70"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(80) %"struct.adept::internal::BinaryOperation.69"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEEE4castEv(%"struct.adept::Expression.70"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.69"* %tmp to %"struct.adept::Expression.70"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  %tmp5 = bitcast %"class.adept::Active"* %tmp4 to %"struct.adept::Expression.35"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_EC2ERKNS_10ExpressionIdSH_EERKNSJ_IdS3_EE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"struct.adept::Expression.70"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEENS2_IdS4_S5_S7_EEEENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSJ_4typeENSK_4typeEE4typeESJ_S8_SK_EEE4typeERKNS_10ExpressionISM_SJ_EERKNST_ISN_SK_EE(%"struct.adept::internal::BinaryOperation.69"* noalias sret %arg, %"struct.adept::Expression.53"* dereferenceable(1) %arg1, %"struct.adept::Expression.72"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(64) %"struct.adept::internal::BinaryOperation.52"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv(%"struct.adept::Expression.53"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp to %"struct.adept::Expression.53"*
  %tmp4 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.71"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.72"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.71"* %tmp4 to %"struct.adept::Expression.72"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEC2ERKNS_10ExpressionIdSF_EERKNSI_IdSG_EE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"struct.adept::Expression.53"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.72"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"class.adept::Active"*, %"class.adept::ActiveReference"* } @_ZN5adeptmlINS_6ActiveIdEENS_15ActiveReferenceIdEEEENS_8internal9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS5_15BinaryOperationINS5_7promoteINS7_4typeENS8_4typeEE4typeES7_NS5_8MultiplyES8_EEE4typeERKNS_10ExpressionISB_S7_EERKNSJ_ISC_S8_EE(%"struct.adept::Expression.35"* dereferenceable(1) %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.71", align 8
  %tmp2 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg)
  %tmp3 = bitcast %"class.adept::Active"* %tmp2 to %"struct.adept::Expression.35"*
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  %tmp5 = bitcast %"class.adept::ActiveReference"* %tmp4 to %"struct.adept::Expression.36"*
  call void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE(%"struct.adept::internal::BinaryOperation.71"* nonnull %tmp, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.36"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %tmp, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8
  %tmp8 = insertvalue { %"class.adept::Active"*, %"class.adept::ActiveReference"* } undef, %"class.adept::Active"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %tmp, i64 0, i32 1
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8
  %tmp11 = insertvalue { %"class.adept::Active"*, %"class.adept::ActiveReference"* } %tmp8, %"class.adept::ActiveReference"* %tmp10, 1
  ret { %"class.adept::Active"*, %"class.adept::ActiveReference"* } %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdNS_8internal15BinaryOperationIdNS4_IdNS4_IdNS_6ActiveIdEENS3_8MultiplyENS4_IdNS4_IdNS4_IdNS4_IdS1_NS3_3AddES1_EES8_S1_EES8_S1_EENS3_8SubtractENS3_18BinaryOpScalarLeftIdiS7_S1_EEEEEES8_NS4_IdS6_S7_S1_EEEESC_S6_EEEENS3_9enable_ifIXaasrT0_9is_activeeqsrSL_4rankLi0EERS1_E4typeERKNS_10ExpressionIT_SL_EE(%"class.adept::ActiveReference"* %arg, %"struct.adept::Expression.68"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp2 = bitcast %"class.adept::Stack"** %tmp to %"class.adept::internal::StackStorageOrig"**
  %tmp3 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp2, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi9EEEvv(%"class.adept::internal::StackStorageOrig"* %tmp3)
  %tmp4 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp5 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp4, align 8, !tbaa !18
  %tmp6 = tail call fast double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.68"* nonnull %arg1, %"class.adept::Stack"* dereferenceable(152) %tmp5)
  %tmp7 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp8 = load double*, double** %tmp7, align 8, !tbaa !72
  store double %tmp6, double* %tmp8, align 8, !tbaa !31
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = bitcast %"class.adept::Stack"** %tmp9 to %"class.adept::internal::StackStorageOrig"**
  %tmp11 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp10, align 8, !tbaa !18
  %tmp12 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp11, i32* nonnull dereferenceable(4) %tmp12)
  ret %"class.adept::ActiveReference"* %arg
}

; Function Attrs: uwtable
define dso_local double @_Z7afoobarPKdN5boost5arrayIdLm2048EEES3_d(double* %arg, %"class.boost::array.31"* byval align 8 %arg1, %"class.boost::array.31"* byval align 8 %arg2, double %arg3) local_unnamed_addr #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.adept::Stack", align 8
  %tmp4 = alloca %"class.adept::Array.32", align 8
  %tmp5 = alloca %"class.adept::ActiveReference", align 8
  %tmp6 = alloca %"class.adept::Array.32", align 8
  %tmp7 = alloca %"class.adept::Array.32", align 8
  %tmp8 = alloca %"class.adept::ActiveReference", align 8
  %tmp9 = alloca %"class.adept::ActiveReference", align 8
  %tmp10 = alloca %"class.adept::Array.32", align 8
  %tmp11 = alloca %"class.adept::Array.32", align 8
  %tmp12 = alloca %"class.adept::ActiveReference", align 8
  %tmp13 = alloca %"class.adept::ActiveReference", align 8
  %tmp14 = alloca %"class.adept::ActiveReference", align 8
  %tmp15 = bitcast %"class.adept::Stack"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 152, i8* nonnull %tmp15) #4
  call void @_ZN5adept5StackC2Eb(%"class.adept::Stack"* nonnull %tmp, i1 zeroext true)
  %tmp16 = bitcast %"class.adept::Array.32"* %tmp4 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp16) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* nonnull %tmp4, i32 3)
          to label %bb17 unwind label %bb21

bb17:                                             ; preds = %bb
  %tmp18 = bitcast %"class.adept::ActiveReference"* %tmp5 to i8*
  br label %bb25

bb19:                                             ; preds = %bb31
  %tmp20 = bitcast %"class.adept::Array.32"* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp20) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* nonnull %tmp6, i32 1024)
          to label %bb45 unwind label %bb52

bb21:                                             ; preds = %bb
  %tmp22 = landingpad { i8*, i32 }
          cleanup
  %tmp23 = extractvalue { i8*, i32 } %tmp22, 0
  %tmp24 = extractvalue { i8*, i32 } %tmp22, 1
  br label %bb187

bb25:                                             ; preds = %bb31, %bb17
  %tmp26 = phi i64 [ 0, %bb17 ], [ %tmp32, %bb31 ]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp18) #4
  %tmp27 = trunc i64 %tmp26 to i32
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp5, %"class.adept::Array.32"* nonnull %tmp4, i32 %tmp27)
          to label %bb28 unwind label %bb34

bb28:                                             ; preds = %bb25
  %tmp29 = getelementptr inbounds double, double* %arg, i64 %tmp26
  %tmp30 = invoke dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdEENS_8internal9enable_ifIXsr17is_not_expressionIT_EE5valueERS1_E4typeERKS5_(%"class.adept::ActiveReference"* nonnull %tmp5, double* dereferenceable(8) %tmp29)
          to label %bb31 unwind label %bb38

bb31:                                             ; preds = %bb28
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp5) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp18) #4
  %tmp32 = add nuw nsw i64 %tmp26, 1
  %tmp33 = icmp ult i64 %tmp32, 3
  br i1 %tmp33, label %bb25, label %bb19

bb34:                                             ; preds = %bb25
  %tmp35 = landingpad { i8*, i32 }
          cleanup
  %tmp36 = extractvalue { i8*, i32 } %tmp35, 0
  %tmp37 = extractvalue { i8*, i32 } %tmp35, 1
  br label %bb42

bb38:                                             ; preds = %bb28
  %tmp39 = landingpad { i8*, i32 }
          cleanup
  %tmp40 = extractvalue { i8*, i32 } %tmp39, 0
  %tmp41 = extractvalue { i8*, i32 } %tmp39, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp5) #4
  br label %bb42

bb42:                                             ; preds = %bb38, %bb34
  %tmp43 = phi i8* [ %tmp40, %bb38 ], [ %tmp36, %bb34 ]
  %tmp44 = phi i32 [ %tmp41, %bb38 ], [ %tmp37, %bb34 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp18) #4
  br label %bb184

bb45:                                             ; preds = %bb19
  %tmp46 = bitcast %"class.adept::Array.32"* %tmp7 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp46) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* nonnull %tmp7, i32 1024)
          to label %bb47 unwind label %bb56

bb47:                                             ; preds = %bb45
  %tmp48 = bitcast %"class.adept::ActiveReference"* %tmp8 to i8*
  %tmp49 = bitcast %"class.adept::ActiveReference"* %tmp9 to i8*
  br label %bb60

bb50:                                             ; preds = %bb71
  %tmp51 = bitcast %"class.adept::Array.32"* %tmp10 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp51) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* nonnull %tmp10, i32 1024)
          to label %bb96 unwind label %bb104

bb52:                                             ; preds = %bb19
  %tmp53 = landingpad { i8*, i32 }
          cleanup
  %tmp54 = extractvalue { i8*, i32 } %tmp53, 0
  %tmp55 = extractvalue { i8*, i32 } %tmp53, 1
  br label %bb181

bb56:                                             ; preds = %bb45
  %tmp57 = landingpad { i8*, i32 }
          cleanup
  %tmp58 = extractvalue { i8*, i32 } %tmp57, 0
  %tmp59 = extractvalue { i8*, i32 } %tmp57, 1
  br label %bb178

bb60:                                             ; preds = %bb71, %bb47
  %tmp61 = phi i64 [ 0, %bb47 ], [ %tmp72, %bb71 ]
  %tmp62 = call dereferenceable(8) double* @_ZNK5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %arg1, i64 %tmp61)
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp48) #4
  %tmp63 = trunc i64 %tmp61 to i32
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp8, %"class.adept::Array.32"* nonnull %tmp6, i32 %tmp63)
          to label %bb64 unwind label %bb74

bb64:                                             ; preds = %bb60
  %tmp65 = invoke dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdEENS_8internal9enable_ifIXsr17is_not_expressionIT_EE5valueERS1_E4typeERKS5_(%"class.adept::ActiveReference"* nonnull %tmp8, double* nonnull dereferenceable(8) %tmp62)
          to label %bb66 unwind label %bb78

bb66:                                             ; preds = %bb64
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp48) #4
  %tmp67 = add nuw nsw i64 %tmp61, 1024
  %tmp68 = call dereferenceable(8) double* @_ZNK5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %arg1, i64 %tmp67)
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp49) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp9, %"class.adept::Array.32"* nonnull %tmp7, i32 %tmp63)
          to label %bb69 unwind label %bb85

bb69:                                             ; preds = %bb66
  %tmp70 = invoke dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdEENS_8internal9enable_ifIXsr17is_not_expressionIT_EE5valueERS1_E4typeERKS5_(%"class.adept::ActiveReference"* nonnull %tmp9, double* nonnull dereferenceable(8) %tmp68)
          to label %bb71 unwind label %bb89

bb71:                                             ; preds = %bb69
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp49) #4
  %tmp72 = add nuw nsw i64 %tmp61, 1
  %tmp73 = icmp ult i64 %tmp72, 1024
  br i1 %tmp73, label %bb60, label %bb50

bb74:                                             ; preds = %bb60
  %tmp75 = landingpad { i8*, i32 }
          cleanup
  %tmp76 = extractvalue { i8*, i32 } %tmp75, 0
  %tmp77 = extractvalue { i8*, i32 } %tmp75, 1
  br label %bb82

bb78:                                             ; preds = %bb64
  %tmp79 = landingpad { i8*, i32 }
          cleanup
  %tmp80 = extractvalue { i8*, i32 } %tmp79, 0
  %tmp81 = extractvalue { i8*, i32 } %tmp79, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp8) #4
  br label %bb82

bb82:                                             ; preds = %bb78, %bb74
  %tmp83 = phi i8* [ %tmp80, %bb78 ], [ %tmp76, %bb74 ]
  %tmp84 = phi i32 [ %tmp81, %bb78 ], [ %tmp77, %bb74 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp48) #4
  br label %bb175

bb85:                                             ; preds = %bb66
  %tmp86 = landingpad { i8*, i32 }
          cleanup
  %tmp87 = extractvalue { i8*, i32 } %tmp86, 0
  %tmp88 = extractvalue { i8*, i32 } %tmp86, 1
  br label %bb93

bb89:                                             ; preds = %bb69
  %tmp90 = landingpad { i8*, i32 }
          cleanup
  %tmp91 = extractvalue { i8*, i32 } %tmp90, 0
  %tmp92 = extractvalue { i8*, i32 } %tmp90, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp9) #4
  br label %bb93

bb93:                                             ; preds = %bb89, %bb85
  %tmp94 = phi i8* [ %tmp91, %bb89 ], [ %tmp87, %bb85 ]
  %tmp95 = phi i32 [ %tmp92, %bb89 ], [ %tmp88, %bb85 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp49) #4
  br label %bb175

bb96:                                             ; preds = %bb50
  %tmp97 = bitcast %"class.adept::Array.32"* %tmp11 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp97) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* nonnull %tmp11, i32 1024)
          to label %bb98 unwind label %bb108

bb98:                                             ; preds = %bb96
  invoke void @_ZN5adept5Stack13new_recordingEv(%"class.adept::Stack"* nonnull %tmp)
          to label %bb99 unwind label %bb112

bb99:                                             ; preds = %bb98
  invoke void @_Z20abrusselator_2d_loopRN5adept5ArrayILi1EdLb1EEES2_S2_S2_S2_d(%"class.adept::Array.32"* nonnull dereferenceable(32) %tmp10, %"class.adept::Array.32"* nonnull dereferenceable(32) %tmp11, %"class.adept::Array.32"* nonnull dereferenceable(32) %tmp6, %"class.adept::Array.32"* nonnull dereferenceable(32) %tmp7, %"class.adept::Array.32"* nonnull dereferenceable(32) %tmp4, double %arg3)
          to label %bb100 unwind label %bb112

bb100:                                            ; preds = %bb99
  %tmp101 = bitcast %"class.adept::ActiveReference"* %tmp12 to i8*
  %tmp102 = bitcast %"class.adept::ActiveReference"* %tmp13 to i8*
  br label %bb116

bb103:                                            ; preds = %bb125
  invoke void @_ZN5adept5Stack15compute_adjointEv(%"class.adept::Stack"* nonnull %tmp)
          to label %bb150 unwind label %bb112

bb104:                                            ; preds = %bb50
  %tmp105 = landingpad { i8*, i32 }
          cleanup
  %tmp106 = extractvalue { i8*, i32 } %tmp105, 0
  %tmp107 = extractvalue { i8*, i32 } %tmp105, 1
  br label %bb172

bb108:                                            ; preds = %bb96
  %tmp109 = landingpad { i8*, i32 }
          cleanup
  %tmp110 = extractvalue { i8*, i32 } %tmp109, 0
  %tmp111 = extractvalue { i8*, i32 } %tmp109, 1
  br label %bb169

bb112:                                            ; preds = %bb103, %bb99, %bb98
  %tmp113 = landingpad { i8*, i32 }
          cleanup
  %tmp114 = extractvalue { i8*, i32 } %tmp113, 0
  %tmp115 = extractvalue { i8*, i32 } %tmp113, 1
  br label %bb166

bb116:                                            ; preds = %bb125, %bb100
  %tmp117 = phi i64 [ 0, %bb100 ], [ %tmp126, %bb125 ]
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp101) #4
  %tmp118 = trunc i64 %tmp117 to i32
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp12, %"class.adept::Array.32"* nonnull %tmp10, i32 %tmp118)
          to label %bb119 unwind label %bb128

bb119:                                            ; preds = %bb116
  %tmp120 = call dereferenceable(8) double* @_ZNK5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %arg2, i64 %tmp117)
  invoke void @_ZNK5adept15ActiveReferenceIdE12set_gradientIdEEvRKT_(%"class.adept::ActiveReference"* nonnull %tmp12, double* nonnull dereferenceable(8) %tmp120)
          to label %bb121 unwind label %bb132

bb121:                                            ; preds = %bb119
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp12) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp101) #4
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp102) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIjEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp13, %"class.adept::Array.32"* nonnull %tmp11, i32 %tmp118)
          to label %bb122 unwind label %bb139

bb122:                                            ; preds = %bb121
  %tmp123 = add nuw nsw i64 %tmp117, 1024
  %tmp124 = call dereferenceable(8) double* @_ZNK5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %arg2, i64 %tmp123)
  invoke void @_ZNK5adept15ActiveReferenceIdE12set_gradientIdEEvRKT_(%"class.adept::ActiveReference"* nonnull %tmp13, double* nonnull dereferenceable(8) %tmp124)
          to label %bb125 unwind label %bb143

bb125:                                            ; preds = %bb122
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp13) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp102) #4
  %tmp126 = add nuw nsw i64 %tmp117, 1
  %tmp127 = icmp ult i64 %tmp126, 1024
  br i1 %tmp127, label %bb116, label %bb103

bb128:                                            ; preds = %bb116
  %tmp129 = landingpad { i8*, i32 }
          cleanup
  %tmp130 = extractvalue { i8*, i32 } %tmp129, 0
  %tmp131 = extractvalue { i8*, i32 } %tmp129, 1
  br label %bb136

bb132:                                            ; preds = %bb119
  %tmp133 = landingpad { i8*, i32 }
          cleanup
  %tmp134 = extractvalue { i8*, i32 } %tmp133, 0
  %tmp135 = extractvalue { i8*, i32 } %tmp133, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp12) #4
  br label %bb136

bb136:                                            ; preds = %bb132, %bb128
  %tmp137 = phi i8* [ %tmp134, %bb132 ], [ %tmp130, %bb128 ]
  %tmp138 = phi i32 [ %tmp135, %bb132 ], [ %tmp131, %bb128 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp101) #4
  br label %bb166

bb139:                                            ; preds = %bb121
  %tmp140 = landingpad { i8*, i32 }
          cleanup
  %tmp141 = extractvalue { i8*, i32 } %tmp140, 0
  %tmp142 = extractvalue { i8*, i32 } %tmp140, 1
  br label %bb147

bb143:                                            ; preds = %bb122
  %tmp144 = landingpad { i8*, i32 }
          cleanup
  %tmp145 = extractvalue { i8*, i32 } %tmp144, 0
  %tmp146 = extractvalue { i8*, i32 } %tmp144, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp13) #4
  br label %bb147

bb147:                                            ; preds = %bb143, %bb139
  %tmp148 = phi i8* [ %tmp145, %bb143 ], [ %tmp141, %bb139 ]
  %tmp149 = phi i32 [ %tmp146, %bb143 ], [ %tmp142, %bb139 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp102) #4
  br label %bb166

bb150:                                            ; preds = %bb103
  %tmp151 = bitcast %"class.adept::ActiveReference"* %tmp14 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp151) #4
  invoke void @_ZN5adept5ArrayILi1EdLb1EEclIiEENS_8internal9enable_ifIXaaaaeqLi1ELi1Esr15all_scalar_intsIXLi1EET_EE5valueLb1EENS_15ActiveReferenceIdEEE4typeES5_(%"class.adept::ActiveReference"* nonnull sret %tmp14, %"class.adept::Array.32"* nonnull %tmp6, i32 0)
          to label %bb152 unwind label %bb155

bb152:                                            ; preds = %bb150
  %tmp153 = invoke double @_ZNK5adept15ActiveReferenceIdE12get_gradientEv(%"class.adept::ActiveReference"* nonnull %tmp14)
          to label %bb154 unwind label %bb159

bb154:                                            ; preds = %bb152
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp14) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp151) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp97) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp10) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp51) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp46) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp20) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  call void @_ZN5adept5StackD2Ev(%"class.adept::Stack"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 152, i8* nonnull %tmp15) #4
  ret double %tmp153

bb155:                                            ; preds = %bb150
  %tmp156 = landingpad { i8*, i32 }
          cleanup
  %tmp157 = extractvalue { i8*, i32 } %tmp156, 0
  %tmp158 = extractvalue { i8*, i32 } %tmp156, 1
  br label %bb163

bb159:                                            ; preds = %bb152
  %tmp160 = landingpad { i8*, i32 }
          cleanup
  %tmp161 = extractvalue { i8*, i32 } %tmp160, 0
  %tmp162 = extractvalue { i8*, i32 } %tmp160, 1
  call void @_ZN5adept15ActiveReferenceIdED2Ev(%"class.adept::ActiveReference"* nonnull %tmp14) #4
  br label %bb163

bb163:                                            ; preds = %bb159, %bb155
  %tmp164 = phi i8* [ %tmp161, %bb159 ], [ %tmp157, %bb155 ]
  %tmp165 = phi i32 [ %tmp162, %bb159 ], [ %tmp158, %bb155 ]
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp151) #4
  br label %bb166

bb166:                                            ; preds = %bb163, %bb147, %bb136, %bb112
  %tmp167 = phi i8* [ %tmp164, %bb163 ], [ %tmp114, %bb112 ], [ %tmp148, %bb147 ], [ %tmp137, %bb136 ]
  %tmp168 = phi i32 [ %tmp165, %bb163 ], [ %tmp115, %bb112 ], [ %tmp149, %bb147 ], [ %tmp138, %bb136 ]
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp11) #4
  br label %bb169

bb169:                                            ; preds = %bb166, %bb108
  %tmp170 = phi i8* [ %tmp167, %bb166 ], [ %tmp110, %bb108 ]
  %tmp171 = phi i32 [ %tmp168, %bb166 ], [ %tmp111, %bb108 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp97) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp10) #4
  br label %bb172

bb172:                                            ; preds = %bb169, %bb104
  %tmp173 = phi i8* [ %tmp170, %bb169 ], [ %tmp106, %bb104 ]
  %tmp174 = phi i32 [ %tmp171, %bb169 ], [ %tmp107, %bb104 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp51) #4
  br label %bb175

bb175:                                            ; preds = %bb172, %bb93, %bb82
  %tmp176 = phi i8* [ %tmp173, %bb172 ], [ %tmp94, %bb93 ], [ %tmp83, %bb82 ]
  %tmp177 = phi i32 [ %tmp174, %bb172 ], [ %tmp95, %bb93 ], [ %tmp84, %bb82 ]
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp7) #4
  br label %bb178

bb178:                                            ; preds = %bb175, %bb56
  %tmp179 = phi i8* [ %tmp176, %bb175 ], [ %tmp58, %bb56 ]
  %tmp180 = phi i32 [ %tmp177, %bb175 ], [ %tmp59, %bb56 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp46) #4
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp6) #4
  br label %bb181

bb181:                                            ; preds = %bb178, %bb52
  %tmp182 = phi i8* [ %tmp179, %bb178 ], [ %tmp54, %bb52 ]
  %tmp183 = phi i32 [ %tmp180, %bb178 ], [ %tmp55, %bb52 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp20) #4
  br label %bb184

bb184:                                            ; preds = %bb181, %bb42
  %tmp185 = phi i8* [ %tmp43, %bb42 ], [ %tmp182, %bb181 ]
  %tmp186 = phi i32 [ %tmp44, %bb42 ], [ %tmp183, %bb181 ]
  call void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* nonnull %tmp4) #4
  br label %bb187

bb187:                                            ; preds = %bb184, %bb21
  %tmp188 = phi i8* [ %tmp185, %bb184 ], [ %tmp23, %bb21 ]
  %tmp189 = phi i32 [ %tmp186, %bb184 ], [ %tmp24, %bb21 ]
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp16) #4
  call void @_ZN5adept5StackD2Ev(%"class.adept::Stack"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 152, i8* nonnull %tmp15) #4
  %tmp190 = insertvalue { i8*, i32 } undef, i8* %tmp188, 0
  %tmp191 = insertvalue { i8*, i32 } %tmp190, i32 %tmp189, 1
  resume { i8*, i32 } %tmp191
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5StackC2Eb(%"class.adept::Stack"* %arg, i1 zeroext %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal16StackStorageOrigC2Ev(%"class.adept::internal::StackStorageOrig"* %tmp)
  %tmp2 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  store double* null, double** %tmp2, align 8, !tbaa !19
  %tmp3 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  tail call void @_ZNSt6vectorIiSaIiEEC2Ev(%"class.std::vector"* nonnull %tmp3) #4
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  tail call void @_ZNSt6vectorIiSaIiEEC2Ev(%"class.std::vector"* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  tail call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EEC2Ev(%"class.std::__cxx11::list"* nonnull %tmp5) #4
  %tmp6 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp5) #4
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp6, %"struct.std::__detail::_List_node_base"** %tmp7, align 8
  %tmp8 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp9 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 12
  %tmp10 = bitcast i32* %tmp8 to i8*
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %tmp10, i8 0, i64 18, i1 false)
  store i8 1, i8* %tmp9, align 2, !tbaa !49
  %tmp11 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 13
  store i8 0, i8* %tmp11, align 1, !tbaa !74
  %tmp12 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 14
  store i8 0, i8* %tmp12, align 4, !tbaa !75
  invoke void @_ZN5adept8internal16StackStorageOrig10initializeEi(%"class.adept::internal::StackStorageOrig"* %tmp, i32 1048576)
          to label %bb13 unwind label %bb16

bb13:                                             ; preds = %bb
  invoke void @_ZN5adept5Stack13new_recordingEv(%"class.adept::Stack"* nonnull %arg)
          to label %bb14 unwind label %bb16

bb14:                                             ; preds = %bb13
  br i1 %arg1, label %bb15, label %bb19

bb15:                                             ; preds = %bb14
  invoke void @_ZN5adept5Stack8activateEv(%"class.adept::Stack"* nonnull %arg)
          to label %bb19 unwind label %bb16

bb16:                                             ; preds = %bb15, %bb13, %bb
  %tmp17 = landingpad { i8*, i32 }
          cleanup
  %tmp18 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %tmp5, i64 0, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EED2Ev(%"class.std::__cxx11::_List_base"* nonnull %tmp18) #4
  tail call void @_ZNSt6vectorIiSaIiEED2Ev(%"class.std::vector"* nonnull %tmp4) #4
  tail call void @_ZNSt6vectorIiSaIiEED2Ev(%"class.std::vector"* nonnull %tmp3) #4
  tail call void @_ZN5adept8internal16StackStorageOrigD2Ev(%"class.adept::internal::StackStorageOrig"* %tmp) #4
  resume { i8*, i32 } %tmp17

bb19:                                             ; preds = %bb15, %bb14
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EEC2Ei(%"class.adept::Array.32"* %arg, i32 %arg1) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal13GradientIndexILb1EEC2Ei(%"struct.adept::internal::GradientIndex.34"* %tmp, i32 -9999)
  %tmp2 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 2
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp2, align 8, !tbaa !76
  %tmp3 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 3
  tail call void @_ZN5adept14ExpressionSizeILi1EEC2Ev(%"class.adept::ExpressionSize.27"* nonnull %tmp3)
  %tmp4 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  tail call void @_ZN5adept14ExpressionSizeILi1EEC2Ev(%"class.adept::ExpressionSize.27"* nonnull %tmp4)
  tail call void @_ZN5adept5ArrayILi1EdLb1EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii(%"class.adept::Array.32"* %arg, i32 %arg1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::ActiveReference"* @_ZN5adept15ActiveReferenceIdEaSIdEENS_8internal9enable_ifIXsr17is_not_expressionIT_EE5valueERS1_E4typeERKS5_(%"class.adept::ActiveReference"* %arg, double* dereferenceable(8) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast double* %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8, !tbaa !31
  %tmp3 = bitcast %"class.adept::ActiveReference"* %arg to i64**
  %tmp4 = load i64*, i64** %tmp3, align 8, !tbaa !72
  store i64 %tmp2, i64* %tmp4, align 8, !tbaa !31
  %tmp5 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp6 = bitcast %"class.adept::Stack"** %tmp5 to %"class.adept::internal::StackStorageOrig"**
  %tmp7 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp6, align 8, !tbaa !18
  %tmp8 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp7, i32* nonnull dereferenceable(4) %tmp8)
  ret %"class.adept::ActiveReference"* %arg
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZNK5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* %arg, i64 %arg1) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = icmp ult i64 %arg1, 2048
  br i1 %tmp, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @__assert_fail(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.108, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.109, i64 0, i64 0), i32 123, i8* getelementptr inbounds ([123 x i8], [123 x i8]* @__PRETTY_FUNCTION__._ZNK5boost5arrayIdLm2048EEixEm, i64 0, i64 0)) #25
  unreachable

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"class.boost::array.31", %"class.boost::array.31"* %arg, i64 0, i32 0, i64 %arg1
  ret double* %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack13new_recordingEv(%"class.adept::Stack"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca i32, align 4
  %tmp1 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal16StackStorageOrig11clear_stackEv(%"class.adept::internal::StackStorageOrig"* %tmp1)
  tail call void @_ZN5adept5Stack18clear_independentsEv(%"class.adept::Stack"* %arg)
  tail call void @_ZN5adept5Stack16clear_dependentsEv(%"class.adept::Stack"* %arg)
  tail call void @_ZN5adept5Stack15clear_gradientsEv(%"class.adept::Stack"* %arg)
  %tmp2 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp3 = load i32, i32* %tmp2, align 8, !tbaa !40
  %tmp4 = add nsw i32 %tmp3, 1
  %tmp5 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  store i32 %tmp4, i32* %tmp5, align 8, !tbaa !41
  %tmp6 = bitcast i32* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp6) #4
  store i32 -1, i32* %tmp, align 4, !tbaa !34
  call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp1, i32* nonnull dereferenceable(4) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE12set_gradientIdEEvRKT_(%"class.adept::ActiveReference"* %arg, double* dereferenceable(8) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp2 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp, align 8, !tbaa !18
  %tmp3 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  %tmp4 = load i32, i32* %tmp3, align 8, !tbaa !77
  %tmp5 = add nsw i32 %tmp4, 1
  tail call void @_ZN5adept5Stack13set_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPKS4_(%"class.adept::Stack"* %tmp2, i32 %tmp4, i32 %tmp5, double* nonnull %arg1)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE12get_gradientEv(%"class.adept::ActiveReference"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp1 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp1) #4
  store double 0.000000e+00, double* %tmp, align 8, !tbaa !31
  %tmp2 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp3 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp2, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  %tmp5 = load i32, i32* %tmp4, align 8, !tbaa !77
  %tmp6 = add nsw i32 %tmp5, 1
  call void @_ZNK5adept5Stack13get_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPS4_(%"class.adept::Stack"* %tmp3, i32 %tmp5, i32 %tmp6, double* nonnull %tmp)
  %tmp7 = load double, double* %tmp, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp1) #4
  ret double %tmp7
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EED2Ev(%"class.adept::Array.32"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 2
  %tmp1 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !76
  %tmp2 = icmp eq %"class.adept::Storage.14"* %tmp1, null
  br i1 %tmp2, label %bb4, label %bb3

bb3:                                              ; preds = %bb
  invoke void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp1)
          to label %bb4 unwind label %bb5

bb4:                                              ; preds = %bb3, %bb
  ret void

bb5:                                              ; preds = %bb3
  %tmp6 = landingpad { i8*, i32 }
          catch i8* null
  %tmp7 = extractvalue { i8*, i32 } %tmp6, 0
  tail call void @__clang_call_terminate(i8* %tmp7) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define dso_local void @get_b(double* nocapture readnone %arg, double* nocapture %arg1, i32 %arg2, i32 %arg3, double %arg4) local_unnamed_addr #6 {
bb:
  %tmp = shl i32 %arg2, 5
  %tmp5 = add i32 %tmp, %arg3
  %tmp6 = zext i32 %tmp5 to i64
  %tmp7 = getelementptr inbounds double, double* %arg1, i64 %tmp6
  %tmp8 = load double, double* %tmp7, align 8, !tbaa !31
  %tmp9 = fadd fast double %tmp8, %arg4
  store double %tmp9, double* %tmp7, align 8, !tbaa !31
  ret void
}

; Function Attrs: norecurse nounwind readonly uwtable
define dso_local double @get_nodiff(double* nocapture readonly %arg, i32 %arg1, i32 %arg2) local_unnamed_addr #19 {
bb:
  %tmp = shl i32 %arg1, 5
  %tmp3 = add i32 %tmp, %arg2
  %tmp4 = zext i32 %tmp3 to i64
  %tmp5 = getelementptr inbounds double, double* %arg, i64 %tmp4
  %tmp6 = load double, double* %tmp5, align 8, !tbaa !31
  ret double %tmp6
}

; Function Attrs: norecurse nounwind readnone uwtable
define dso_local double @brusselator_f_nodiff(double %arg, double %arg1, double %arg2) local_unnamed_addr #9 {
bb:
  %tmp = fadd fast double %arg, -3.000000e-01
  %tmp3 = fmul fast double %tmp, %tmp
  %tmp4 = fadd fast double %arg1, -6.000000e-01
  %tmp5 = fmul fast double %tmp4, %tmp4
  %tmp6 = fadd fast double %tmp5, %tmp3
  %tmp7 = fcmp fast ole double %tmp6, 0x3F847AE147AE147C
  %tmp8 = fcmp fast oge double %arg2, 1.100000e+00
  %tmp9 = and i1 %tmp8, %tmp7
  %tmp10 = select i1 %tmp9, double 5.000000e+00, double 0.000000e+00
  ret double %tmp10
}

; Function Attrs: uwtable
define dso_local void @brusselator_2d_loop_b(double* nocapture readnone %arg, double* nocapture %arg1, double* nocapture readnone %arg2, double* nocapture %arg3, double* nocapture readonly %arg4, double* nocapture %arg5, double* nocapture readonly %arg6, double* nocapture %arg7, double* nocapture readonly %arg8, double* nocapture %arg9, double %arg10) local_unnamed_addr #0 {
bb:
  %tmp = alloca i32, align 4
  %tmp11 = alloca i32, align 4
  %tmp12 = alloca i32, align 4
  %tmp13 = alloca i32, align 4
  %tmp14 = alloca double, align 8
  %tmp15 = alloca double, align 8
  %tmp16 = alloca double, align 8
  %tmp17 = alloca double, align 8
  %tmp18 = alloca double, align 8
  %tmp19 = alloca double, align 8
  %tmp20 = load double, double* %arg8, align 8, !tbaa !31
  %tmp21 = getelementptr inbounds double, double* %arg8, i64 2
  %tmp22 = load double, double* %tmp21, align 8, !tbaa !31
  br label %bb23

bb23:                                             ; preds = %bb44, %bb
  %tmp24 = phi i32 [ 0, %bb ], [ %tmp26, %bb44 ]
  %tmp25 = icmp eq i32 %tmp24, 31
  %tmp26 = add nuw nsw i32 %tmp24, 1
  %tmp27 = select i1 %tmp25, i32 31, i32 %tmp26
  %tmp28 = icmp eq i32 %tmp24, 0
  %tmp29 = add nsw i32 %tmp24, -1
  %tmp30 = select i1 %tmp28, i32 0, i32 %tmp29
  br label %bb46

bb31:                                             ; preds = %bb44
  %tmp32 = fmul fast double %tmp22, 0x408E080000000001
  store double 0.000000e+00, double* %arg5, align 8, !tbaa !31
  store double 0.000000e+00, double* %arg7, align 8, !tbaa !31
  %tmp33 = bitcast i32* %tmp to i8*
  %tmp34 = bitcast i32* %tmp11 to i8*
  %tmp35 = bitcast i32* %tmp12 to i8*
  %tmp36 = bitcast i32* %tmp13 to i8*
  %tmp37 = bitcast double* %tmp14 to i8*
  %tmp38 = bitcast double* %tmp15 to i8*
  %tmp39 = bitcast double* %tmp16 to i8*
  %tmp40 = bitcast double* %tmp17 to i8*
  %tmp41 = bitcast double* %tmp18 to i8*
  %tmp42 = bitcast double* %tmp19 to i8*
  %tmp43 = fadd fast double %tmp20, 1.000000e+00
  br label %bb68

bb44:                                             ; preds = %bb46
  %tmp45 = icmp eq i32 %tmp26, 32
  br i1 %tmp45, label %bb31, label %bb23

bb46:                                             ; preds = %bb46, %bb23
  %tmp47 = phi i32 [ 0, %bb23 ], [ %tmp49, %bb46 ]
  %tmp48 = icmp eq i32 %tmp47, 31
  %tmp49 = add nuw nsw i32 %tmp47, 1
  %tmp50 = select i1 %tmp48, i32 31, i32 %tmp49
  %tmp51 = icmp eq i32 %tmp47, 0
  %tmp52 = add nsw i32 %tmp47, -1
  %tmp53 = select i1 %tmp51, i32 0, i32 %tmp52
  %tmp54 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp24, i32 %tmp47)
  %tmp55 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp24, i32 %tmp47)
  tail call void @pushReal8(double %tmp54)
  %tmp56 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp30, i32 %tmp47)
  tail call void @pushReal8(double %tmp54)
  %tmp57 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp27, i32 %tmp47)
  tail call void @pushReal8(double %tmp55)
  %tmp58 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp24, i32 %tmp50)
  %tmp59 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp24, i32 %tmp53)
  %tmp60 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp24, i32 %tmp47)
  tail call void @pushReal8(double %tmp56)
  %tmp61 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp30, i32 %tmp47)
  tail call void @pushReal8(double %tmp57)
  %tmp62 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp27, i32 %tmp47)
  tail call void @pushReal8(double %tmp58)
  %tmp63 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp24, i32 %tmp50)
  tail call void @pushReal8(double %tmp59)
  %tmp64 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp24, i32 %tmp53)
  tail call void @pushReal8(double %tmp60)
  %tmp65 = tail call fast double @get_nodiff(double* %arg6, i32 %tmp24, i32 %tmp47)
  tail call void @pushReal8(double %tmp60)
  %tmp66 = tail call fast double @get_nodiff(double* %arg4, i32 %tmp24, i32 %tmp47)
  tail call void @pushInteger4(i32 %tmp53)
  tail call void @pushInteger4(i32 %tmp50)
  tail call void @pushReal8(double %tmp66)
  tail call void @pushReal8(double %tmp65)
  tail call void @pushReal8(double %tmp64)
  tail call void @pushReal8(double %tmp63)
  tail call void @pushReal8(double %tmp62)
  tail call void @pushReal8(double %tmp61)
  tail call void @pushInteger4(i32 %tmp30)
  tail call void @pushInteger4(i32 %tmp27)
  %tmp67 = icmp eq i32 %tmp49, 32
  br i1 %tmp67, label %bb44, label %bb46

bb68:                                             ; preds = %bb85, %bb31
  %tmp69 = phi i64 [ 31, %bb31 ], [ %tmp86, %bb85 ]
  %tmp70 = phi double [ 0.000000e+00, %bb31 ], [ %tmp139, %bb85 ]
  %tmp71 = phi double [ 0.000000e+00, %bb31 ], [ %tmp136, %bb85 ]
  %tmp72 = phi double [ 0.000000e+00, %bb31 ], [ %tmp134, %bb85 ]
  %tmp73 = shl i64 %tmp69, 5
  %tmp74 = trunc i64 %tmp69 to i32
  br label %bb88

bb75:                                             ; preds = %bb85
  %tmp76 = fmul fast double %tmp134, 0x408E080000000001
  %tmp77 = getelementptr inbounds double, double* %arg9, i64 2
  %tmp78 = load double, double* %tmp77, align 8, !tbaa !31
  %tmp79 = fadd fast double %tmp78, %tmp76
  store double %tmp79, double* %tmp77, align 8, !tbaa !31
  %tmp80 = getelementptr inbounds double, double* %arg9, i64 1
  %tmp81 = load double, double* %tmp80, align 8, !tbaa !31
  %tmp82 = fadd fast double %tmp81, %tmp136
  store double %tmp82, double* %tmp80, align 8, !tbaa !31
  %tmp83 = load double, double* %arg9, align 8, !tbaa !31
  %tmp84 = fadd fast double %tmp83, %tmp139
  store double %tmp84, double* %arg9, align 8, !tbaa !31
  ret void

bb85:                                             ; preds = %bb88
  %tmp86 = add nsw i64 %tmp69, -1
  %tmp87 = icmp eq i64 %tmp69, 0
  br i1 %tmp87, label %bb75, label %bb68

bb88:                                             ; preds = %bb88, %bb68
  %tmp89 = phi i64 [ 31, %bb68 ], [ %tmp155, %bb88 ]
  %tmp90 = phi double [ %tmp70, %bb68 ], [ %tmp139, %bb88 ]
  %tmp91 = phi double [ %tmp71, %bb68 ], [ %tmp136, %bb88 ]
  %tmp92 = phi double [ %tmp72, %bb68 ], [ %tmp134, %bb88 ]
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp33) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp34) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp35) #4
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp36) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp37) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp38) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp39) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp40) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp41) #4
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp42) #4
  call void @popInteger4(i32* nonnull %tmp)
  call void @popInteger4(i32* nonnull %tmp11)
  call void @popReal8(double* nonnull %tmp14)
  call void @popReal8(double* nonnull %tmp15)
  call void @popReal8(double* nonnull %tmp16)
  call void @popReal8(double* nonnull %tmp17)
  call void @popReal8(double* nonnull %tmp18)
  call void @popReal8(double* nonnull %tmp19)
  call void @popInteger4(i32* nonnull %tmp12)
  call void @popInteger4(i32* nonnull %tmp13)
  %tmp93 = load double, double* %tmp14, align 8, !tbaa !31
  %tmp94 = load double, double* %tmp15, align 8, !tbaa !31
  %tmp95 = fadd fast double %tmp94, %tmp93
  %tmp96 = load double, double* %tmp16, align 8, !tbaa !31
  %tmp97 = fadd fast double %tmp95, %tmp96
  %tmp98 = load double, double* %tmp17, align 8, !tbaa !31
  %tmp99 = fadd fast double %tmp97, %tmp98
  %tmp100 = load double, double* %tmp18, align 8, !tbaa !31
  %tmp101 = fmul fast double %tmp100, -4.000000e+00
  %tmp102 = fadd fast double %tmp99, %tmp101
  %tmp103 = add nuw nsw i64 %tmp89, %tmp73
  %tmp104 = getelementptr inbounds double, double* %arg3, i64 %tmp103
  %tmp105 = load double, double* %tmp104, align 8, !tbaa !31
  %tmp106 = fmul fast double %tmp102, %tmp105
  %tmp107 = fadd fast double %tmp106, %tmp92
  %tmp108 = fmul fast double %tmp105, %tmp32
  %tmp109 = load double, double* %tmp19, align 8, !tbaa !31
  %tmp110 = fmul fast double %tmp109, %tmp105
  %tmp111 = fadd fast double %tmp110, %tmp90
  %tmp112 = fmul fast double %tmp105, %tmp20
  %tmp113 = getelementptr inbounds double, double* %arg1, i64 %tmp103
  %tmp114 = load double, double* %tmp113, align 8, !tbaa !31
  %tmp115 = fsub fast double %tmp114, %tmp105
  store double 0.000000e+00, double* %tmp104, align 8, !tbaa !31
  %tmp116 = fmul fast double %tmp108, -4.000000e+00
  call void @popReal8(double* nonnull %tmp19)
  %tmp117 = trunc i64 %tmp89 to i32
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp117, double %tmp112)
  call void @popReal8(double* nonnull %tmp18)
  call void @get_b(double* undef, double* %arg7, i32 %tmp74, i32 %tmp117, double %tmp116)
  call void @popReal8(double* nonnull %tmp17)
  %tmp118 = load i32, i32* %tmp13, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg7, i32 %tmp74, i32 %tmp118, double %tmp108)
  call void @popReal8(double* nonnull %tmp16)
  %tmp119 = load i32, i32* %tmp12, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg7, i32 %tmp74, i32 %tmp119, double %tmp108)
  call void @popReal8(double* nonnull %tmp15)
  %tmp120 = load i32, i32* %tmp, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg7, i32 %tmp120, i32 %tmp117, double %tmp108)
  call void @popReal8(double* nonnull %tmp14)
  %tmp121 = load i32, i32* %tmp11, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg7, i32 %tmp121, i32 %tmp117, double %tmp108)
  %tmp122 = load double, double* %tmp14, align 8, !tbaa !31
  %tmp123 = load double, double* %tmp15, align 8, !tbaa !31
  %tmp124 = fadd fast double %tmp123, %tmp122
  %tmp125 = load double, double* %tmp16, align 8, !tbaa !31
  %tmp126 = fadd fast double %tmp124, %tmp125
  %tmp127 = load double, double* %tmp17, align 8, !tbaa !31
  %tmp128 = fadd fast double %tmp126, %tmp127
  %tmp129 = load double, double* %tmp18, align 8, !tbaa !31
  %tmp130 = fmul fast double %tmp129, -4.000000e+00
  %tmp131 = fadd fast double %tmp128, %tmp130
  %tmp132 = load double, double* %tmp113, align 8, !tbaa !31
  %tmp133 = fmul fast double %tmp131, %tmp132
  %tmp134 = fadd fast double %tmp107, %tmp133
  %tmp135 = fmul fast double %tmp132, %tmp32
  %tmp136 = fadd fast double %tmp132, %tmp91
  %tmp137 = load double, double* %tmp19, align 8, !tbaa !31
  %tmp138 = fmul fast double %tmp137, %tmp132
  %tmp139 = fsub fast double %tmp111, %tmp138
  %tmp140 = fmul fast double %tmp43, %tmp132
  %tmp141 = fsub fast double -0.000000e+00, %tmp140
  store double 0.000000e+00, double* %tmp113, align 8, !tbaa !31
  %tmp142 = fmul fast double %tmp135, -4.000000e+00
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp117, double %tmp141)
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp117, double %tmp142)
  %tmp143 = load i32, i32* %tmp13, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp143, double %tmp135)
  call void @popReal8(double* nonnull %tmp16)
  %tmp144 = load i32, i32* %tmp12, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp144, double %tmp135)
  call void @popReal8(double* nonnull %tmp15)
  %tmp145 = load i32, i32* %tmp, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg5, i32 %tmp145, i32 %tmp117, double %tmp135)
  call void @popReal8(double* nonnull %tmp14)
  %tmp146 = load i32, i32* %tmp11, align 4, !tbaa !34
  call void @get_b(double* undef, double* %arg5, i32 %tmp146, i32 %tmp117, double %tmp135)
  %tmp147 = load double, double* %tmp15, align 8, !tbaa !31
  %tmp148 = load double, double* %tmp16, align 8, !tbaa !31
  %tmp149 = fmul fast double %tmp147, %tmp115
  %tmp150 = fmul fast double %tmp149, %tmp148
  %tmp151 = load double, double* %tmp14, align 8, !tbaa !31
  %tmp152 = fmul fast double %tmp148, %tmp115
  %tmp153 = fmul fast double %tmp152, %tmp151
  %tmp154 = fmul fast double %tmp149, %tmp151
  call void @get_b(double* undef, double* %arg7, i32 %tmp74, i32 %tmp117, double %tmp154)
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp117, double %tmp153)
  call void @get_b(double* undef, double* %arg5, i32 %tmp74, i32 %tmp117, double %tmp150)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp42) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp41) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp40) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp39) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp38) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp37) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp36) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp35) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp34) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp33) #4
  %tmp155 = add nsw i64 %tmp89, -1
  %tmp156 = icmp eq i64 %tmp89, 0
  br i1 %tmp156, label %bb85, label %bb88
}

declare dso_local void @pushReal8(double) local_unnamed_addr #1

declare dso_local void @pushInteger4(i32) local_unnamed_addr #1

declare dso_local void @popInteger4(i32*) local_unnamed_addr #1

declare dso_local void @popReal8(double*) local_unnamed_addr #1

; Function Attrs: uwtable
define dso_local double @_Z7tfoobarPKdN5boost5arrayIdLm2048EEES3_d(double* nocapture readonly %arg, %"class.boost::array.31"* byval align 8 %arg1, %"class.boost::array.31"* byval nocapture readonly align 8 %arg2, double %arg3) local_unnamed_addr #0 {
bb:
  %tmp = alloca [3 x double], align 16
  %tmp4 = alloca %"class.boost::array.31", align 8
  %tmp5 = alloca %"class.boost::array.31", align 8
  %tmp6 = bitcast [3 x double]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp6) #4
  call void @llvm.memset.p0i8.i64(i8* nonnull align 16 %tmp6, i8 0, i64 24, i1 false)
  %tmp7 = bitcast %"class.boost::array.31"* %tmp4 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp7) #4
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %tmp7, i8 0, i64 16384, i1 false)
  %tmp8 = bitcast %"class.boost::array.31"* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp8) #4
  %tmp9 = bitcast %"class.boost::array.31"* %arg2 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp8, i8* nonnull align 8 %tmp9, i64 16384, i1 false), !tbaa.struct !66
  %tmp10 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp5)
  %tmp11 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp5)
  %tmp12 = getelementptr inbounds double, double* %tmp11, i64 1024
  %tmp13 = call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp14 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp4)
  %tmp15 = call double* @_ZNK5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %arg1)
  %tmp16 = getelementptr inbounds double, double* %tmp15, i64 1024
  %tmp17 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp4)
  %tmp18 = getelementptr inbounds double, double* %tmp17, i64 1024
  %tmp19 = getelementptr inbounds [3 x double], [3 x double]* %tmp, i64 0, i64 0
  call void @brusselator_2d_loop_b(double* undef, double* %tmp10, double* undef, double* nonnull %tmp12, double* %tmp13, double* %tmp14, double* nonnull %tmp16, double* nonnull %tmp18, double* %arg, double* nonnull %tmp19, double undef)
  %tmp20 = call dereferenceable(8) double* @_ZN5boost5arrayIdLm2048EEixEm(%"class.boost::array.31"* nonnull %tmp4, i64 0)
  %tmp21 = load double, double* %tmp20, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp6) #4
  ret double %tmp21
}

; Function Attrs: norecurse uwtable
define dso_local i32 @main(i32 %arg, i8** nocapture readnone %arg1) local_unnamed_addr #14 {
bb:
  %tmp = alloca [3 x double], align 16
  %tmp2 = alloca %"class.boost::array.31", align 8
  %tmp3 = alloca %"class.boost::array.31", align 8
  %tmp4 = alloca %struct.timeval, align 8
  %tmp5 = alloca %struct.timeval, align 8
  %tmp6 = bitcast [3 x double]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp6) #4
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 16 %tmp6, i8* align 16 bitcast ([3 x double]* @_ZZ4mainE1p to i8*), i64 24, i1 false)
  %tmp7 = bitcast %"class.boost::array.31"* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp7) #4
  %tmp8 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp2)
  %tmp9 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp2)
  %tmp10 = getelementptr inbounds double, double* %tmp9, i64 1024
  call void @_Z16init_brusselatorPdS_(double* %tmp8, double* nonnull %tmp10)
  %tmp11 = bitcast %"class.boost::array.31"* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16384, i8* nonnull %tmp11) #4
  %tmp12 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp3)
  %tmp13 = call double* @_ZN5boost5arrayIdLm2048EE4dataEv(%"class.boost::array.31"* nonnull %tmp3)
  %tmp14 = getelementptr inbounds double, double* %tmp13, i64 1024
  call void @_Z16init_brusselatorPdS_(double* %tmp12, double* nonnull %tmp14)
  %tmp15 = bitcast %struct.timeval* %tmp4 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp15) #4
  %tmp16 = bitcast %struct.timeval* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp16) #4
  %tmp17 = call i32 @gettimeofday(%struct.timeval* nonnull %tmp4, %struct.timezone* null) #4
  %tmp18 = getelementptr inbounds [3 x double], [3 x double]* %tmp, i64 0, i64 0
  br label %bb24

bb19:                                             ; preds = %bb24
  %tmp20 = call i32 @gettimeofday(%struct.timeval* nonnull %tmp5, %struct.timezone* null) #4
  %tmp21 = call fast float @_Z5tdiffP7timevalS0_(%struct.timeval* nonnull %tmp4, %struct.timeval* nonnull %tmp5)
  %tmp22 = fpext float %tmp21 to double
  %tmp23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.95, i64 0, i64 0), double %tmp22, double %tmp26)
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp15) #4
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 16384, i8* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp6) #4
  ret i32 0

bb24:                                             ; preds = %bb24, %bb
  %tmp25 = phi i32 [ 0, %bb ], [ %tmp27, %bb24 ]
  %tmp26 = call fast double @_Z6foobarPKdN5boost5arrayIdLm2048EEES3_d(double* nonnull %tmp18, %"class.boost::array.31"* byval nonnull align 8 %tmp2, %"class.boost::array.31"* byval nonnull align 8 %tmp3, double 2.100000e+00)
  %tmp27 = add nuw nsw i32 %tmp25, 1
  %tmp28 = icmp eq i32 %tmp27, 10000
  br i1 %tmp28, label %bb19, label %bb24
}

; Function Attrs: nounwind
declare dso_local i32 @gettimeofday(%struct.timeval* nocapture, %struct.timezone* nocapture) local_unnamed_addr #2

; Function Attrs: nounwind
declare dso_local i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr #2

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept15array_exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::array_exception"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::array_exception", %"class.adept::array_exception"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionC2Ev(%"class.adept::exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::array_exception", %"class.adept::array_exception"* %arg, i64 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept15array_exceptionE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::array_exception", %"class.adept::array_exception"* %arg, i64 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
  ret %"class.std::__cxx11::basic_string"* %tmp
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept17invalid_operationD0Ev(%"class.adept::invalid_operation"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::invalid_operation", %"class.adept::invalid_operation"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::invalid_operation"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZNK5adept9exception4whatEv(%"class.adept::exception"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 1
  %tmp1 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  ret i8* %tmp1
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept9exceptionC2Ev(%"class.adept::exception"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 0
  tail call void @_ZNSt9exceptionC2Ev(%"class.std::exception"* %tmp) #4
  %tmp1 = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept9exceptionE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp1, align 8, !tbaa !8
  %tmp2 = getelementptr inbounds %"class.adept::exception", %"class.adept::exception"* %arg, i64 0, i32 1
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp2) #4
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept15array_exceptionD0Ev(%"class.adept::array_exception"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::array_exception", %"class.adept::array_exception"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::array_exception"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt9exceptionC2Ev(%"class.std::exception"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::exception", %"class.std::exception"* %arg, i64 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVSt9exception, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp, align 8, !tbaa !8
  ret void
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(%"class.std::__cxx11::basic_string"* %arg) unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::allocator", align 1
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0
  %tmp2 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp3 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp3) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %tmp1, i8* %tmp2, %"class.std::allocator"* nonnull dereferenceable(1) %tmp)
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp3) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 0)
          to label %bb4 unwind label %bb5

bb4:                                              ; preds = %bb
  ret void

bb5:                                              ; preds = %bb
  %tmp6 = landingpad { i8*, i32 }
          catch i8* null
  %tmp7 = extractvalue { i8*, i32 } %tmp6, 0
  %tmp8 = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp8) #4
  call void @__clang_call_terminate(i8* %tmp7) #25
  unreachable
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept9exceptionD0Ev(%"class.adept::exception"* %arg) unnamed_addr #3 comdat align 2 {
bb:
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %arg) #4
  %tmp = bitcast %"class.adept::exception"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp) #27
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt9exceptionD1Ev(%"class.std::exception"*) unnamed_addr #2

; Function Attrs: nounwind
declare dso_local void @_ZNSt9exceptionD0Ev(%"class.std::exception"*) unnamed_addr #2

; Function Attrs: nounwind
declare dso_local i8* @_ZNKSt9exception4whatEv(%"class.std::exception"*) unnamed_addr #2

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2
  %tmp1 = bitcast %union.anon* %tmp to i8*
  %tmp2 = tail call i8* @_ZNSt14pointer_traitsIPcE10pointer_toERc(i8* nonnull dereferenceable(1) %tmp1) #4
  ret i8* %tmp2
}

; Function Attrs: noinline noreturn nounwind
define linkonce_odr hidden void @__clang_call_terminate(i8* %arg) local_unnamed_addr #22 comdat {
bb:
  %tmp = tail call i8* @__cxa_begin_catch(i8* %arg) #4
  tail call void @_ZSt9terminatev() #25
  unreachable
}

declare dso_local i8* @__cxa_begin_catch(i8*) local_unnamed_addr

declare dso_local void @_ZSt9terminatev() local_unnamed_addr

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg, i8* %arg1, %"class.std::allocator"* dereferenceable(1) %arg2) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg to %"class.std::allocator"*
  %tmp3 = tail call dereferenceable(1) %"class.std::allocator"* @_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_(%"class.std::allocator"* nonnull dereferenceable(1) %arg2) #4
  tail call void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %tmp, %"class.std::allocator"* nonnull dereferenceable(1) %tmp3) #4
  %tmp4 = getelementptr inbounds %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg, i64 0, i32 0
  store i8* %arg1, i8** %tmp4, align 8, !tbaa !78
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = alloca i8, align 1
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1)
  %tmp2 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp3 = getelementptr inbounds i8, i8* %tmp2, i64 %arg1
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp) #4
  store i8 0, i8* %tmp, align 1, !tbaa !53
  call void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %tmp3, i8* nonnull dereferenceable(1) %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSaIcED2Ev(%"class.std::allocator"* %arg) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"class.std::allocator"* %arg to %"class.__gnu_cxx::new_allocator"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIcED2Ev(%"class.__gnu_cxx::new_allocator"* %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZNSt14pointer_traitsIPcE10pointer_toERc(i8* dereferenceable(1) %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZSt9addressofIcEPT_RS0_(i8* nonnull dereferenceable(1) %arg) #4
  ret i8* %tmp
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZSt9addressofIcEPT_RS0_(i8* dereferenceable(1) %arg) local_unnamed_addr #18 comdat {
bb:
  %tmp = tail call i8* @_ZSt11__addressofIcEPT_RS0_(i8* nonnull dereferenceable(1) %arg) #4
  ret i8* %tmp
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZSt11__addressofIcEPT_RS0_(i8* dereferenceable(1) %arg) local_unnamed_addr #18 comdat {
bb:
  ret i8* %arg
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_(%"class.std::allocator"* dereferenceable(1) %arg) local_unnamed_addr #6 comdat {
bb:
  ret %"class.std::allocator"* %arg
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %arg, %"class.std::allocator"* dereferenceable(1) %arg1) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"class.std::allocator"* %arg to %"class.__gnu_cxx::new_allocator"*
  %tmp2 = bitcast %"class.std::allocator"* %arg1 to %"class.__gnu_cxx::new_allocator"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_(%"class.__gnu_cxx::new_allocator"* %tmp, %"class.__gnu_cxx::new_allocator"* nonnull dereferenceable(1) %tmp2) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIcEC2ERKS1_(%"class.__gnu_cxx::new_allocator"* %arg, %"class.__gnu_cxx::new_allocator"* dereferenceable(1) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 1
  store i64 %arg1, i64* %tmp, align 8, !tbaa !80
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %arg, i8* dereferenceable(1) %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load i8, i8* %arg1, align 1, !tbaa !53
  store i8 %tmp, i8* %arg, align 1, !tbaa !53
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0, i32 0
  %tmp1 = load i8*, i8** %tmp, align 8, !tbaa !82
  ret i8* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIcED2Ev(%"class.__gnu_cxx::new_allocator"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: nobuiltin nounwind
declare dso_local void @_ZdlPv(i8*) local_unnamed_addr #8

; Function Attrs: nounwind
declare dso_local void @_ZNSt9exceptionD2Ev(%"class.std::exception"*) unnamed_addr #2

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) local_unnamed_addr #0 align 2 {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
  ret %"class.std::__cxx11::basic_string"* %arg
}

declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_(%"class.std::__cxx11::basic_string"*, %"class.std::__cxx11::basic_string"* dereferenceable(32)) local_unnamed_addr #1

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  ret i8* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE8_M_clearEv(%"class.std::__cxx11::_List_base"* %arg) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !42
  %tmp3 = icmp eq %"struct.std::__detail::_List_node_base"* %tmp2, %tmp
  br i1 %tmp3, label %bb16, label %bb4

bb4:                                              ; preds = %bb11, %bb
  %tmp5 = phi %"struct.std::__detail::_List_node_base"* [ %tmp8, %bb11 ], [ %tmp2, %bb ]
  %tmp6 = bitcast %"struct.std::__detail::_List_node_base"* %tmp5 to %"struct.std::_List_node.73"*
  %tmp7 = getelementptr inbounds %"struct.std::__detail::_List_node_base", %"struct.std::__detail::_List_node_base"* %tmp5, i64 0, i32 0
  %tmp8 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp7, align 8, !tbaa !42
  %tmp9 = tail call %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp6)
  %tmp10 = tail call dereferenceable(1) %"class.std::allocator.3"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE21_M_get_Node_allocatorEv(%"class.std::__cxx11::_List_base"* %arg) #4
  invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE7destroyIS2_EEvRS4_PT_(%"class.std::allocator.3"* nonnull dereferenceable(1) %tmp10, %"struct.adept::Gap"* %tmp9)
          to label %bb11 unwind label %bb13

bb11:                                             ; preds = %bb4
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_put_nodeEPSt10_List_nodeIS2_E(%"class.std::__cxx11::_List_base"* %arg, %"struct.std::_List_node.73"* nonnull %tmp6) #4
  %tmp12 = icmp eq %"struct.std::__detail::_List_node_base"* %tmp8, %tmp
  br i1 %tmp12, label %bb16, label %bb4

bb13:                                             ; preds = %bb4
  %tmp14 = landingpad { i8*, i32 }
          catch i8* null
  %tmp15 = extractvalue { i8*, i32 } %tmp14, 0
  tail call void @__clang_call_terminate(i8* %tmp15) #25
  unreachable

bb16:                                             ; preds = %bb11, %bb
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEED2Ev(%"class.__gnu_cxx::new_allocator.4"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_node.73", %"struct.std::_List_node.73"* %arg, i64 0, i32 1
  %tmp1 = tail call %"struct.adept::Gap"* @_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* nonnull %tmp) #4
  ret %"struct.adept::Gap"* %tmp1
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE7destroyIS2_EEvRS4_PT_(%"class.std::allocator.3"* dereferenceable(1) %arg, %"struct.adept::Gap"* %arg1) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.3"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  tail call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE7destroyIS3_EEvPT_(%"class.__gnu_cxx::new_allocator.4"* nonnull %tmp, %"struct.adept::Gap"* %arg1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.3"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE21_M_get_Node_allocatorEv(%"class.std::__cxx11::_List_base"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::__cxx11::_List_base"* %arg to %"class.std::allocator.3"*
  ret %"class.std::allocator.3"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_put_nodeEPSt10_List_nodeIS2_E(%"class.std::__cxx11::_List_base"* %arg, %"struct.std::_List_node.73"* %arg1) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"class.std::__cxx11::_List_base"* %arg to %"class.std::allocator.3"*
  invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE10deallocateERS4_PS3_m(%"class.std::allocator.3"* dereferenceable(1) %tmp, %"struct.std::_List_node.73"* %arg1, i64 1)
          to label %bb2 unwind label %bb3

bb2:                                              ; preds = %bb
  ret void

bb3:                                              ; preds = %bb
  %tmp4 = landingpad { i8*, i32 }
          catch i8* null
  %tmp5 = extractvalue { i8*, i32 } %tmp4, 0
  tail call void @__clang_call_terminate(i8* %tmp5) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) #4
  %tmp1 = bitcast i8* %tmp to %"struct.adept::Gap"*
  ret %"struct.adept::Gap"* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZN9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf.74", %"struct.__gnu_cxx::__aligned_membuf.74"* %arg, i64 0, i32 0, i64 0
  ret i8* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE7destroyIS3_EEvPT_(%"class.__gnu_cxx::new_allocator.4"* %arg, %"struct.adept::Gap"* %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE10deallocateERS4_PS3_m(%"class.std::allocator.3"* dereferenceable(1) %arg, %"struct.std::_List_node.73"* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.3"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  tail call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE10deallocateEPS4_m(%"class.__gnu_cxx::new_allocator.4"* nonnull %tmp, %"struct.std::_List_node.73"* %arg1, i64 %arg2)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE10deallocateEPS4_m(%"class.__gnu_cxx::new_allocator.4"* %arg, %"struct.std::_List_node.73"* %arg1, i64 %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_List_node.73"* %arg1 to i8*
  tail call void @_ZdlPv(i8* %tmp) #4
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept18autodiff_exceptionC2Ev(%"class.adept::autodiff_exception"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::autodiff_exception", %"class.adept::autodiff_exception"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionC2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = getelementptr inbounds %"class.adept::autodiff_exception", %"class.adept::autodiff_exception"* %arg, i64 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept18autodiff_exceptionE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp1, align 8, !tbaa !8
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept20stack_already_activeD0Ev(%"class.adept::stack_already_active"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::stack_already_active", %"class.adept::stack_already_active"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::stack_already_active"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept18autodiff_exceptionD0Ev(%"class.adept::autodiff_exception"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::autodiff_exception", %"class.adept::autodiff_exception"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::autodiff_exception"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept25gradients_not_initializedD0Ev(%"class.adept::gradients_not_initialized"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::gradients_not_initialized", %"class.adept::gradients_not_initialized"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::gradients_not_initialized"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept21feature_not_availableD0Ev(%"class.adept::feature_not_available"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::feature_not_available", %"class.adept::feature_not_available"* %arg, i64 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::feature_not_available"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIdEC2EDv2_d(%"struct.adept::internal::Packet"* %arg, <2 x double> %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0
  store <2 x double> %arg1, <2 x double>* %tmp, align 16, !tbaa !53
  ret void
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept41dependents_or_independents_not_identifiedD0Ev(%"class.adept::dependents_or_independents_not_identified"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::dependents_or_independents_not_identified", %"class.adept::dependents_or_independents_not_identified"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::dependents_or_independents_not_identified"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrigC2Ev(%"class.adept::internal::StackStorageOrig"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.adept::internal::StackStorageOrig"* %arg to i8*
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp, i8 0, i64 40, i1 false)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(%"class.std::vector"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0
  invoke void @_ZNSt12_Vector_baseIiSaIiEEC2Ev(%"struct.std::_Vector_base"* %tmp)
          to label %bb1 unwind label %bb2

bb1:                                              ; preds = %bb
  ret void

bb2:                                              ; preds = %bb
  %tmp3 = landingpad { i8*, i32 }
          catch i8* null
  %tmp4 = extractvalue { i8*, i32 } %tmp3, 0
  tail call void @__clang_call_terminate(i8* %tmp4) #25
  unreachable
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EEC2Ev(%"class.std::__cxx11::list"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EEC2Ev(%"class.std::__cxx11::_List_base"* %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig10initializeEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 %arg1) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp, i64 8)
  %tmp3 = extractvalue { i64, i1 } %tmp2, 1
  %tmp4 = extractvalue { i64, i1 } %tmp2, 0
  %tmp5 = select i1 %tmp3, i64 -1, i64 %tmp4
  %tmp6 = tail call i8* @_Znam(i64 %tmp5) #28
  %tmp7 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 1
  %tmp8 = bitcast double** %tmp7 to i8**
  store i8* %tmp6, i8** %tmp8, align 8, !tbaa !26
  %tmp9 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %tmp, i64 4)
  %tmp10 = extractvalue { i64, i1 } %tmp9, 1
  %tmp11 = extractvalue { i64, i1 } %tmp9, 0
  %tmp12 = select i1 %tmp10, i64 -1, i64 %tmp11
  %tmp13 = tail call i8* @_Znam(i64 %tmp12) #28
  %tmp14 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 2
  %tmp15 = bitcast i32** %tmp14 to i8**
  store i8* %tmp13, i8** %tmp15, align 8, !tbaa !27
  %tmp16 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 6
  store i32 %arg1, i32* %tmp16, align 4, !tbaa !52
  %tmp17 = tail call i8* @_Znam(i64 %tmp5) #28
  %tmp18 = bitcast i8* %tmp17 to %"struct.adept::internal::Statement"*
  %tmp19 = icmp eq i32 %arg1, 0
  br i1 %tmp19, label %bb26, label %bb20

bb20:                                             ; preds = %bb
  %tmp21 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp18, i64 %tmp
  br label %bb22

bb22:                                             ; preds = %bb22, %bb20
  %tmp23 = phi %"struct.adept::internal::Statement"* [ %tmp18, %bb20 ], [ %tmp24, %bb22 ]
  tail call void @_ZN5adept8internal9StatementC2Ev(%"struct.adept::internal::Statement"* %tmp23)
  %tmp24 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp23, i64 1
  %tmp25 = icmp eq %"struct.adept::internal::Statement"* %tmp24, %tmp21
  br i1 %tmp25, label %bb26, label %bb22

bb26:                                             ; preds = %bb22, %bb
  %tmp27 = bitcast %"class.adept::internal::StackStorageOrig"* %arg to i8**
  store i8* %tmp17, i8** %tmp27, align 8, !tbaa !24
  %tmp28 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 4
  store i32 %arg1, i32* %tmp28, align 4, !tbaa !50
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIiSaIiEEC2Ev(%"struct.std::_Vector_base"* %arg) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %arg, i64 0, i32 0
  tail call void @_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev(%"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl"* %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIiSaIiEE12_Vector_implC2Ev(%"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl"* %arg to %"class.std::allocator.0"*
  tail call void @_ZNSaIiEC2Ev(%"class.std::allocator.0"* %tmp) #4
  %tmp1 = bitcast %"struct.std::_Vector_base<int, std::allocator<int> >::_Vector_impl"* %arg to i8*
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp1, i8 0, i64 24, i1 false)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSaIiEC2Ev(%"class.std::allocator.0"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.0"* %arg to %"class.__gnu_cxx::new_allocator.1"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIiEC2Ev(%"class.__gnu_cxx::new_allocator.1"* %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIiEC2Ev(%"class.__gnu_cxx::new_allocator.1"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EEC2Ev(%"class.std::__cxx11::_List_base"* %arg) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE10_List_implC2Ev(%"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl"* %tmp) #4
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE7_M_initEv(%"class.std::__cxx11::_List_base"* %arg) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE10_List_implC2Ev(%"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl"* %arg) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl"* %arg to %"class.std::allocator.3"*
  tail call void @_ZNSaISt10_List_nodeIN5adept3GapEEEC2Ev(%"class.std::allocator.3"* %tmp) #4
  %tmp1 = bitcast %"struct.std::__cxx11::_List_base<adept::Gap, std::allocator<adept::Gap> >::_List_impl"* %arg to i8*
  tail call void @llvm.memset.p0i8.i64(i8* align 8 %tmp1, i8 0, i64 24, i1 false)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE7_M_initEv(%"class.std::__cxx11::_List_base"* %arg) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !42
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0, i32 0, i32 1
  store %"struct.std::__detail::_List_node_base"* %tmp, %"struct.std::__detail::_List_node_base"** %tmp2, align 8, !tbaa !47
  invoke void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_set_sizeEm(%"class.std::__cxx11::_List_base"* %arg, i64 0)
          to label %bb3 unwind label %bb4

bb3:                                              ; preds = %bb
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          catch i8* null
  %tmp6 = extractvalue { i8*, i32 } %tmp5, 0
  tail call void @__clang_call_terminate(i8* %tmp6) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSaISt10_List_nodeIN5adept3GapEEEC2Ev(%"class.std::allocator.3"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.3"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  tail call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEEC2Ev(%"class.__gnu_cxx::new_allocator.4"* %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEEC2Ev(%"class.__gnu_cxx::new_allocator.4"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_set_sizeEm(%"class.std::__cxx11::_List_base"* %arg, i64 %arg1) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0
  %tmp2 = tail call i64* @_ZNSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %tmp)
  store i64 %arg1, i64* %tmp2, align 8, !tbaa !83
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64* @_ZNSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_node", %"struct.std::_List_node"* %arg, i64 0, i32 1
  %tmp1 = tail call i64* @_ZN9__gnu_cxx16__aligned_membufImE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf"* nonnull %tmp) #4
  ret i64* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64* @_ZN9__gnu_cxx16__aligned_membufImE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZN9__gnu_cxx16__aligned_membufImE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) #4
  %tmp1 = bitcast i8* %tmp to i64*
  ret i64* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZN9__gnu_cxx16__aligned_membufImE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", %"struct.__gnu_cxx::__aligned_membuf"* %arg, i64 0, i32 0, i64 0
  ret i8* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig11clear_stackEv(%"class.adept::internal::StackStorageOrig"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 5
  store i32 0, i32* %tmp, align 8, !tbaa !51
  %tmp1 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 3
  store i32 0, i32* %tmp1, align 8, !tbaa !28
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack18clear_independentsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 2
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(%"class.std::vector"* nonnull %tmp) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack16clear_dependentsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 3
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(%"class.std::vector"* nonnull %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack15clear_gradientsEv(%"class.adept::Stack"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 10
  store i8 0, i8* %tmp, align 8, !tbaa !35
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %arg, i32* dereferenceable(4) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 3
  %tmp2 = load i32, i32* %tmp, align 8, !tbaa !28
  %tmp3 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 4
  %tmp4 = load i32, i32* %tmp3, align 4, !tbaa !50
  %tmp5 = icmp slt i32 %tmp2, %tmp4
  br i1 %tmp5, label %bb7, label %bb6

bb6:                                              ; preds = %bb
  tail call void @_ZN5adept8internal16StackStorageOrig20grow_statement_stackEi(%"class.adept::internal::StackStorageOrig"* nonnull %arg, i32 0)
  %.pre = load i32, i32* %tmp, align 8, !tbaa !28
  br label %bb7

bb7:                                              ; preds = %bb6, %bb
  %tmp8 = phi i32 [ %.pre, %bb6 ], [ %tmp2, %bb ]
  %tmp9 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp10 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 0
  %tmp11 = load %"struct.adept::internal::Statement"*, %"struct.adept::internal::Statement"** %tmp10, align 8, !tbaa !24
  %tmp12 = sext i32 %tmp8 to i64
  %tmp13 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp11, i64 %tmp12, i32 0
  store i32 %tmp9, i32* %tmp13, align 4, !tbaa !29
  %tmp14 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 5
  %tmp15 = load i32, i32* %tmp14, align 8, !tbaa !51
  %tmp16 = add nsw i32 %tmp8, 1
  store i32 %tmp16, i32* %tmp, align 8, !tbaa !28
  %tmp17 = getelementptr inbounds %"struct.adept::internal::Statement", %"struct.adept::internal::Statement"* %tmp11, i64 %tmp12, i32 1
  store i32 %tmp15, i32* %tmp17, align 4, !tbaa !33
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIiSaIiEE5clearEv(%"class.std::vector"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp1 = load i32*, i32** %tmp, align 8, !tbaa !20
  tail call void @_ZNSt6vectorIiSaIiEE15_M_erase_at_endEPi(%"class.std::vector"* %arg, i32* %tmp1) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIiSaIiEE15_M_erase_at_endEPi(%"class.std::vector"* %arg, i32* %arg1) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0
  %tmp2 = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp3 = load i32*, i32** %tmp2, align 8, !tbaa !23
  %tmp4 = tail call dereferenceable(1) %"class.std::allocator.0"* @_ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %tmp) #4
  invoke void @_ZSt8_DestroyIPiiEvT_S1_RSaIT0_E(i32* %arg1, i32* %tmp3, %"class.std::allocator.0"* nonnull dereferenceable(1) %tmp4)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  store i32* %arg1, i32** %tmp2, align 8, !tbaa !23
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          catch i8* null
  %tmp8 = extractvalue { i8*, i32 } %tmp7, 0
  tail call void @__clang_call_terminate(i8* %tmp8) #25
  unreachable
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt8_DestroyIPiiEvT_S1_RSaIT0_E(i32* %arg, i32* %arg1, %"class.std::allocator.0"* dereferenceable(1) %arg2) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZSt8_DestroyIPiEvT_S1_(i32* %arg, i32* %arg1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.0"* @_ZNSt12_Vector_baseIiSaIiEE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_Vector_base"* %arg to %"class.std::allocator.0"*
  ret %"class.std::allocator.0"* %tmp
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt8_DestroyIPiEvT_S1_(i32* %arg, i32* %arg1) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_(i32* %arg, i32* %arg1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIPiEEvT_S3_(i32* %arg, i32* %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIcEC2Ev(%"class.__gnu_cxx::new_allocator"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* %arg)
  br i1 %tmp, label %bb4, label %bb1

bb1:                                              ; preds = %bb
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2, i32 0
  %tmp3 = load i64, i64* %tmp2, align 8, !tbaa !53
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp3) #4
  br label %bb4

bb4:                                              ; preds = %bb1, %bb
  ret void
}

declare dso_local void @__cxa_call_unexpected(i8*) local_unnamed_addr

; Function Attrs: norecurse uwtable
define available_externally dso_local zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #14 align 2 {
bb:
  %tmp = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp1 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp2 = icmp eq i8* %tmp, %tmp1
  ret i1 %tmp2
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1) local_unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp2 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp3 = add i64 %arg1, 1
  invoke void @_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm(%"class.std::allocator"* nonnull dereferenceable(1) %tmp, i8* %tmp2, i64 %tmp3)
          to label %bb4 unwind label %bb5

bb4:                                              ; preds = %bb
  ret void

bb5:                                              ; preds = %bb
  %tmp6 = landingpad { i8*, i32 }
          filter [0 x i8*] zeroinitializer
  %tmp7 = extractvalue { i8*, i32 } %tmp6, 0
  tail call void @__cxa_call_unexpected(i8* %tmp7) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2
  %tmp1 = bitcast %union.anon* %tmp to i8*
  %tmp2 = tail call i8* @_ZNSt14pointer_traitsIPKcE10pointer_toERS0_(i8* nonnull dereferenceable(1) %tmp1) #4
  ret i8* %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZNSt14pointer_traitsIPKcE10pointer_toERS0_(i8* dereferenceable(1) %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZSt9addressofIKcEPT_RS1_(i8* nonnull dereferenceable(1) %arg) #4
  ret i8* %tmp
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZSt9addressofIKcEPT_RS1_(i8* dereferenceable(1) %arg) local_unnamed_addr #18 comdat {
bb:
  %tmp = tail call i8* @_ZSt11__addressofIKcEPT_RS1_(i8* nonnull dereferenceable(1) %arg) #4
  ret i8* %tmp
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZSt11__addressofIKcEPT_RS1_(i8* dereferenceable(1) %arg) local_unnamed_addr #18 comdat {
bb:
  ret i8* %arg
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm(%"class.std::allocator"* dereferenceable(1) %arg, i8* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator"* %arg to %"class.__gnu_cxx::new_allocator"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm(%"class.__gnu_cxx::new_allocator"* nonnull %tmp, i8* %arg1, i64 %arg2)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  ret %"class.std::allocator"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm(%"class.__gnu_cxx::new_allocator"* %arg, i8* %arg1, i64 %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  tail call void @_ZdlPv(i8* %arg1) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg, i8* %arg1, %"class.std::allocator"* dereferenceable(1) %arg2) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcEC2ERKS_(%"class.std::allocator"* %tmp, %"class.std::allocator"* nonnull dereferenceable(1) %arg2) #4
  %tmp3 = getelementptr inbounds %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider", %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %arg, i64 0, i32 0
  store i8* %arg1, i8** %tmp3, align 8, !tbaa !78
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPKcEEvT_S8_St12__false_type(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call i64 @strlen(i8* %arg) #4
  ret i64 %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPKcEEvT_S8_St12__false_type(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca i64, align 8
  %tmp3 = tail call zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_(i8* %arg1)
  %tmp4 = xor i1 %tmp3, true
  %tmp5 = icmp eq i8* %arg1, %arg2
  %tmp6 = or i1 %tmp5, %tmp4
  br i1 %tmp6, label %bb8, label %bb7

bb7:                                              ; preds = %bb
  tail call void @_ZSt19__throw_logic_errorPKc(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.97, i64 0, i64 0)) #26
  unreachable

bb8:                                              ; preds = %bb
  %tmp9 = bitcast i64* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = tail call i64 @_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_(i8* %arg1, i8* %arg2)
  store i64 %tmp10, i64* %tmp, align 8, !tbaa !83
  %tmp11 = icmp ugt i64 %tmp10, 15
  br i1 %tmp11, label %bb12, label %bb15

bb12:                                             ; preds = %bb8
  %tmp13 = call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(%"class.std::__cxx11::basic_string"* %arg, i64* nonnull dereferenceable(8) %tmp, i64 0)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %tmp13)
  %tmp14 = load i64, i64* %tmp, align 8, !tbaa !83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp14)
  br label %bb15

bb15:                                             ; preds = %bb12, %bb8
  %tmp16 = call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(i8* %tmp16, i8* %arg1, i8* %arg2) #4
  %tmp17 = load i64, i64* %tmp, align 8, !tbaa !83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp17)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  ret void
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_(i8* %arg) local_unnamed_addr #18 comdat {
bb:
  %tmp = icmp eq i8* %arg, null
  ret i1 %tmp
}

; Function Attrs: noreturn
declare dso_local void @_ZSt19__throw_logic_errorPKc(i8*) local_unnamed_addr #23

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local i64 @_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_(i8* %arg, i8* %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca i8*, align 8
  store i8* %arg, i8** %tmp, align 8, !tbaa !18
  call void @_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_(i8** nonnull dereferenceable(8) %tmp)
  %tmp2 = call i64 @_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag(i8* %arg, i8* %arg1)
  ret i64 %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0, i32 0
  store i8* %arg1, i8** %tmp, align 8, !tbaa !82
  ret void
}

declare dso_local i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(%"class.std::__cxx11::basic_string"*, i64* dereferenceable(8), i64) local_unnamed_addr #1

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2, i32 0
  store i64 %arg1, i64* %tmp, align 8, !tbaa !53
  ret void
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(i8* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = ptrtoint i8* %arg2 to i64
  %tmp3 = ptrtoint i8* %arg1 to i64
  %tmp4 = sub i64 %tmp, %tmp3
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm(i8* %arg, i8* %arg1, i64 %tmp4)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          catch i8* null
  %tmp8 = extractvalue { i8*, i32 } %tmp7, 0
  tail call void @__clang_call_terminate(i8* %tmp8) #25
  unreachable
}

declare dso_local void @__cxa_rethrow() local_unnamed_addr

declare dso_local void @__cxa_end_catch() local_unnamed_addr

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag(i8* %arg, i8* %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = ptrtoint i8* %arg1 to i64
  %tmp2 = ptrtoint i8* %arg to i64
  %tmp3 = sub i64 %tmp, %tmp2
  ret i64 %tmp3
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_(i8** dereferenceable(8) %arg) local_unnamed_addr #18 comdat {
bb:
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm(i8* %arg, i8* %arg1, i64 %arg2) local_unnamed_addr #0 align 2 {
bb:
  %tmp = icmp eq i64 %arg2, 1
  br i1 %tmp, label %bb3, label %bb4

bb3:                                              ; preds = %bb
  tail call void @_ZNSt11char_traitsIcE6assignERcRKc(i8* dereferenceable(1) %arg, i8* dereferenceable(1) %arg1) #4
  br label %bb6

bb4:                                              ; preds = %bb
  %tmp5 = tail call i8* @_ZNSt11char_traitsIcE4copyEPcPKcm(i8* %arg, i8* %arg1, i64 %arg2)
  br label %bb6

bb6:                                              ; preds = %bb4, %bb3
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i8* @_ZNSt11char_traitsIcE4copyEPcPKcm(i8* %arg, i8* %arg1, i64 %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = icmp eq i64 %arg2, 0
  br i1 %tmp, label %bb4, label %bb3

bb3:                                              ; preds = %bb
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %arg, i8* align 1 %arg1, i64 %arg2, i1 false)
  br label %bb4

bb4:                                              ; preds = %bb3, %bb
  ret i8* %arg
}

; Function Attrs: argmemonly nounwind readonly
declare dso_local i64 @strlen(i8* nocapture) local_unnamed_addr #24

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev(%"class.std::basic_ios"* %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 0
  tail call void @_ZNSt8ios_baseC2Ev(%"class.std::ios_base"* %tmp) #4
  %tmp1 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [4 x i8*] }, { [4 x i8*] }* @_ZTVSt9basic_iosIcSt11char_traitsIcEE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp1, align 8, !tbaa !8
  %tmp2 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 1
  store %"class.std::basic_ostream"* null, %"class.std::basic_ostream"** %tmp2, align 8, !tbaa !84
  %tmp3 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 2
  store i8 0, i8* %tmp3, align 8, !tbaa !86
  %tmp4 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 3
  store i8 0, i8* %tmp4, align 1, !tbaa !87
  %tmp5 = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 4
  %tmp6 = bitcast %"class.std::basic_streambuf"** %tmp5 to i8*
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %tmp6, i8 0, i64 32, i1 false)
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSdC2Ev(%"class.std::basic_iostream"* %arg, i8** %arg1) unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = bitcast %"class.std::basic_iostream"* %arg to %"class.std::basic_istream"*
  %tmp2 = getelementptr inbounds i8*, i8** %arg1, i64 1
  tail call void @_ZNSiC2Ev(%"class.std::basic_istream"* %tmp, i8** nonnull %tmp2)
  %tmp3 = getelementptr inbounds %"class.std::basic_iostream", %"class.std::basic_iostream"* %arg, i64 0, i32 1
  %tmp4 = bitcast %"class.std::basic_ostream.base"* %tmp3 to %"class.std::basic_ostream"*
  %tmp5 = getelementptr inbounds i8*, i8** %arg1, i64 3
  invoke void @_ZNSoC2Ev(%"class.std::basic_ostream"* nonnull %tmp4, i8** nonnull %tmp5)
          to label %bb6 unwind label %bb24

bb6:                                              ; preds = %bb
  %tmp7 = bitcast %"class.std::basic_iostream"* %arg to i8*
  %tmp8 = bitcast i8** %arg1 to i64*
  %tmp9 = load i64, i64* %tmp8, align 8
  %tmp10 = bitcast %"class.std::basic_iostream"* %arg to i64*
  store i64 %tmp9, i64* %tmp10, align 8, !tbaa !8
  %tmp11 = getelementptr inbounds i8*, i8** %arg1, i64 5
  %tmp12 = bitcast i8** %tmp11 to i64*
  %tmp13 = load i64, i64* %tmp12, align 8
  %tmp14 = inttoptr i64 %tmp9 to i8*
  %tmp15 = getelementptr i8, i8* %tmp14, i64 -24
  %tmp16 = bitcast i8* %tmp15 to i64*
  %tmp17 = load i64, i64* %tmp16, align 8
  %tmp18 = getelementptr inbounds i8, i8* %tmp7, i64 %tmp17
  %tmp19 = bitcast i8* %tmp18 to i64*
  store i64 %tmp13, i64* %tmp19, align 8, !tbaa !8
  %tmp20 = getelementptr inbounds i8*, i8** %arg1, i64 6
  %tmp21 = bitcast i8** %tmp20 to i64*
  %tmp22 = load i64, i64* %tmp21, align 8
  %tmp23 = bitcast %"class.std::basic_ostream.base"* %tmp3 to i64*
  store i64 %tmp22, i64* %tmp23, align 8, !tbaa !8
  ret void

bb24:                                             ; preds = %bb
  %tmp25 = landingpad { i8*, i32 }
          cleanup
  tail call void @_ZNSiD2Ev(%"class.std::basic_istream"* %tmp, i8** nonnull %tmp2) #4
  resume { i8*, i32 } %tmp25
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode(%"class.std::__cxx11::basic_stringbuf"* %arg, i32 %arg1) unnamed_addr #0 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 0
  tail call void @_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev(%"class.std::basic_streambuf"* %tmp)
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [16 x i8*] }, { [16 x i8*] }* @_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 1
  store i32 %arg1, i32* %tmp3, align 8, !tbaa !88
  %tmp4 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 2
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp4) #4
  ret void
}

declare dso_local void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"*, %"class.std::basic_streambuf"*) local_unnamed_addr #1

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_stringbuf"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [16 x i8*] }, { [16 x i8*] }* @_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp, align 8, !tbaa !8
  %tmp1 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 2
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp1) #4
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg, i64 0, i32 0
  tail call void @_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev(%"class.std::basic_streambuf"* %tmp2) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSdD2Ev(%"class.std::basic_iostream"* %arg, i8** %arg1) unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_iostream", %"class.std::basic_iostream"* %arg, i64 0, i32 1
  %tmp2 = bitcast %"class.std::basic_ostream.base"* %tmp to %"class.std::basic_ostream"*
  %tmp3 = getelementptr inbounds i8*, i8** %arg1, i64 3
  tail call void @_ZNSoD2Ev(%"class.std::basic_ostream"* nonnull %tmp2, i8** nonnull %tmp3) #4
  %tmp4 = bitcast %"class.std::basic_iostream"* %arg to %"class.std::basic_istream"*
  %tmp5 = getelementptr inbounds i8*, i8** %arg1, i64 1
  tail call void @_ZNSiD2Ev(%"class.std::basic_istream"* %tmp4, i8** nonnull %tmp5) #4
  ret void
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev(%"class.std::basic_ios"* %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 0
  tail call void @_ZNSt8ios_baseD2Ev(%"class.std::ios_base"* %tmp) #4
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt8ios_baseC2Ev(%"class.std::ios_base"*) unnamed_addr #2

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSiC2Ev(%"class.std::basic_istream"* %arg, i8** %arg1) unnamed_addr #0 align 2 {
bb:
  %tmp = bitcast i8** %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8
  %tmp3 = bitcast %"class.std::basic_istream"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !8
  %tmp4 = getelementptr inbounds i8*, i8** %arg1, i64 1
  %tmp5 = bitcast i8** %tmp4 to i64*
  %tmp6 = load i64, i64* %tmp5, align 8
  %tmp7 = bitcast %"class.std::basic_istream"* %arg to i8**
  %tmp8 = inttoptr i64 %tmp2 to i8*
  %tmp9 = getelementptr i8, i8* %tmp8, i64 -24
  %tmp10 = bitcast i8* %tmp9 to i64*
  %tmp11 = load i64, i64* %tmp10, align 8
  %tmp12 = bitcast %"class.std::basic_istream"* %arg to i8*
  %tmp13 = getelementptr inbounds i8, i8* %tmp12, i64 %tmp11
  %tmp14 = bitcast i8* %tmp13 to i64*
  store i64 %tmp6, i64* %tmp14, align 8, !tbaa !8
  %tmp15 = getelementptr inbounds %"class.std::basic_istream", %"class.std::basic_istream"* %arg, i64 0, i32 1
  store i64 0, i64* %tmp15, align 8, !tbaa !91
  %tmp16 = load i8*, i8** %tmp7, align 8, !tbaa !8
  %tmp17 = getelementptr i8, i8* %tmp16, i64 -24
  %tmp18 = bitcast i8* %tmp17 to i64*
  %tmp19 = load i64, i64* %tmp18, align 8
  %tmp20 = getelementptr inbounds i8, i8* %tmp12, i64 %tmp19
  %tmp21 = bitcast i8* %tmp20 to %"class.std::basic_ios"*
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"* %tmp21, %"class.std::basic_streambuf"* null)
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSoC2Ev(%"class.std::basic_ostream"* %arg, i8** %arg1) unnamed_addr #0 align 2 {
bb:
  %tmp = bitcast i8** %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8
  %tmp3 = bitcast %"class.std::basic_ostream"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !8
  %tmp4 = getelementptr inbounds i8*, i8** %arg1, i64 1
  %tmp5 = bitcast i8** %tmp4 to i64*
  %tmp6 = load i64, i64* %tmp5, align 8
  %tmp7 = bitcast %"class.std::basic_ostream"* %arg to i8**
  %tmp8 = inttoptr i64 %tmp2 to i8*
  %tmp9 = getelementptr i8, i8* %tmp8, i64 -24
  %tmp10 = bitcast i8* %tmp9 to i64*
  %tmp11 = load i64, i64* %tmp10, align 8
  %tmp12 = bitcast %"class.std::basic_ostream"* %arg to i8*
  %tmp13 = getelementptr inbounds i8, i8* %tmp12, i64 %tmp11
  %tmp14 = bitcast i8* %tmp13 to i64*
  store i64 %tmp6, i64* %tmp14, align 8, !tbaa !8
  %tmp15 = load i8*, i8** %tmp7, align 8, !tbaa !8
  %tmp16 = getelementptr i8, i8* %tmp15, i64 -24
  %tmp17 = bitcast i8* %tmp16 to i64*
  %tmp18 = load i64, i64* %tmp17, align 8
  %tmp19 = getelementptr inbounds i8, i8* %tmp12, i64 %tmp18
  %tmp20 = bitcast i8* %tmp19 to %"class.std::basic_ios"*
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E(%"class.std::basic_ios"* %tmp20, %"class.std::basic_streambuf"* null)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSiD2Ev(%"class.std::basic_istream"* %arg, i8** %arg1) unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast i8** %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8
  %tmp3 = bitcast %"class.std::basic_istream"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !8
  %tmp4 = getelementptr inbounds i8*, i8** %arg1, i64 1
  %tmp5 = bitcast i8** %tmp4 to i64*
  %tmp6 = load i64, i64* %tmp5, align 8
  %tmp7 = inttoptr i64 %tmp2 to i8*
  %tmp8 = getelementptr i8, i8* %tmp7, i64 -24
  %tmp9 = bitcast i8* %tmp8 to i64*
  %tmp10 = load i64, i64* %tmp9, align 8
  %tmp11 = bitcast %"class.std::basic_istream"* %arg to i8*
  %tmp12 = getelementptr inbounds i8, i8* %tmp11, i64 %tmp10
  %tmp13 = bitcast i8* %tmp12 to i64*
  store i64 %tmp6, i64* %tmp13, align 8, !tbaa !8
  %tmp14 = getelementptr inbounds %"class.std::basic_istream", %"class.std::basic_istream"* %arg, i64 0, i32 1
  store i64 0, i64* %tmp14, align 8, !tbaa !91
  ret void
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev(%"class.std::basic_streambuf"* %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [16 x i8*] }, { [16 x i8*] }* @_ZTVSt15basic_streambufIcSt11char_traitsIcEE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp, align 8, !tbaa !8
  %tmp1 = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 1
  %tmp2 = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 7
  %tmp3 = bitcast i8** %tmp1 to i8*
  call void @llvm.memset.p0i8.i64(i8* nonnull align 8 %tmp3, i8 0, i64 48, i1 false)
  tail call void @_ZNSt6localeC1Ev(%"class.std::locale"* nonnull %tmp2) #4
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt6localeC1Ev(%"class.std::locale"*) unnamed_addr #2

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev(%"class.std::basic_streambuf"* %arg) unnamed_addr #3 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [16 x i8*] }, { [16 x i8*] }* @_ZTVSt15basic_streambufIcSt11char_traitsIcEE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp, align 8, !tbaa !8
  %tmp1 = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 7
  tail call void @_ZNSt6localeD1Ev(%"class.std::locale"* nonnull %tmp1) #4
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt6localeD1Ev(%"class.std::locale"*) unnamed_addr #2

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local void @_ZNSoD2Ev(%"class.std::basic_ostream"* %arg, i8** %arg1) unnamed_addr #6 align 2 {
bb:
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt8ios_baseD2Ev(%"class.std::ios_base"*) unnamed_addr #2

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_stringstream"* %arg, i8** %arg1) unnamed_addr #3 align 2 {
bb:
  %tmp = bitcast i8** %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8
  %tmp3 = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !8
  %tmp4 = getelementptr inbounds i8*, i8** %arg1, i64 8
  %tmp5 = bitcast i8** %tmp4 to i64*
  %tmp6 = load i64, i64* %tmp5, align 8
  %tmp7 = inttoptr i64 %tmp2 to i8*
  %tmp8 = getelementptr i8, i8* %tmp7, i64 -24
  %tmp9 = bitcast i8* %tmp8 to i64*
  %tmp10 = load i64, i64* %tmp9, align 8
  %tmp11 = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to i8*
  %tmp12 = getelementptr inbounds i8, i8* %tmp11, i64 %tmp10
  %tmp13 = bitcast i8* %tmp12 to i64*
  store i64 %tmp6, i64* %tmp13, align 8, !tbaa !8
  %tmp14 = getelementptr inbounds i8*, i8** %arg1, i64 9
  %tmp15 = bitcast i8** %tmp14 to i64*
  %tmp16 = load i64, i64* %tmp15, align 8
  %tmp17 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 0, i32 1
  %tmp18 = bitcast %"class.std::basic_ostream.base"* %tmp17 to i64*
  store i64 %tmp16, i64* %tmp18, align 8, !tbaa !8
  %tmp19 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %arg, i64 0, i32 1
  tail call void @_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_stringbuf"* nonnull %tmp19) #4
  %tmp20 = bitcast %"class.std::__cxx11::basic_stringstream"* %arg to %"class.std::basic_iostream"*
  %tmp21 = getelementptr inbounds i8*, i8** %arg1, i64 1
  tail call void @_ZNSdD2Ev(%"class.std::basic_iostream"* %tmp20, i8** nonnull %tmp21) #4
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate(%"class.std::basic_ios"* %arg, i32 %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i32 @_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv(%"class.std::basic_ios"* %arg)
  %tmp2 = tail call i32 @_ZStorSt12_Ios_IostateS_(i32 %tmp, i32 %arg1)
  tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"* %arg, i32 %tmp2)
  ret void
}

declare dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* dereferenceable(272), i8*, i64) local_unnamed_addr #1

declare dso_local void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"*, i32) local_unnamed_addr #1

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZStorSt12_Ios_IostateS_(i32 %arg, i32 %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = or i32 %arg1, %arg
  ret i32 %tmp
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i32 @_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv(%"class.std::basic_ios"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_ios", %"class.std::basic_ios"* %arg, i64 0, i32 0, i32 5
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !93
  ret i32 %tmp1
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv(%"class.std::__cxx11::basic_string"* noalias sret %arg, %"class.std::__cxx11::basic_stringbuf"* %arg1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = alloca %"class.std::allocator", align 1
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp5 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg1, i64 0, i32 0
  %tmp6 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp7 = icmp eq i8* %tmp6, null
  br i1 %tmp7, label %bb38, label %bb8

bb8:                                              ; preds = %bb
  %tmp9 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp10 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp11 = icmp ugt i8* %tmp9, %tmp10
  br i1 %tmp11, label %bb12, label %bb27

bb12:                                             ; preds = %bb8
  %tmp13 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp13) #4
  %tmp14 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp15 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp16 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* %tmp14, i8* %tmp15, %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb17 unwind label %bb23

bb17:                                             ; preds = %bb12
  %tmp18 = call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp13) #4
  br label %bb41

bb19:                                             ; preds = %bb38
  %tmp20 = landingpad { i8*, i32 }
          cleanup
  %tmp21 = extractvalue { i8*, i32 } %tmp20, 0
  %tmp22 = extractvalue { i8*, i32 } %tmp20, 1
  br label %bb42

bb23:                                             ; preds = %bb12
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp16) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp13) #4
  br label %bb42

bb27:                                             ; preds = %bb8
  %tmp28 = bitcast %"class.std::__cxx11::basic_string"* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp28) #4
  %tmp29 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp30 = tail call i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %tmp5)
  %tmp31 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp4, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp31) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, i8* %tmp29, i8* %tmp30, %"class.std::allocator"* nonnull dereferenceable(1) %tmp4)
          to label %bb32 unwind label %bb34

bb32:                                             ; preds = %bb27
  %tmp33 = call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp3) #4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp3) #4
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp31) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp28) #4
  br label %bb41

bb34:                                             ; preds = %bb27
  %tmp35 = landingpad { i8*, i32 }
          cleanup
  %tmp36 = extractvalue { i8*, i32 } %tmp35, 0
  %tmp37 = extractvalue { i8*, i32 } %tmp35, 1
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp31) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp28) #4
  br label %bb42

bb38:                                             ; preds = %bb
  %tmp39 = getelementptr inbounds %"class.std::__cxx11::basic_stringbuf", %"class.std::__cxx11::basic_stringbuf"* %arg1, i64 0, i32 2
  %tmp40 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp39)
          to label %bb41 unwind label %bb19

bb41:                                             ; preds = %bb38, %bb32, %bb17
  ret void

bb42:                                             ; preds = %bb34, %bb23, %bb19
  %tmp43 = phi i8* [ %tmp25, %bb23 ], [ %tmp36, %bb34 ], [ %tmp21, %bb19 ]
  %tmp44 = phi i32 [ %tmp26, %bb23 ], [ %tmp37, %bb34 ], [ %tmp22, %bb19 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp45 = insertvalue { i8*, i32 } undef, i8* %tmp43, 0
  %tmp46 = insertvalue { i8*, i32 } %tmp45, i32 %tmp44, 1
  resume { i8*, i32 } %tmp46
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv(%"class.std::basic_streambuf"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 5
  %tmp1 = load i8*, i8** %tmp, align 8, !tbaa !99
  ret i8* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv(%"class.std::basic_streambuf"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 3
  %tmp1 = load i8*, i8** %tmp, align 8, !tbaa !101
  ret i8* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv(%"class.std::basic_streambuf"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::basic_streambuf", %"class.std::basic_streambuf"* %arg, i64 0, i32 4
  %tmp1 = load i8*, i8** %tmp, align 8, !tbaa !102
  ret i8* %tmp1
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2, %"class.std::allocator"* dereferenceable(1) %arg3) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0
  %tmp4 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %tmp, i8* %tmp4, %"class.std::allocator"* nonnull dereferenceable(1) %arg3)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  %tmp8 = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp8) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: nounwind uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) local_unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = invoke zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* %arg)
          to label %bb2 unwind label %bb51

bb2:                                              ; preds = %bb
  br i1 %tmp, label %bb13, label %bb3

bb3:                                              ; preds = %bb2
  %tmp4 = tail call zeroext i1 @_ZN9__gnu_cxx14__alloc_traitsISaIcEE15_S_always_equalEv()
  br i1 %tmp4, label %bb13, label %bb5

bb5:                                              ; preds = %bb3
  %tmp6 = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp7 = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  %tmp8 = tail call zeroext i1 @_ZStneIcEbRKSaIT_ES3_(%"class.std::allocator"* nonnull dereferenceable(1) %tmp6, %"class.std::allocator"* nonnull dereferenceable(1) %tmp7) #4
  br i1 %tmp8, label %bb9, label %bb13

bb9:                                              ; preds = %bb5
  %tmp10 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2, i32 0
  %tmp11 = load i64, i64* %tmp10, align 8, !tbaa !53
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp11) #4
  %tmp12 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %tmp12)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 0)
          to label %bb13 unwind label %bb51

bb13:                                             ; preds = %bb9, %bb5, %bb3, %bb2
  %tmp14 = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp15 = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  invoke void @_ZSt15__alloc_on_moveISaIcEEvRT_S2_(%"class.std::allocator"* nonnull dereferenceable(1) %tmp14, %"class.std::allocator"* nonnull dereferenceable(1) %tmp15)
          to label %bb16 unwind label %bb51

bb16:                                             ; preds = %bb13
  %tmp17 = invoke zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
          to label %bb18 unwind label %bb51

bb18:                                             ; preds = %bb16
  br i1 %tmp17, label %bb19, label %bb28

bb19:                                             ; preds = %bb18
  %tmp20 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  %tmp21 = icmp eq i64 %tmp20, 0
  br i1 %tmp21, label %bb26, label %bb22

bb22:                                             ; preds = %bb19
  %tmp23 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp24 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  %tmp25 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm(i8* %tmp23, i8* %tmp24, i64 %tmp25)
          to label %bb26 unwind label %bb51

bb26:                                             ; preds = %bb22, %bb19
  %tmp27 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp27)
          to label %bb50 unwind label %bb51

bb28:                                             ; preds = %bb18
  %tmp29 = invoke zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* %arg)
          to label %bb30 unwind label %bb35

bb30:                                             ; preds = %bb28
  br i1 %tmp29, label %bb38, label %bb31

bb31:                                             ; preds = %bb30
  %tmp32 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp33 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2, i32 0
  %tmp34 = load i64, i64* %tmp33, align 8, !tbaa !53
  br label %bb38

bb35:                                             ; preds = %bb28
  %tmp36 = landingpad { i8*, i32 }
          catch i8* null
  %tmp37 = extractvalue { i8*, i32 } %tmp36, 0
  tail call void @__clang_call_terminate(i8* %tmp37) #25
  unreachable

bb38:                                             ; preds = %bb31, %bb30
  %tmp39 = phi i64 [ undef, %bb30 ], [ %tmp34, %bb31 ]
  %tmp40 = phi i8* [ null, %bb30 ], [ %tmp32, %bb31 ]
  %tmp41 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %tmp41)
  %tmp42 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp42)
  %tmp43 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg1, i64 0, i32 2
  %tmp44 = getelementptr inbounds %union.anon, %union.anon* %tmp43, i64 0, i32 0
  %tmp45 = load i64, i64* %tmp44, align 8, !tbaa !53
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp45)
  %tmp46 = icmp eq i8* %tmp40, null
  br i1 %tmp46, label %bb48, label %bb47

bb47:                                             ; preds = %bb38
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* nonnull %arg1, i8* nonnull %tmp40)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* nonnull %arg1, i64 %tmp39)
  br label %bb50

bb48:                                             ; preds = %bb38
  %tmp49 = bitcast %union.anon* %tmp43 to i8*
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* nonnull %arg1, i8* nonnull %tmp49)
  br label %bb50

bb50:                                             ; preds = %bb48, %bb47, %bb26
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  ret %"class.std::__cxx11::basic_string"* %arg

bb51:                                             ; preds = %bb26, %bb22, %bb16, %bb13, %bb9, %bb
  %tmp52 = landingpad { i8*, i32 }
          catch i8* null
  %tmp53 = extractvalue { i8*, i32 } %tmp52, 0
  tail call void @__clang_call_terminate(i8* %tmp53) #25
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca i64, align 8
  %tmp3 = tail call zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_(i8* %arg1)
  %tmp4 = xor i1 %tmp3, true
  %tmp5 = icmp eq i8* %arg1, %arg2
  %tmp6 = or i1 %tmp5, %tmp4
  br i1 %tmp6, label %bb8, label %bb7

bb7:                                              ; preds = %bb
  tail call void @_ZSt19__throw_logic_errorPKc(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.97, i64 0, i64 0)) #26
  unreachable

bb8:                                              ; preds = %bb
  %tmp9 = bitcast i64* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = tail call i64 @_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_(i8* %arg1, i8* %arg2)
  store i64 %tmp10, i64* %tmp, align 8, !tbaa !83
  %tmp11 = icmp ugt i64 %tmp10, 15
  br i1 %tmp11, label %bb12, label %bb15

bb12:                                             ; preds = %bb8
  %tmp13 = call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(%"class.std::__cxx11::basic_string"* %arg, i64* nonnull dereferenceable(8) %tmp, i64 0)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %tmp13)
  %tmp14 = load i64, i64* %tmp, align 8, !tbaa !83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp14)
  br label %bb15

bb15:                                             ; preds = %bb12, %bb8
  %tmp16 = call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_(i8* %tmp16, i8* %arg1, i8* %arg2) #4
  %tmp17 = load i64, i64* %tmp, align 8, !tbaa !83
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp17)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  ret void
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_(i8* %arg) local_unnamed_addr #18 comdat {
bb:
  %tmp = icmp eq i8* %arg, null
  ret i1 %tmp
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local i64 @_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_(i8* %arg, i8* %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca i8*, align 8
  store i8* %arg, i8** %tmp, align 8, !tbaa !18
  call void @_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_(i8** nonnull dereferenceable(8) %tmp)
  %tmp2 = call i64 @_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i8* %arg, i8* %arg1)
  ret i64 %tmp2
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_(i8* %arg, i8* %arg1, i8* %arg2) local_unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = ptrtoint i8* %arg2 to i64
  %tmp3 = ptrtoint i8* %arg1 to i64
  %tmp4 = sub i64 %tmp, %tmp3
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm(i8* %arg, i8* %arg1, i64 %tmp4)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          catch i8* null
  %tmp8 = extractvalue { i8*, i32 } %tmp7, 0
  tail call void @__clang_call_terminate(i8* %tmp8) #25
  unreachable
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag(i8* %arg, i8* %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = ptrtoint i8* %arg1 to i64
  %tmp2 = ptrtoint i8* %arg to i64
  %tmp3 = sub i64 %tmp, %tmp2
  ret i64 %tmp3
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_(i8** dereferenceable(8) %arg) local_unnamed_addr #18 comdat {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxx14__alloc_traitsISaIcEE15_S_always_equalEv() local_unnamed_addr #6 comdat align 2 {
bb:
  ret i1 true
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZStneIcEbRKSaIT_ES3_(%"class.std::allocator"* dereferenceable(1) %arg, %"class.std::allocator"* dereferenceable(1) %arg1) local_unnamed_addr #18 comdat {
bb:
  ret i1 false
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt15__alloc_on_moveISaIcEEvRT_S2_(%"class.std::allocator"* dereferenceable(1) %arg, %"class.std::allocator"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZSt18__do_alloc_on_moveISaIcEEvRT_S2_St17integral_constantIbLb1EE(%"class.std::allocator"* nonnull dereferenceable(1) %arg, %"class.std::allocator"* nonnull dereferenceable(1) %arg1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 1
  %tmp1 = load i64, i64* %tmp, align 8, !tbaa !80
  ret i64 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 1
  %tmp1 = load i64, i64* %tmp, align 8, !tbaa !80
  ret i64 %tmp1
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 0)
          to label %bb1 unwind label %bb2

bb1:                                              ; preds = %bb
  ret void

bb2:                                              ; preds = %bb
  %tmp = landingpad { i8*, i32 }
          catch i8* null
  %tmp3 = extractvalue { i8*, i32 } %tmp, 0
  tail call void @__clang_call_terminate(i8* %tmp3) #25
  unreachable
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZSt18__do_alloc_on_moveISaIcEEvRT_S2_St17integral_constantIbLb1EE(%"class.std::allocator"* dereferenceable(1) %arg, %"class.std::allocator"* dereferenceable(1) %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = tail call dereferenceable(1) %"class.std::allocator"* @_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_(%"class.std::allocator"* nonnull dereferenceable(1) %arg1) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIiSaIiEED2Ev(%"struct.std::_Vector_base"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %arg, i64 0, i32 0, i32 0
  %tmp1 = load i32*, i32** %tmp, align 8, !tbaa !20
  %tmp2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %arg, i64 0, i32 0, i32 2
  %tmp3 = bitcast i32** %tmp2 to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !103
  %tmp5 = ptrtoint i32* %tmp1 to i64
  %tmp6 = sub i64 %tmp4, %tmp5
  %tmp7 = ashr exact i64 %tmp6, 2
  invoke void @_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim(%"struct.std::_Vector_base"* %arg, i32* %tmp1, i64 %tmp7)
          to label %bb8 unwind label %bb10

bb8:                                              ; preds = %bb
  %tmp9 = bitcast %"struct.std::_Vector_base"* %arg to %"class.__gnu_cxx::new_allocator.1"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIiED2Ev(%"class.__gnu_cxx::new_allocator.1"* %tmp9) #4
  ret void

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          catch i8* null
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = bitcast %"struct.std::_Vector_base"* %arg to %"class.__gnu_cxx::new_allocator.1"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIiED2Ev(%"class.__gnu_cxx::new_allocator.1"* %tmp13) #4
  tail call void @__clang_call_terminate(i8* %tmp12) #25
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim(%"struct.std::_Vector_base"* %arg, i32* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = icmp eq i32* %arg1, null
  br i1 %tmp, label %bb5, label %bb3

bb3:                                              ; preds = %bb
  %tmp4 = bitcast %"struct.std::_Vector_base"* %arg to %"class.std::allocator.0"*
  tail call void @_ZNSt16allocator_traitsISaIiEE10deallocateERS0_Pim(%"class.std::allocator.0"* dereferenceable(1) %tmp4, i32* nonnull %arg1, i64 %arg2)
  br label %bb5

bb5:                                              ; preds = %bb3, %bb
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIiED2Ev(%"class.__gnu_cxx::new_allocator.1"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIiEE10deallocateERS0_Pim(%"class.std::allocator.0"* dereferenceable(1) %arg, i32* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.0"* %arg to %"class.__gnu_cxx::new_allocator.1"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim(%"class.__gnu_cxx::new_allocator.1"* nonnull %tmp, i32* %arg1, i64 %arg2)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPim(%"class.__gnu_cxx::new_allocator.1"* %arg, i32* %arg1, i64 %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = bitcast i32* %arg1 to i8*
  tail call void @_ZdlPv(i8* %tmp) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* %arg, %"struct.std::__detail::_List_node_base"* %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %arg1, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !44
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.std::_List_iterator"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEv(%"struct.std::_List_iterator"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %arg, i64 0, i32 0
  %tmp1 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !44
  %tmp2 = getelementptr inbounds %"struct.std::__detail::_List_node_base", %"struct.std::__detail::_List_node_base"* %tmp1, i64 0, i32 1
  %tmp3 = bitcast %"struct.std::__detail::_List_node_base"** %tmp2 to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !47
  %tmp5 = bitcast %"struct.std::_List_iterator"* %arg to i64*
  store i64 %tmp4, i64* %tmp5, align 8, !tbaa !44
  ret %"struct.std::_List_iterator"* %arg
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8_M_eraseESt14_List_iteratorIS2_E(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1) local_unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_dec_sizeEm(%"class.std::__cxx11::_List_base"* %tmp, i64 1)
  tail call void @_ZNSt8__detail15_List_node_base9_M_unhookEv(%"struct.std::__detail::_List_node_base"* %arg1) #4
  %tmp2 = bitcast %"struct.std::__detail::_List_node_base"* %arg1 to %"struct.std::_List_node.73"*
  %tmp3 = tail call dereferenceable(1) %"class.std::allocator.3"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE21_M_get_Node_allocatorEv(%"class.std::__cxx11::_List_base"* %tmp) #4
  %tmp4 = tail call %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp2)
  invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE7destroyIS2_EEvRS4_PT_(%"class.std::allocator.3"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Gap"* %tmp4)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_put_nodeEPSt10_List_nodeIS2_E(%"class.std::__cxx11::_List_base"* %tmp, %"struct.std::_List_node.73"* %tmp2) #4
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          catch i8* null
  %tmp8 = extractvalue { i8*, i32 } %tmp7, 0
  tail call void @__clang_call_terminate(i8* %tmp8) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_dec_sizeEm(%"class.std::__cxx11::_List_base"* %arg, i64 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0
  %tmp2 = tail call i64* @_ZNSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %tmp)
  %tmp3 = load i64, i64* %tmp2, align 8, !tbaa !83
  %tmp4 = sub i64 %tmp3, %arg1
  store i64 %tmp4, i64* %tmp2, align 8, !tbaa !83
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt8__detail15_List_node_base9_M_unhookEv(%"struct.std::__detail::_List_node_base"*) local_unnamed_addr #2

declare dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertIdEERSoT_(%"class.std::basic_ostream"*, double) local_unnamed_addr #1

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp2 = tail call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %arg1)
  %tmp3 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(%"class.std::__cxx11::basic_string"* %arg, i64 0, i64 %tmp, i8* %arg1, i64 %tmp2)
  ret %"class.std::__cxx11::basic_string"* %tmp3
}

declare dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(%"class.std::__cxx11::basic_string"*, i64, i64, i8*, i64) local_unnamed_addr #1

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNKSt20_List_const_iteratorIN5adept3GapEE13_M_const_castEv(%"struct.std::_List_const_iterator"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %arg, i64 0, i32 0
  %tmp2 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp1, align 8, !tbaa !45
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp2) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp4 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE7emplaceIJS2_EEESt14_List_iteratorIS2_ESt20_List_const_iteratorIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1, %"struct.adept::Gap"* dereferenceable(8) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp3 = alloca %"struct.std::_List_const_iterator", align 8
  %tmp4 = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %tmp3, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %arg1, %"struct.std::__detail::_List_node_base"** %tmp4, align 8
  %tmp5 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg2) #4
  %tmp6 = tail call %"struct.std::_List_node.73"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE14_M_create_nodeIJS2_EEEPSt10_List_nodeIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp5)
  %tmp7 = getelementptr inbounds %"struct.std::_List_node.73", %"struct.std::_List_node.73"* %tmp6, i64 0, i32 0
  %tmp8 = call %"struct.std::__detail::_List_node_base"* @_ZNKSt20_List_const_iteratorIN5adept3GapEE13_M_const_castEv(%"struct.std::_List_const_iterator"* nonnull %tmp3) #4
  call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(%"struct.std::__detail::_List_node_base"* %tmp7, %"struct.std::__detail::_List_node_base"* %tmp8) #4
  %tmp9 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_inc_sizeEm(%"class.std::__cxx11::_List_base"* %tmp9, i64 1)
  call void @_ZNSt14_List_iteratorIN5adept3GapEEC2EPNSt8__detail15_List_node_baseE(%"struct.std::_List_iterator"* nonnull %tmp, %"struct.std::__detail::_List_node_base"* %tmp7) #4
  %tmp10 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  %tmp11 = load %"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"** %tmp10, align 8
  ret %"struct.std::__detail::_List_node_base"* %tmp11
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.adept::Gap"* @_ZSt4moveIRN5adept3GapEEONSt16remove_referenceIT_E4typeEOS4_(%"struct.adept::Gap"* dereferenceable(8) %arg) local_unnamed_addr #6 comdat {
bb:
  ret %"struct.adept::Gap"* %arg
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::_List_node.73"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE14_M_create_nodeIJS2_EEEPSt10_List_nodeIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.adept::Gap"* dereferenceable(8) %arg1) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"struct.std::__allocated_ptr", align 8
  %tmp2 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  %tmp3 = tail call %"struct.std::_List_node.73"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_get_nodeEv(%"class.std::__cxx11::_List_base"* %tmp2)
  %tmp4 = tail call dereferenceable(1) %"class.std::allocator.3"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE21_M_get_Node_allocatorEv(%"class.std::__cxx11::_List_base"* %tmp2) #4
  %tmp5 = bitcast %"struct.std::__allocated_ptr"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp5) #4
  call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEC2ERS4_PS3_(%"struct.std::__allocated_ptr"* nonnull %tmp, %"class.std::allocator.3"* nonnull dereferenceable(1) %tmp4, %"struct.std::_List_node.73"* %tmp3) #4
  %tmp6 = call %"struct.adept::Gap"* @_ZNSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %tmp3)
  %tmp7 = call dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg1) #4
  invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE9constructIS2_JS2_EEEvRS4_PT_DpOT0_(%"class.std::allocator.3"* nonnull dereferenceable(1) %tmp4, %"struct.adept::Gap"* %tmp6, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp7)
          to label %bb8 unwind label %bb10

bb8:                                              ; preds = %bb
  %tmp9 = call dereferenceable(16) %"struct.std::__allocated_ptr"* @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEaSEDn(%"struct.std::__allocated_ptr"* nonnull %tmp, i8* null) #4
  call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEED2Ev(%"struct.std::__allocated_ptr"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp5) #4
  ret %"struct.std::_List_node.73"* %tmp3

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEED2Ev(%"struct.std::__allocated_ptr"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp5) #4
  resume { i8*, i32 } %tmp11
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* dereferenceable(8) %arg) local_unnamed_addr #6 comdat {
bb:
  ret %"struct.adept::Gap"* %arg
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(%"struct.std::__detail::_List_node_base"*, %"struct.std::__detail::_List_node_base"*) local_unnamed_addr #2

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_inc_sizeEm(%"class.std::__cxx11::_List_base"* %arg, i64 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0
  %tmp2 = tail call i64* @_ZNSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %tmp)
  %tmp3 = load i64, i64* %tmp2, align 8, !tbaa !83
  %tmp4 = add i64 %tmp3, %arg1
  store i64 %tmp4, i64* %tmp2, align 8, !tbaa !83
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::_List_node.73"* @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_get_nodeEv(%"class.std::__cxx11::_List_base"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::__cxx11::_List_base"* %arg to %"class.std::allocator.3"*
  %tmp1 = tail call %"struct.std::_List_node.73"* @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE8allocateERS4_m(%"class.std::allocator.3"* dereferenceable(1) %tmp, i64 1)
  ret %"struct.std::_List_node.73"* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEC2ERS4_PS3_(%"struct.std::__allocated_ptr"* %arg, %"class.std::allocator.3"* dereferenceable(1) %arg1, %"struct.std::_List_node.73"* %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::__allocated_ptr", %"struct.std::__allocated_ptr"* %arg, i64 0, i32 0
  %tmp3 = tail call %"class.std::allocator.3"* @_ZSt11__addressofISaISt10_List_nodeIN5adept3GapEEEEPT_RS5_(%"class.std::allocator.3"* nonnull dereferenceable(1) %arg1) #4
  store %"class.std::allocator.3"* %tmp3, %"class.std::allocator.3"** %tmp, align 8, !tbaa !104
  %tmp4 = getelementptr inbounds %"struct.std::__allocated_ptr", %"struct.std::__allocated_ptr"* %arg, i64 0, i32 1
  store %"struct.std::_List_node.73"* %arg2, %"struct.std::_List_node.73"** %tmp4, align 8, !tbaa !106
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE9constructIS2_JS2_EEEvRS4_PT_DpOT0_(%"class.std::allocator.3"* dereferenceable(1) %arg, %"struct.adept::Gap"* %arg1, %"struct.adept::Gap"* dereferenceable(8) %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.3"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  %tmp3 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg2) #4
  tail call void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE9constructIS3_JS3_EEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.4"* nonnull %tmp, %"struct.adept::Gap"* %arg1, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp3)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.std::__allocated_ptr"* @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEEaSEDn(%"struct.std::__allocated_ptr"* %arg, i8* %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::__allocated_ptr", %"struct.std::__allocated_ptr"* %arg, i64 0, i32 1
  store %"struct.std::_List_node.73"* null, %"struct.std::_List_node.73"** %tmp, align 8, !tbaa !106
  ret %"struct.std::__allocated_ptr"* %arg
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEED2Ev(%"struct.std::__allocated_ptr"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"struct.std::__allocated_ptr", %"struct.std::__allocated_ptr"* %arg, i64 0, i32 1
  %tmp1 = load %"struct.std::_List_node.73"*, %"struct.std::_List_node.73"** %tmp, align 8, !tbaa !106
  %tmp2 = icmp eq %"struct.std::_List_node.73"* %tmp1, null
  br i1 %tmp2, label %bb6, label %bb3

bb3:                                              ; preds = %bb
  %tmp4 = getelementptr inbounds %"struct.std::__allocated_ptr", %"struct.std::__allocated_ptr"* %arg, i64 0, i32 0
  %tmp5 = load %"class.std::allocator.3"*, %"class.std::allocator.3"** %tmp4, align 8, !tbaa !104
  invoke void @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE10deallocateERS4_PS3_m(%"class.std::allocator.3"* dereferenceable(1) %tmp5, %"struct.std::_List_node.73"* nonnull %tmp1, i64 1)
          to label %bb6 unwind label %bb7

bb6:                                              ; preds = %bb3, %bb
  ret void

bb7:                                              ; preds = %bb3
  %tmp8 = landingpad { i8*, i32 }
          catch i8* null
  %tmp9 = extractvalue { i8*, i32 } %tmp8, 0
  tail call void @__clang_call_terminate(i8* %tmp9) #25
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::_List_node.73"* @_ZNSt16allocator_traitsISaISt10_List_nodeIN5adept3GapEEEE8allocateERS4_m(%"class.std::allocator.3"* dereferenceable(1) %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.3"* %arg to %"class.__gnu_cxx::new_allocator.4"*
  %tmp2 = tail call %"struct.std::_List_node.73"* @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.4"* nonnull %tmp, i64 %arg1, i8* null)
  ret %"struct.std::_List_node.73"* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.std::_List_node.73"* @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.4"* %arg, i64 %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.4"* %arg) #4
  %tmp3 = icmp ult i64 %tmp, %arg1
  br i1 %tmp3, label %bb4, label %bb5

bb4:                                              ; preds = %bb
  tail call void @_ZSt17__throw_bad_allocv() #26
  unreachable

bb5:                                              ; preds = %bb
  %tmp6 = mul i64 %arg1, 24
  %tmp7 = tail call i8* @_Znwm(i64 %tmp6)
  %tmp8 = bitcast i8* %tmp7 to %"struct.std::_List_node.73"*
  ret %"struct.std::_List_node.73"* %tmp8
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.4"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  ret i64 768614336404564650
}

; Function Attrs: noreturn
declare dso_local void @_ZSt17__throw_bad_allocv() local_unnamed_addr #23

; Function Attrs: nobuiltin
declare dso_local noalias nonnull i8* @_Znwm(i64) local_unnamed_addr #12

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local %"class.std::allocator.3"* @_ZSt11__addressofISaISt10_List_nodeIN5adept3GapEEEEPT_RS5_(%"class.std::allocator.3"* dereferenceable(1) %arg) local_unnamed_addr #18 comdat {
bb:
  ret %"class.std::allocator.3"* %arg
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIN5adept3GapEEE9constructIS3_JS3_EEEvPT_DpOT0_(%"class.__gnu_cxx::new_allocator.4"* %arg, %"struct.adept::Gap"* %arg1, %"struct.adept::Gap"* dereferenceable(8) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg2) #4
  %tmp3 = bitcast %"struct.adept::Gap"* %tmp to i64*
  %tmp4 = bitcast %"struct.adept::Gap"* %arg1 to i64*
  %tmp5 = load i64, i64* %tmp3, align 4
  store i64 %tmp5, i64* %tmp4, align 4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9_M_insertIJS2_EEEvSt14_List_iteratorIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %arg1, %"struct.adept::Gap"* dereferenceable(8) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZSt7forwardIN5adept3GapEEOT_RNSt16remove_referenceIS2_E4typeE(%"struct.adept::Gap"* nonnull dereferenceable(8) %arg2) #4
  %tmp3 = tail call %"struct.std::_List_node.73"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE14_M_create_nodeIJS2_EEEPSt10_List_nodeIS2_EDpOT_(%"class.std::__cxx11::list"* %arg, %"struct.adept::Gap"* nonnull dereferenceable(8) %tmp)
  %tmp4 = getelementptr inbounds %"struct.std::_List_node.73", %"struct.std::_List_node.73"* %tmp3, i64 0, i32 0
  tail call void @_ZNSt8__detail15_List_node_base7_M_hookEPS0_(%"struct.std::__detail::_List_node_base"* %tmp4, %"struct.std::__detail::_List_node_base"* %arg1) #4
  %tmp5 = getelementptr inbounds %"class.std::__cxx11::list", %"class.std::__cxx11::list"* %arg, i64 0, i32 0
  tail call void @_ZNSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE11_M_inc_sizeEm(%"class.std::__cxx11::_List_base"* %tmp5, i64 1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt20_List_const_iteratorIN5adept3GapEEC2EPKNSt8__detail15_List_node_baseE(%"struct.std::_List_const_iterator"* %arg, %"struct.std::__detail::_List_node_base"* %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_const_iterator", %"struct.std::_List_const_iterator"* %arg, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %arg1, %"struct.std::__detail::_List_node_base"** %tmp, align 8, !tbaa !45
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZNKSt10_List_nodeIN5adept3GapEE9_M_valptrEv(%"struct.std::_List_node.73"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_node.73", %"struct.std::_List_node.73"* %arg, i64 0, i32 1
  %tmp1 = tail call %"struct.adept::Gap"* @_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* nonnull %tmp) #4
  ret %"struct.adept::Gap"* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Gap"* @_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) #4
  %tmp1 = bitcast i8* %tmp to %"struct.adept::Gap"*
  ret %"struct.adept::Gap"* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZNK9__gnu_cxx16__aligned_membufIN5adept3GapEE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf.74"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf.74", %"struct.__gnu_cxx::__aligned_membuf.74"* %arg, i64 0, i32 0, i64 0
  ret i8* %tmp
}

declare dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertIPKvEERSoT_(%"class.std::basic_ostream"*, i8*) local_unnamed_addr #1

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local i64 @_ZNKSt7__cxx1110_List_baseIN5adept3GapESaIS2_EE13_M_node_countEv(%"class.std::__cxx11::_List_base"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::_List_base", %"class.std::__cxx11::_List_base"* %arg, i64 0, i32 0, i32 0
  %tmp1 = tail call i64* @_ZNKSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %tmp)
  %tmp2 = load i64, i64* %tmp1, align 8, !tbaa !83
  ret i64 %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64* @_ZNKSt10_List_nodeImE9_M_valptrEv(%"struct.std::_List_node"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::_List_node", %"struct.std::_List_node"* %arg, i64 0, i32 1
  %tmp1 = tail call i64* @_ZNK9__gnu_cxx16__aligned_membufImE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf"* nonnull %tmp) #4
  ret i64* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64* @_ZNK9__gnu_cxx16__aligned_membufImE6_M_ptrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i8* @_ZNK9__gnu_cxx16__aligned_membufImE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) #4
  %tmp1 = bitcast i8* %tmp to i64*
  ret i64* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i8* @_ZNK9__gnu_cxx16__aligned_membufImE7_M_addrEv(%"struct.__gnu_cxx::__aligned_membuf"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.__gnu_cxx::__aligned_membuf", %"struct.__gnu_cxx::__aligned_membuf"* %arg, i64 0, i32 0, i64 0
  ret i8* %tmp
}

declare dso_local dereferenceable(272) %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"*, i64) local_unnamed_addr #1

; Function Attrs: nounwind
declare dso_local i32 @posix_memalign(i8**, i64, i64) local_unnamed_addr #2

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt9bad_allocC2Ev(%"class.std::bad_alloc"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::bad_alloc", %"class.std::bad_alloc"* %arg, i64 0, i32 0
  tail call void @_ZNSt9exceptionC2Ev(%"class.std::exception"* %tmp) #4
  %tmp1 = getelementptr inbounds %"class.std::bad_alloc", %"class.std::bad_alloc"* %arg, i64 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVSt9bad_alloc, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp1, align 8, !tbaa !8
  ret void
}

; Function Attrs: nounwind
declare dso_local void @_ZNSt9bad_allocD1Ev(%"class.std::bad_alloc"*) unnamed_addr #2

; Function Attrs: nounwind
declare dso_local void @_ZNSt9bad_allocD0Ev(%"class.std::bad_alloc"*) unnamed_addr #2

; Function Attrs: nounwind
declare dso_local i8* @_ZNKSt9bad_alloc4whatEv(%"class.std::bad_alloc"*) unnamed_addr #2

; Function Attrs: nounwind
declare dso_local void @free(i8* nocapture) local_unnamed_addr #2

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local zeroext i1 @_ZN9__gnu_cxxeqIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %arg, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %arg1) local_unnamed_addr #18 comdat {
bb:
  %tmp = tail call dereferenceable(8) i32** @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* nonnull %arg) #4
  %tmp2 = load i32*, i32** %tmp, align 8, !tbaa !18
  %tmp3 = tail call dereferenceable(8) i32** @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* nonnull %arg1) #4
  %tmp4 = load i32*, i32** %tmp3, align 8, !tbaa !18
  %tmp5 = icmp eq i32* %tmp2, %tmp4
  ret i1 %tmp5
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i32* @_ZNKSt6vectorIiSaIiEE5beginEv(%"class.std::vector"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %tmp1 = alloca i32*, align 8
  %tmp2 = bitcast i32** %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp2) #4
  %tmp3 = bitcast %"class.std::vector"* %arg to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !20
  %tmp5 = bitcast i32** %tmp1 to i64*
  store i64 %tmp4, i64* %tmp5, align 8, !tbaa !18
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* nonnull %tmp, i32** nonnull dereferenceable(8) %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp2) #4
  %tmp6 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %tmp, i64 0, i32 0
  %tmp7 = load i32*, i32** %tmp6, align 8
  ret i32* %tmp7
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i32* @_ZNKSt6vectorIiSaIiEE3endEv(%"class.std::vector"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %tmp1 = alloca i32*, align 8
  %tmp2 = bitcast i32** %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp2) #4
  %tmp3 = getelementptr inbounds %"class.std::vector", %"class.std::vector"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = bitcast i32** %tmp3 to i64*
  %tmp5 = load i64, i64* %tmp4, align 8, !tbaa !23
  %tmp6 = bitcast i32** %tmp1 to i64*
  store i64 %tmp5, i64* %tmp6, align 8, !tbaa !18
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* nonnull %tmp, i32** nonnull dereferenceable(8) %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp2) #4
  %tmp7 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %tmp, i64 0, i32 0
  %tmp8 = load i32*, i32** %tmp7, align 8
  ret i32* %tmp8
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) i32** @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %arg, i64 0, i32 0
  ret i32** %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* %arg, i32** dereferenceable(8) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast i32** %arg1 to i64*
  %tmp2 = load i64, i64* %tmp, align 8, !tbaa !18
  %tmp3 = bitcast %"class.__gnu_cxx::__normal_iterator"* %arg to i64*
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !107
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2Ev(%"class.__gnu_cxx::new_allocator.23"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EEC2EmRKS3_(%"struct.std::_Vector_base.21"* %arg, i64 %arg1, %"class.std::allocator.22"* dereferenceable(1) %arg2) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0
  tail call void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE12_Vector_implC2ERKS3_(%"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl"* %tmp, %"class.std::allocator.22"* nonnull dereferenceable(1) %arg2) #4
  invoke void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE17_M_create_storageEm(%"struct.std::_Vector_base.21"* %arg, i64 %arg1)
          to label %bb3 unwind label %bb4

bb3:                                              ; preds = %bb
  ret void

bb4:                                              ; preds = %bb
  %tmp5 = landingpad { i8*, i32 }
          cleanup
  %tmp6 = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* %tmp6) #4
  resume { i8*, i32 } %tmp5
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt6vectorIN5adept5BlockILi2EdEESaIS2_EE21_M_default_initializeEm(%"class.std::vector.20"* %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0
  %tmp2 = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 0
  %tmp3 = load %"struct.adept::Block"*, %"struct.adept::Block"** %tmp2, align 8, !tbaa !57
  %tmp4 = tail call dereferenceable(1) %"class.std::allocator.22"* @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.21"* %tmp) #4
  %tmp5 = tail call %"struct.adept::Block"* @_ZSt27__uninitialized_default_n_aIPN5adept5BlockILi2EdEEmS2_ET_S4_T0_RSaIT1_E(%"struct.adept::Block"* %tmp3, i64 %arg1, %"class.std::allocator.22"* nonnull dereferenceable(1) %tmp4)
  %tmp6 = getelementptr inbounds %"class.std::vector.20", %"class.std::vector.20"* %arg, i64 0, i32 0, i32 0, i32 1
  store %"struct.adept::Block"* %tmp5, %"struct.adept::Block"** %tmp6, align 8, !tbaa !54
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EED2Ev(%"struct.std::_Vector_base.21"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0, i32 0
  %tmp1 = load %"struct.adept::Block"*, %"struct.adept::Block"** %tmp, align 8, !tbaa !57
  %tmp2 = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0, i32 2
  %tmp3 = bitcast %"struct.adept::Block"** %tmp2 to i64*
  %tmp4 = load i64, i64* %tmp3, align 8, !tbaa !109
  %tmp5 = ptrtoint %"struct.adept::Block"* %tmp1 to i64
  %tmp6 = sub i64 %tmp4, %tmp5
  %tmp7 = ashr exact i64 %tmp6, 4
  invoke void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE13_M_deallocateEPS2_m(%"struct.std::_Vector_base.21"* %arg, %"struct.adept::Block"* %tmp1, i64 %tmp7)
          to label %bb8 unwind label %bb10

bb8:                                              ; preds = %bb
  %tmp9 = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* %tmp9) #4
  ret void

bb10:                                             ; preds = %bb
  %tmp11 = landingpad { i8*, i32 }
          catch i8* null
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* %tmp13) #4
  tail call void @__clang_call_terminate(i8* %tmp12) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE12_Vector_implC2ERKS3_(%"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl"* %arg, %"class.std::allocator.22"* dereferenceable(1) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl"* %arg to %"class.std::allocator.22"*
  tail call void @_ZNSaIN5adept5BlockILi2EdEEEC2ERKS2_(%"class.std::allocator.22"* %tmp, %"class.std::allocator.22"* nonnull dereferenceable(1) %arg1) #4
  %tmp2 = bitcast %"struct.std::_Vector_base<adept::Block<2, double>, std::allocator<adept::Block<2, double> > >::_Vector_impl"* %arg to i8*
  call void @llvm.memset.p0i8.i64(i8* align 8 %tmp2, i8 0, i64 24, i1 false)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE17_M_create_storageEm(%"struct.std::_Vector_base.21"* %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"struct.adept::Block"* @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE11_M_allocateEm(%"struct.std::_Vector_base.21"* %arg, i64 %arg1)
  %tmp2 = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0, i32 0
  store %"struct.adept::Block"* %tmp, %"struct.adept::Block"** %tmp2, align 8, !tbaa !57
  %tmp3 = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0, i32 1
  store %"struct.adept::Block"* %tmp, %"struct.adept::Block"** %tmp3, align 8, !tbaa !54
  %tmp4 = getelementptr inbounds %"struct.adept::Block", %"struct.adept::Block"* %tmp, i64 %arg1
  %tmp5 = getelementptr inbounds %"struct.std::_Vector_base.21", %"struct.std::_Vector_base.21"* %arg, i64 0, i32 0, i32 2
  store %"struct.adept::Block"* %tmp4, %"struct.adept::Block"** %tmp5, align 8, !tbaa !109
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEED2Ev(%"class.__gnu_cxx::new_allocator.23"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSaIN5adept5BlockILi2EdEEEC2ERKS2_(%"class.std::allocator.22"* %arg, %"class.std::allocator.22"* dereferenceable(1) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.22"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  %tmp2 = bitcast %"class.std::allocator.22"* %arg1 to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.23"* %tmp, %"class.__gnu_cxx::new_allocator.23"* nonnull dereferenceable(1) %tmp2) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEEC2ERKS4_(%"class.__gnu_cxx::new_allocator.23"* %arg, %"class.__gnu_cxx::new_allocator.23"* dereferenceable(1) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE11_M_allocateEm(%"struct.std::_Vector_base.21"* %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = icmp eq i64 %arg1, 0
  br i1 %tmp, label %bb5, label %bb2

bb2:                                              ; preds = %bb
  %tmp3 = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.std::allocator.22"*
  %tmp4 = tail call %"struct.adept::Block"* @_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE8allocateERS3_m(%"class.std::allocator.22"* dereferenceable(1) %tmp3, i64 %arg1)
  br label %bb5

bb5:                                              ; preds = %bb2, %bb
  %tmp6 = phi %"struct.adept::Block"* [ %tmp4, %bb2 ], [ null, %bb ]
  ret %"struct.adept::Block"* %tmp6
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE8allocateERS3_m(%"class.std::allocator.22"* dereferenceable(1) %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.22"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  %tmp2 = tail call %"struct.adept::Block"* @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp, i64 %arg1, i8* null)
  ret %"struct.adept::Block"* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.23"* %arg, i64 %arg1, i8* %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call i64 @_ZNK9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.23"* %arg) #4
  %tmp3 = icmp ult i64 %tmp, %arg1
  br i1 %tmp3, label %bb4, label %bb5

bb4:                                              ; preds = %bb
  tail call void @_ZSt17__throw_bad_allocv() #26
  unreachable

bb5:                                              ; preds = %bb
  %tmp6 = shl i64 %arg1, 4
  %tmp7 = tail call i8* @_Znwm(i64 %tmp6)
  %tmp8 = bitcast i8* %tmp7 to %"struct.adept::Block"*
  ret %"struct.adept::Block"* %tmp8
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE8max_sizeEv(%"class.__gnu_cxx::new_allocator.23"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  ret i64 1152921504606846975
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZSt27__uninitialized_default_n_aIPN5adept5BlockILi2EdEEmS2_ET_S4_T0_RSaIT1_E(%"struct.adept::Block"* %arg, i64 %arg1, %"class.std::allocator.22"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call %"struct.adept::Block"* @_ZSt25__uninitialized_default_nIPN5adept5BlockILi2EdEEmET_S4_T0_(%"struct.adept::Block"* %arg, i64 %arg1)
  ret %"struct.adept::Block"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.22"* @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.21"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.std::allocator.22"*
  ret %"class.std::allocator.22"* %tmp
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZSt25__uninitialized_default_nIPN5adept5BlockILi2EdEEmET_S4_T0_(%"struct.adept::Block"* %arg, i64 %arg1) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call %"struct.adept::Block"* @_ZNSt27__uninitialized_default_n_1ILb0EE18__uninit_default_nIPN5adept5BlockILi2EdEEmEET_S6_T0_(%"struct.adept::Block"* %arg, i64 %arg1)
  ret %"struct.adept::Block"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZNSt27__uninitialized_default_n_1ILb0EE18__uninit_default_nIPN5adept5BlockILi2EdEEmEET_S6_T0_(%"struct.adept::Block"* %arg, i64 %arg1) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = icmp eq i64 %arg1, 0
  br i1 %tmp, label %bb15, label %bb2

bb2:                                              ; preds = %bb6, %bb
  %tmp3 = phi %"struct.adept::Block"* [ %tmp8, %bb6 ], [ %arg, %bb ]
  %tmp4 = phi i64 [ %tmp7, %bb6 ], [ %arg1, %bb ]
  %tmp5 = tail call %"struct.adept::Block"* @_ZSt11__addressofIN5adept5BlockILi2EdEEEPT_RS3_(%"struct.adept::Block"* dereferenceable(16) %tmp3) #4
  invoke void @_ZSt10_ConstructIN5adept5BlockILi2EdEEJEEvPT_DpOT0_(%"struct.adept::Block"* %tmp5)
          to label %bb6 unwind label %bb10

bb6:                                              ; preds = %bb2
  %tmp7 = add i64 %tmp4, -1
  %tmp8 = getelementptr inbounds %"struct.adept::Block", %"struct.adept::Block"* %tmp3, i64 1
  %tmp9 = icmp eq i64 %tmp7, 0
  br i1 %tmp9, label %bb15, label %bb2

bb10:                                             ; preds = %bb2
  %tmp11 = landingpad { i8*, i32 }
          catch i8* null
  %tmp12 = extractvalue { i8*, i32 } %tmp11, 0
  %tmp13 = tail call i8* @__cxa_begin_catch(i8* %tmp12) #4
  invoke void @_ZSt8_DestroyIPN5adept5BlockILi2EdEEEvT_S4_(%"struct.adept::Block"* %arg, %"struct.adept::Block"* nonnull %tmp3)
          to label %bb14 unwind label %bb17

bb14:                                             ; preds = %bb10
  invoke void @__cxa_rethrow() #26
          to label %bb23 unwind label %bb17

bb15:                                             ; preds = %bb6, %bb
  %tmp16 = phi %"struct.adept::Block"* [ %arg, %bb ], [ %tmp8, %bb6 ]
  ret %"struct.adept::Block"* %tmp16

bb17:                                             ; preds = %bb14, %bb10
  %tmp18 = landingpad { i8*, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %bb19 unwind label %bb20

bb19:                                             ; preds = %bb17
  resume { i8*, i32 } %tmp18

bb20:                                             ; preds = %bb17
  %tmp21 = landingpad { i8*, i32 }
          catch i8* null
  %tmp22 = extractvalue { i8*, i32 } %tmp21, 0
  tail call void @__clang_call_terminate(i8* %tmp22) #25
  unreachable

bb23:                                             ; preds = %bb14
  unreachable
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt10_ConstructIN5adept5BlockILi2EdEEJEEvPT_DpOT0_(%"struct.adept::Block"* %arg) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZN5adept5BlockILi2EdEC2Ev(%"struct.adept::Block"* %arg)
  ret void
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local %"struct.adept::Block"* @_ZSt11__addressofIN5adept5BlockILi2EdEEEPT_RS3_(%"struct.adept::Block"* dereferenceable(16) %arg) local_unnamed_addr #18 comdat {
bb:
  ret %"struct.adept::Block"* %arg
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt8_DestroyIPN5adept5BlockILi2EdEEEvT_S4_(%"struct.adept::Block"* %arg, %"struct.adept::Block"* %arg1) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZNSt12_Destroy_auxILb1EE9__destroyIPN5adept5BlockILi2EdEEEEvT_S6_(%"struct.adept::Block"* %arg, %"struct.adept::Block"* %arg1)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIPN5adept5BlockILi2EdEEEEvT_S6_(%"struct.adept::Block"* %arg, %"struct.adept::Block"* %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE13_M_deallocateEPS2_m(%"struct.std::_Vector_base.21"* %arg, %"struct.adept::Block"* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = icmp eq %"struct.adept::Block"* %arg1, null
  br i1 %tmp, label %bb5, label %bb3

bb3:                                              ; preds = %bb
  %tmp4 = bitcast %"struct.std::_Vector_base.21"* %arg to %"class.std::allocator.22"*
  tail call void @_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE10deallocateERS3_PS2_m(%"class.std::allocator.22"* dereferenceable(1) %tmp4, %"struct.adept::Block"* nonnull %arg1, i64 %arg2)
  br label %bb5

bb5:                                              ; preds = %bb3, %bb
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNSt16allocator_traitsISaIN5adept5BlockILi2EdEEEE10deallocateERS3_PS2_m(%"class.std::allocator.22"* dereferenceable(1) %arg, %"struct.adept::Block"* %arg1, i64 %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator.22"* %arg to %"class.__gnu_cxx::new_allocator.23"*
  tail call void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.23"* nonnull %tmp, %"struct.adept::Block"* %arg1, i64 %arg2)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorIN5adept5BlockILi2EdEEE10deallocateEPS3_m(%"class.__gnu_cxx::new_allocator.23"* %arg, %"struct.adept::Block"* %arg1, i64 %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Block"* %arg1 to i8*
  tail call void @_ZdlPv(i8* %tmp) #4
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZSt8_DestroyIPN5adept5BlockILi2EdEES2_EvT_S4_RSaIT0_E(%"struct.adept::Block"* %arg, %"struct.adept::Block"* %arg1, %"class.std::allocator.22"* dereferenceable(1) %arg2) local_unnamed_addr #21 comdat {
bb:
  tail call void @_ZSt8_DestroyIPN5adept5BlockILi2EdEEEvT_S4_(%"struct.adept::Block"* %arg, %"struct.adept::Block"* %arg1)
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %arg1)
  tail call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc(%"class.std::__cxx11::basic_string"* %arg, i64 0, i64 %tmp, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.98, i64 0, i64 0))
  %tmp2 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(%"class.std::__cxx11::basic_string"* %arg, i8* %arg1, i64 %tmp)
  ret %"class.std::__cxx11::basic_string"* %tmp2
}

; Function Attrs: uwtable
define available_externally dso_local void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i64 %arg2, i8* %arg3) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp4 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp5 = add i64 %tmp, %arg1
  %tmp6 = sub i64 %tmp5, %tmp4
  %tmp7 = icmp ult i64 %tmp6, %arg2
  br i1 %tmp7, label %bb8, label %bb9

bb8:                                              ; preds = %bb
  tail call void @_ZSt20__throw_length_errorPKc(i8* %arg3) #26
  unreachable

bb9:                                              ; preds = %bb
  ret void
}

declare dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(%"class.std::__cxx11::basic_string"*, i8*, i64) local_unnamed_addr #1

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = tail call dereferenceable(1) %"class.std::allocator"* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp1 = tail call i64 @_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_(%"class.std::allocator"* nonnull dereferenceable(1) %tmp) #4
  %tmp2 = add i64 %tmp1, -1
  %tmp3 = lshr i64 %tmp2, 1
  ret i64 %tmp3
}

; Function Attrs: noreturn
declare dso_local void @_ZSt20__throw_length_errorPKc(i8*) local_unnamed_addr #23

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_(%"class.std::allocator"* dereferenceable(1) %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"class.std::allocator"* %arg to %"class.__gnu_cxx::new_allocator"*
  %tmp1 = tail call i64 @_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* nonnull %tmp) #4
  ret i64 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local dereferenceable(1) %"class.std::allocator"* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 {
bb:
  %tmp = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  ret %"class.std::allocator"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  ret i64 -1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(%"class.std::__cxx11::basic_string"* %arg) local_unnamed_addr #6 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  ret i8* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb0EEC2Ei(%"struct.adept::internal::GradientIndex"* %arg, i32 %arg1) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept14ExpressionSizeILi1EEC2Ev(%"class.adept::ExpressionSize.27"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii(%"class.adept::Array.28"* %arg, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca [7 x i32], align 16
  %tmp8 = bitcast [7 x i32]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 28, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 0
  store i32 %arg1, i32* %tmp9, align 16, !tbaa !34
  %tmp10 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 1
  store i32 %arg2, i32* %tmp10, align 4, !tbaa !34
  %tmp11 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 2
  store i32 %arg3, i32* %tmp11, align 8, !tbaa !34
  %tmp12 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 3
  store i32 %arg4, i32* %tmp12, align 4, !tbaa !34
  %tmp13 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 4
  store i32 %arg5, i32* %tmp13, align 16, !tbaa !34
  %tmp14 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 5
  store i32 %arg6, i32* %tmp14, align 4, !tbaa !34
  %tmp15 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 6
  store i32 %arg7, i32* %tmp15, align 8, !tbaa !34
  call void @_ZN5adept5ArrayILi1EdLb0EE6resizeEPKib(%"class.adept::Array.28"* %arg, i32* nonnull %tmp9, i1 zeroext false)
  call void @llvm.lifetime.end.p0i8(i64 28, i8* nonnull %tmp8) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE6resizeEPKib(%"class.adept::Array.28"* %arg, i32* %arg1, i1 zeroext %arg2) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 1
  %tmp5 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !58
  %tmp6 = icmp eq %"class.adept::Storage.14"* %tmp5, null
  br i1 %tmp6, label %bb8, label %bb7

bb7:                                              ; preds = %bb
  tail call void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp5)
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !58
  br label %bb8

bb8:                                              ; preds = %bb7, %bb
  br label %bb9

bb9:                                              ; preds = %bb43, %bb8
  %tmp10 = phi i32 [ 1, %bb43 ], [ 0, %bb8 ]
  %tmp11 = icmp eq i32 %tmp10, 0
  br i1 %tmp11, label %bb12, label %bb46

bb12:                                             ; preds = %bb9
  %tmp13 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp14 = icmp slt i32 %tmp13, 0
  br i1 %tmp14, label %bb15, label %bb43

bb15:                                             ; preds = %bb12
  %tmp16 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp17 = bitcast i8* %tmp16 to %"class.adept::invalid_dimension"*
  %tmp18 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp18) #4
  %tmp19 = bitcast %"class.std::__cxx11::basic_string"* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp19) #4
  invoke void @_ZN5adept8internal18exception_locationB5cxx11EPKci(%"class.std::__cxx11::basic_string"* nonnull sret %tmp3, i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.100, i64 0, i64 0), i32 1969)
          to label %bb20 unwind label %bb23

bb20:                                             ; preds = %bb15
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(%"class.std::__cxx11::basic_string"* nonnull sret %tmp, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.99, i64 0, i64 0), %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp3)
          to label %bb21 unwind label %bb27

bb21:                                             ; preds = %bb20
  invoke void @_ZN5adept17invalid_dimensionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_dimension"* %tmp17, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb22 unwind label %bb31

bb22:                                             ; preds = %bb21
  invoke void @__cxa_throw(i8* %tmp16, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_dimensionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb82 unwind label %bb31

bb23:                                             ; preds = %bb15
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp19) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  br label %bb40

bb27:                                             ; preds = %bb20
  %tmp28 = landingpad { i8*, i32 }
          cleanup
  %tmp29 = extractvalue { i8*, i32 } %tmp28, 0
  %tmp30 = extractvalue { i8*, i32 } %tmp28, 1
  br label %bb36

bb31:                                             ; preds = %bb22, %bb21
  %tmp32 = phi i1 [ false, %bb22 ], [ true, %bb21 ]
  %tmp33 = landingpad { i8*, i32 }
          cleanup
  %tmp34 = extractvalue { i8*, i32 } %tmp33, 0
  %tmp35 = extractvalue { i8*, i32 } %tmp33, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb36

bb36:                                             ; preds = %bb31, %bb27
  %tmp37 = phi i8* [ %tmp34, %bb31 ], [ %tmp29, %bb27 ]
  %tmp38 = phi i32 [ %tmp35, %bb31 ], [ %tmp30, %bb27 ]
  %tmp39 = phi i1 [ %tmp32, %bb31 ], [ true, %bb27 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp19) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  br i1 %tmp39, label %bb40, label %bb77

bb40:                                             ; preds = %bb36, %bb23
  %tmp41 = phi i32 [ %tmp26, %bb23 ], [ %tmp38, %bb36 ]
  %tmp42 = phi i8* [ %tmp25, %bb23 ], [ %tmp37, %bb36 ]
  call void @__cxa_free_exception(i8* %tmp16) #4
  br label %bb77

bb43:                                             ; preds = %bb12
  %tmp44 = icmp eq i32 %tmp13, 0
  br i1 %tmp44, label %bb45, label %bb9

bb45:                                             ; preds = %bb43
  tail call void @_ZN5adept5ArrayILi1EdLb0EE5clearEv(%"class.adept::Array.28"* %arg)
  br label %bb72

bb46:                                             ; preds = %bb9
  %tmp47 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 2
  tail call void @_ZN5adept14ExpressionSizeILi1EE4copyEPKi(%"class.adept::ExpressionSize.27"* nonnull %tmp47, i32* %arg1)
  br i1 %arg2, label %bb48, label %bb49

bb48:                                             ; preds = %bb46
  tail call void @_ZN5adept5ArrayILi1EdLb0EE16pack_contiguous_Ev(%"class.adept::Array.28"* %arg)
  br label %bb50

bb49:                                             ; preds = %bb46
  tail call void @_ZN5adept5ArrayILi1EdLb0EE5pack_Ev(%"class.adept::Array.28"* %arg)
  br label %bb50

bb50:                                             ; preds = %bb49, %bb48
  %tmp51 = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp52 = icmp eq i8 %tmp51, 0
  br i1 %tmp52, label %bb60, label %bb53

bb53:                                             ; preds = %bb50
  %tmp54 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  %tmp55 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp54, i32 0)
  %tmp56 = load i32, i32* %tmp55, align 4, !tbaa !34
  %tmp57 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp47, i32 0)
  %tmp58 = load i32, i32* %tmp57, align 4, !tbaa !34
  %tmp59 = mul nsw i32 %tmp58, %tmp56
  br label %bb62

bb60:                                             ; preds = %bb50
  %tmp61 = tail call i32 @_ZNK5adept5ArrayILi1EdLb0EE4sizeEv(%"class.adept::Array.28"* %arg)
  br label %bb62

bb62:                                             ; preds = %bb60, %bb53
  %tmp63 = phi i32 [ %tmp59, %bb53 ], [ %tmp61, %bb60 ]
  %tmp64 = tail call i8* @_Znwm(i64 24) #28
  %tmp65 = bitcast i8* %tmp64 to %"class.adept::Storage.14"*
  invoke void @_ZN5adept7StorageIdEC2Eib(%"class.adept::Storage.14"* nonnull %tmp65, i32 %tmp63, i1 zeroext false)
          to label %bb66 unwind label %bb73

bb66:                                             ; preds = %bb62
  %tmp67 = bitcast %"class.adept::Storage.14"** %tmp4 to i8**
  store i8* %tmp64, i8** %tmp67, align 8, !tbaa !58
  %tmp68 = tail call double* @_ZN5adept7StorageIdE4dataEv(%"class.adept::Storage.14"* nonnull %tmp65)
  %tmp69 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 0
  store double* %tmp68, double** %tmp69, align 8, !tbaa !61
  %tmp70 = bitcast %"class.adept::Array.28"* %arg to %"struct.adept::internal::GradientIndex"*
  %tmp71 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !58
  tail call void @_ZN5adept8internal13GradientIndexILb0EE3setIdEEvPKT_PKNS_7StorageIS4_EE(%"struct.adept::internal::GradientIndex"* %tmp70, double* %tmp68, %"class.adept::Storage.14"* %tmp71)
  br label %bb72

bb72:                                             ; preds = %bb66, %bb45
  ret void

bb73:                                             ; preds = %bb62
  %tmp74 = landingpad { i8*, i32 }
          cleanup
  %tmp75 = extractvalue { i8*, i32 } %tmp74, 0
  %tmp76 = extractvalue { i8*, i32 } %tmp74, 1
  tail call void @_ZdlPv(i8* nonnull %tmp64) #27
  br label %bb77

bb77:                                             ; preds = %bb73, %bb40, %bb36
  %tmp78 = phi i8* [ %tmp75, %bb73 ], [ %tmp42, %bb40 ], [ %tmp37, %bb36 ]
  %tmp79 = phi i32 [ %tmp76, %bb73 ], [ %tmp41, %bb40 ], [ %tmp38, %bb36 ]
  %tmp80 = insertvalue { i8*, i32 } undef, i8* %tmp78, 0
  %tmp81 = insertvalue { i8*, i32 } %tmp80, i32 %tmp79, 1
  resume { i8*, i32 } %tmp81

bb82:                                             ; preds = %bb22
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* %arg) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp1 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 2
  %tmp3 = load i32, i32* %tmp2, align 4, !tbaa !110
  %tmp4 = icmp eq i32 %tmp3, 0
  br i1 %tmp4, label %bb5, label %bb33

bb5:                                              ; preds = %bb
  %tmp6 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp7 = bitcast i8* %tmp6 to %"class.adept::invalid_operation"*
  %tmp8 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp8) #4
  %tmp9 = bitcast %"class.std::__cxx11::basic_string"* %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp9) #4
  invoke void @_ZN5adept8internal18exception_locationB5cxx11EPKci(%"class.std::__cxx11::basic_string"* nonnull sret %tmp1, i8* getelementptr inbounds ([94 x i8], [94 x i8]* @.str.102, i64 0, i64 0), i32 112)
          to label %bb10 unwind label %bb13

bb10:                                             ; preds = %bb5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(%"class.std::__cxx11::basic_string"* nonnull sret %tmp, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.101, i64 0, i64 0), %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp1)
          to label %bb11 unwind label %bb17

bb11:                                             ; preds = %bb10
  invoke void @_ZN5adept17invalid_operationC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_operation"* %tmp7, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb12 unwind label %bb21

bb12:                                             ; preds = %bb11
  invoke void @__cxa_throw(i8* %tmp6, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_operationE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb44 unwind label %bb21

bb13:                                             ; preds = %bb5
  %tmp14 = landingpad { i8*, i32 }
          cleanup
  %tmp15 = extractvalue { i8*, i32 } %tmp14, 0
  %tmp16 = extractvalue { i8*, i32 } %tmp14, 1
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp8) #4
  br label %bb30

bb17:                                             ; preds = %bb10
  %tmp18 = landingpad { i8*, i32 }
          cleanup
  %tmp19 = extractvalue { i8*, i32 } %tmp18, 0
  %tmp20 = extractvalue { i8*, i32 } %tmp18, 1
  br label %bb26

bb21:                                             ; preds = %bb12, %bb11
  %tmp22 = phi i1 [ false, %bb12 ], [ true, %bb11 ]
  %tmp23 = landingpad { i8*, i32 }
          cleanup
  %tmp24 = extractvalue { i8*, i32 } %tmp23, 0
  %tmp25 = extractvalue { i8*, i32 } %tmp23, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb26

bb26:                                             ; preds = %bb21, %bb17
  %tmp27 = phi i8* [ %tmp24, %bb21 ], [ %tmp19, %bb17 ]
  %tmp28 = phi i32 [ %tmp25, %bb21 ], [ %tmp20, %bb17 ]
  %tmp29 = phi i1 [ %tmp22, %bb21 ], [ true, %bb17 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp1) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp8) #4
  br i1 %tmp29, label %bb30, label %bb39

bb30:                                             ; preds = %bb26, %bb13
  %tmp31 = phi i32 [ %tmp16, %bb13 ], [ %tmp28, %bb26 ]
  %tmp32 = phi i8* [ %tmp15, %bb13 ], [ %tmp27, %bb26 ]
  call void @__cxa_free_exception(i8* %tmp6) #4
  br label %bb39

bb33:                                             ; preds = %bb
  %tmp34 = add nsw i32 %tmp3, -1
  store i32 %tmp34, i32* %tmp2, align 4, !tbaa !110
  %tmp35 = icmp eq i32 %tmp34, 0
  br i1 %tmp35, label %bb36, label %bb38

bb36:                                             ; preds = %bb33
  tail call void @_ZN5adept7StorageIdED2Ev(%"class.adept::Storage.14"* nonnull %arg) #4
  %tmp37 = bitcast %"class.adept::Storage.14"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp37) #27
  br label %bb38

bb38:                                             ; preds = %bb36, %bb33
  ret void

bb39:                                             ; preds = %bb30, %bb26
  %tmp40 = phi i32 [ %tmp28, %bb26 ], [ %tmp31, %bb30 ]
  %tmp41 = phi i8* [ %tmp27, %bb26 ], [ %tmp32, %bb30 ]
  %tmp42 = insertvalue { i8*, i32 } undef, i8* %tmp41, 0
  %tmp43 = insertvalue { i8*, i32 } %tmp42, i32 %tmp40, 1
  resume { i8*, i32 } %tmp43

bb44:                                             ; preds = %bb12
  unreachable
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(%"class.std::__cxx11::basic_string"* noalias sret %arg, i8* %arg1, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc(%"class.std::__cxx11::basic_string"* nonnull %arg2, i64 0, i8* %arg1)
  %tmp3 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZSt4moveIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEONSt16remove_referenceIT_E4typeEOS8_(%"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp) #4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp3) #4
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adept8internal18exception_locationB5cxx11EPKci(%"class.std::__cxx11::basic_string"* noalias sret %arg, i8* %arg1, i32 %arg2) local_unnamed_addr #10 comdat personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %tmp3 = bitcast %"class.std::__cxx11::basic_stringstream"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 392, i8* nonnull %tmp3) #4
  %tmp4 = tail call i32 @_ZStorSt13_Ios_OpenmodeS_(i32 16, i32 8)
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp, i32 %tmp4)
  %tmp5 = getelementptr inbounds %"class.std::__cxx11::basic_stringstream", %"class.std::__cxx11::basic_stringstream"* %tmp, i64 0, i32 0, i32 1
  %tmp6 = bitcast %"class.std::basic_ostream.base"* %tmp5 to %"class.std::basic_ostream"*
  %tmp7 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp6, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.105, i64 0, i64 0))
          to label %bb8 unwind label %bb18

bb8:                                              ; preds = %bb
  %tmp9 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp7, i8* %arg1)
          to label %bb10 unwind label %bb18

bb10:                                             ; preds = %bb8
  %tmp11 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp9, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.33, i64 0, i64 0))
          to label %bb12 unwind label %bb18

bb12:                                             ; preds = %bb10
  %tmp13 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* nonnull %tmp11, i32 %arg2)
          to label %bb14 unwind label %bb18

bb14:                                             ; preds = %bb12
  %tmp15 = invoke dereferenceable(272) %"class.std::basic_ostream"* @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(%"class.std::basic_ostream"* nonnull dereferenceable(272) %tmp13, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.106, i64 0, i64 0))
          to label %bb16 unwind label %bb18

bb16:                                             ; preds = %bb14
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(%"class.std::__cxx11::basic_string"* sret %arg, %"class.std::__cxx11::basic_stringstream"* nonnull %tmp)
          to label %bb17 unwind label %bb18

bb17:                                             ; preds = %bb16
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 392, i8* nonnull %tmp3) #4
  ret void

bb18:                                             ; preds = %bb16, %bb14, %bb12, %bb10, %bb8, %bb
  %tmp19 = landingpad { i8*, i32 }
          cleanup
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(%"class.std::__cxx11::basic_stringstream"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 392, i8* nonnull %tmp3) #4
  resume { i8*, i32 } %tmp19
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept17invalid_dimensionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_dimension"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp2 = alloca %"class.std::allocator", align 1
  %tmp3 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp3) #4
  %tmp4 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.96, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp2)
          to label %bb5 unwind label %bb12

bb5:                                              ; preds = %bb
  %tmp6 = getelementptr inbounds %"class.adept::invalid_dimension", %"class.adept::invalid_dimension"* %arg, i64 0, i32 0
  invoke void @_ZN5adept15array_exceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::array_exception"* %tmp6, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb7 unwind label %bb16

bb7:                                              ; preds = %bb5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp3) #4
  %tmp8 = getelementptr inbounds %"class.adept::invalid_dimension", %"class.adept::invalid_dimension"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept17invalid_dimensionE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp8, align 8, !tbaa !8
  %tmp9 = getelementptr inbounds %"class.adept::invalid_dimension", %"class.adept::invalid_dimension"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp10 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp9, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb11 unwind label %bb23

bb11:                                             ; preds = %bb7
  ret void

bb12:                                             ; preds = %bb
  %tmp13 = landingpad { i8*, i32 }
          cleanup
  %tmp14 = extractvalue { i8*, i32 } %tmp13, 0
  %tmp15 = extractvalue { i8*, i32 } %tmp13, 1
  br label %bb20

bb16:                                             ; preds = %bb5
  %tmp17 = landingpad { i8*, i32 }
          cleanup
  %tmp18 = extractvalue { i8*, i32 } %tmp17, 0
  %tmp19 = extractvalue { i8*, i32 } %tmp17, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb20

bb20:                                             ; preds = %bb16, %bb12
  %tmp21 = phi i8* [ %tmp18, %bb16 ], [ %tmp14, %bb12 ]
  %tmp22 = phi i32 [ %tmp19, %bb16 ], [ %tmp15, %bb12 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp2) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp3) #4
  br label %bb28

bb23:                                             ; preds = %bb7
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  %tmp27 = getelementptr inbounds %"class.adept::invalid_dimension", %"class.adept::invalid_dimension"* %arg, i64 0, i32 0, i32 0
  call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp27) #4
  br label %bb28

bb28:                                             ; preds = %bb23, %bb20
  %tmp29 = phi i8* [ %tmp25, %bb23 ], [ %tmp21, %bb20 ]
  %tmp30 = phi i32 [ %tmp26, %bb23 ], [ %tmp22, %bb20 ]
  %tmp31 = insertvalue { i8*, i32 } undef, i8* %tmp29, 0
  %tmp32 = insertvalue { i8*, i32 } %tmp31, i32 %tmp30, 1
  resume { i8*, i32 } %tmp32
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE5clearEv(%"class.adept::Array.28"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 1
  %tmp1 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !58
  %tmp2 = icmp eq %"class.adept::Storage.14"* %tmp1, null
  br i1 %tmp2, label %bb4, label %bb3

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp1)
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !58
  br label %bb4

bb4:                                              ; preds = %bb3, %bb
  %tmp5 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 0
  store double* null, double** %tmp5, align 8, !tbaa !61
  %tmp6 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 2
  tail call void @_ZN5adept14ExpressionSizeILi1EE7set_allEi(%"class.adept::ExpressionSize.27"* nonnull %tmp6, i32 0)
  %tmp7 = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  tail call void @_ZN5adept14ExpressionSizeILi1EE7set_allEi(%"class.adept::ExpressionSize.27"* nonnull %tmp7, i32 0)
  %tmp8 = bitcast %"class.adept::Array.28"* %arg to %"struct.adept::internal::GradientIndex"*
  tail call void @_ZN5adept8internal13GradientIndexILb0EE5clearEv(%"struct.adept::internal::GradientIndex"* %tmp8)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept14ExpressionSizeILi1EE4copyEPKi(%"class.adept::ExpressionSize.27"* %arg, i32* %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp2 = getelementptr inbounds %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27"* %arg, i64 0, i32 0, i64 0
  store i32 %tmp, i32* %tmp2, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE16pack_contiguous_Ev(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp1 = icmp eq i8 %tmp, 0
  br i1 %tmp1, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb0EE26pack_row_major_contiguous_Ev(%"class.adept::Array.28"* %arg)
  br label %bb4

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb0EE18pack_column_major_Ev(%"class.adept::Array.28"* %arg)
  br label %bb4

bb4:                                              ; preds = %bb3, %bb2
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE5pack_Ev(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp1 = icmp eq i8 %tmp, 0
  br i1 %tmp1, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb0EE15pack_row_major_Ev(%"class.adept::Array.28"* %arg)
  br label %bb4

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb0EE18pack_column_major_Ev(%"class.adept::Array.28"* %arg)
  br label %bb4

bb4:                                              ; preds = %bb3, %bb2
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27"* %arg, i64 0, i32 0, i64 %tmp
  ret i32* %tmp2
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5ArrayILi1EdLb0EE4sizeEv(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 2
  %tmp1 = tail call dereferenceable(4) i32* @_ZNK5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  %tmp2 = load i32, i32* %tmp1, align 4, !tbaa !34
  ret i32 %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept7StorageIdEC2Eib(%"class.adept::Storage.14"* %arg, i32 %arg1, i1 zeroext %arg2) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca i32, align 4
  store i32 %arg1, i32* %tmp, align 4, !tbaa !34
  %tmp3 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 1
  store i32 %arg1, i32* %tmp3, align 8, !tbaa !112
  %tmp4 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 2
  store i32 1, i32* %tmp4, align 4, !tbaa !110
  %tmp5 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 3
  store i32 -1, i32* %tmp5, align 8, !tbaa !113
  %tmp6 = tail call double* @_ZN5adept8internal13alloc_alignedIdEEPT_i(i32 %arg1)
  %tmp7 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 0
  store double* %tmp6, double** %tmp7, align 8, !tbaa !114
  %tmp8 = load i32, i32* @_ZN5adept8internal26n_storage_objects_created_E, align 4, !tbaa !34
  %tmp9 = add nsw i32 %tmp8, 1
  store i32 %tmp9, i32* @_ZN5adept8internal26n_storage_objects_created_E, align 4, !tbaa !34
  br i1 %arg2, label %bb10, label %bb14

bb10:                                             ; preds = %bb
  %tmp11 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp12 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp11, align 8, !tbaa !18
  %tmp13 = call i32 @_ZN5adept5Stack18register_gradientsERKi(%"class.adept::Stack"* %tmp12, i32* nonnull dereferenceable(4) %tmp)
  store i32 %tmp13, i32* %tmp5, align 8, !tbaa !113
  br label %bb14

bb14:                                             ; preds = %bb10, %bb
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double* @_ZN5adept7StorageIdE4dataEv(%"class.adept::Storage.14"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 0
  %tmp1 = load double*, double** %tmp, align 8, !tbaa !114
  ret double* %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb0EE3setIdEEvPKT_PKNS_7StorageIS4_EE(%"struct.adept::internal::GradientIndex"* %arg, double* %arg1, %"class.adept::Storage.14"* %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept7StorageIdED2Ev(%"class.adept::Storage.14"* %arg) unnamed_addr #3 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 0
  %tmp1 = load double*, double** %tmp, align 8, !tbaa !114
  tail call void @_ZN5adept8internal12free_alignedIdEEvPT_(double* %tmp1)
  %tmp2 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 3
  %tmp3 = load i32, i32* %tmp2, align 8, !tbaa !113
  %tmp4 = icmp sgt i32 %tmp3, -1
  br i1 %tmp4, label %bb5, label %bb9

bb5:                                              ; preds = %bb
  %tmp6 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE() #4
  %tmp7 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp6, align 8, !tbaa !18
  %tmp8 = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 1
  invoke void @_ZN5adept5Stack20unregister_gradientsERKiS2_(%"class.adept::Stack"* %tmp7, i32* nonnull dereferenceable(4) %tmp2, i32* nonnull dereferenceable(4) %tmp8)
          to label %bb9 unwind label %bb12

bb9:                                              ; preds = %bb5, %bb
  %tmp10 = load i32, i32* @_ZN5adept8internal26n_storage_objects_deleted_E, align 4, !tbaa !34
  %tmp11 = add nsw i32 %tmp10, 1
  store i32 %tmp11, i32* @_ZN5adept8internal26n_storage_objects_deleted_E, align 4, !tbaa !34
  ret void

bb12:                                             ; preds = %bb5
  %tmp13 = landingpad { i8*, i32 }
          catch i8* null
  %tmp14 = extractvalue { i8*, i32 } %tmp13, 0
  tail call void @__clang_call_terminate(i8* %tmp14) #25
  unreachable
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZSt4moveIRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEONSt16remove_referenceIT_E4typeEOS8_(%"class.std::__cxx11::basic_string"* dereferenceable(32) %arg) local_unnamed_addr #6 comdat {
bb:
  ret %"class.std::__cxx11::basic_string"* %arg
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i8* %arg2) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNSt11char_traitsIcE6lengthEPKc(i8* %arg2)
  %tmp3 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i64 0, i8* %arg2, i64 %tmp)
  ret %"class.std::__cxx11::basic_string"* %tmp3
}

; Function Attrs: nounwind uwtable
define available_externally dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_(%"class.std::__cxx11::basic_string"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #3 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 0
  %tmp2 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* %arg)
  %tmp3 = tail call dereferenceable(1) %"class.std::allocator"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  %tmp4 = tail call dereferenceable(1) %"class.std::allocator"* @_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_(%"class.std::allocator"* nonnull dereferenceable(1) %tmp3) #4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_(%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider"* %tmp, i8* %tmp2, %"class.std::allocator"* nonnull dereferenceable(1) %tmp4)
  %tmp5 = invoke zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
          to label %bb6 unwind label %bb13

bb6:                                              ; preds = %bb
  br i1 %tmp5, label %bb7, label %bb17

bb7:                                              ; preds = %bb6
  %tmp8 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg, i64 0, i32 2
  %tmp9 = bitcast %union.anon* %tmp8 to i8*
  %tmp10 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg1, i64 0, i32 2
  %tmp11 = bitcast %union.anon* %tmp10 to i8*
  %tmp12 = tail call i8* @_ZNSt11char_traitsIcE4copyEPcPKcm(i8* nonnull %tmp9, i8* nonnull %tmp11, i64 16)
  br label %bb21

bb13:                                             ; preds = %bb21, %bb
  %tmp14 = landingpad { i8*, i32 }
          catch i8* null
  %tmp15 = extractvalue { i8*, i32 } %tmp14, 0
  %tmp16 = bitcast %"class.std::__cxx11::basic_string"* %arg to %"class.std::allocator"*
  tail call void @_ZNSaIcED2Ev(%"class.std::allocator"* %tmp16) #4
  tail call void @__clang_call_terminate(i8* %tmp15) #25
  unreachable

bb17:                                             ; preds = %bb6
  %tmp18 = tail call i8* @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* %arg, i8* %tmp18)
  %tmp19 = getelementptr inbounds %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string"* %arg1, i64 0, i32 2, i32 0
  %tmp20 = load i64, i64* %tmp19, align 8, !tbaa !53
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp20)
  br label %bb21

bb21:                                             ; preds = %bb17, %bb7
  %tmp22 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(%"class.std::__cxx11::basic_string"* nonnull %arg1) #4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp22)
  %tmp23 = tail call i8* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(%"class.std::__cxx11::basic_string"* nonnull %arg1)
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc(%"class.std::__cxx11::basic_string"* nonnull %arg1, i8* %tmp23)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(%"class.std::__cxx11::basic_string"* nonnull %arg1, i64 0)
          to label %bb24 unwind label %bb13

bb24:                                             ; preds = %bb21
  ret void
}

; Function Attrs: uwtable
define available_externally dso_local dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i64 %arg2, i8* %arg3, i64 %arg4) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.103, i64 0, i64 0))
  %tmp5 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i64 %arg2) #4
  %tmp6 = tail call dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(%"class.std::__cxx11::basic_string"* %arg, i64 %tmp, i64 %tmp5, i8* %arg3, i64 %arg4)
  ret %"class.std::__cxx11::basic_string"* %tmp6
}

; Function Attrs: uwtable
define available_externally dso_local i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i8* %arg2) local_unnamed_addr #0 align 2 {
bb:
  %tmp = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp3 = icmp ult i64 %tmp, %arg1
  br i1 %tmp3, label %bb4, label %bb6

bb4:                                              ; preds = %bb
  %tmp5 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  tail call void (i8*, ...) @_ZSt24__throw_out_of_range_fmtPKcz(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.104, i64 0, i64 0), i8* %arg2, i64 %arg1, i64 %tmp5) #26
  unreachable

bb6:                                              ; preds = %bb
  ret i64 %arg1
}

; Function Attrs: norecurse nounwind uwtable
define available_externally dso_local i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm(%"class.std::__cxx11::basic_string"* %arg, i64 %arg1, i64 %arg2) local_unnamed_addr #6 align 2 {
bb:
  %tmp = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp3 = sub i64 %tmp, %arg1
  %tmp4 = icmp ugt i64 %tmp3, %arg2
  br i1 %tmp4, label %bb8, label %bb5

bb5:                                              ; preds = %bb
  %tmp6 = tail call i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(%"class.std::__cxx11::basic_string"* %arg) #4
  %tmp7 = sub i64 %tmp6, %arg1
  br label %bb8

bb8:                                              ; preds = %bb5, %bb
  %tmp9 = phi i64 [ %tmp7, %bb5 ], [ %arg2, %bb ]
  ret i64 %tmp9
}

; Function Attrs: noreturn
declare dso_local void @_ZSt24__throw_out_of_range_fmtPKcz(i8*, ...) local_unnamed_addr #23

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept17invalid_dimensionD0Ev(%"class.adept::invalid_dimension"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::invalid_dimension", %"class.adept::invalid_dimension"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::invalid_dimension"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept14ExpressionSizeILi1EE7set_allEi(%"class.adept::ExpressionSize.27"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27"* %arg, i64 0, i32 0, i64 0
  store i32 %arg1, i32* %tmp, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb0EE5clearEv(%"struct.adept::internal::GradientIndex"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE26pack_row_major_contiguous_Ev(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE18pack_column_major_Ev(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb0EE15pack_row_major_Ev(%"class.adept::Array.28"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.28", %"class.adept::Array.28"* %arg, i64 0, i32 3
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(4) i32* @_ZNK5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::ExpressionSize.27", %"class.adept::ExpressionSize.27"* %arg, i64 0, i32 0, i64 %tmp
  ret i32* %tmp2
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i32 @_ZN5adept5Stack18register_gradientsERKi(%"class.adept::Stack"* %arg, i32* dereferenceable(4) %arg1) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call i32 @_ZN5adept5Stack21do_register_gradientsERKi(%"class.adept::Stack"* %arg, i32* nonnull dereferenceable(4) %arg1)
  ret i32 %tmp
}

; Function Attrs: inlinehint norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZN5adept8internal18get_index_with_lenEii(i32 %arg, i32 %arg1) local_unnamed_addr #18 comdat {
bb:
  ret i32 %arg
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5boost5arrayINS_6detail11multi_array12extent_rangeIlmEELm1EEC2Ev(%"class.boost::array"* %arg) unnamed_addr #10 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::array", %"class.boost::array"* %arg, i64 0, i32 0, i64 0
  tail call void @_ZN5boost6detail11multi_array12extent_rangeIlmEC2Ev(%"class.boost::detail::multi_array::extent_range"* %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5boost6detail11multi_array12extent_rangeIlmEC2Ev(%"class.boost::detail::multi_array::extent_range"* %arg) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca i32, align 4
  %tmp1 = alloca i32, align 4
  %tmp2 = getelementptr inbounds %"class.boost::detail::multi_array::extent_range", %"class.boost::detail::multi_array::extent_range"* %arg, i64 0, i32 0
  %tmp3 = bitcast i32* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp3) #4
  store i32 0, i32* %tmp, align 4, !tbaa !34
  %tmp4 = bitcast i32* %tmp1 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp4) #4
  store i32 0, i32* %tmp1, align 4, !tbaa !34
  call void @_ZNSt4pairIllEC2IiiLb1EEEOT_OT0_(%"struct.std::pair"* %tmp2, i32* nonnull dereferenceable(4) %tmp, i32* nonnull dereferenceable(4) %tmp1)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp3) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNSt4pairIllEC2IiiLb1EEEOT_OT0_(%"struct.std::pair"* %arg, i32* dereferenceable(4) %arg1, i32* dereferenceable(4) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(4) i32* @_ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE(i32* nonnull dereferenceable(4) %arg1) #4
  %tmp4 = load i32, i32* %tmp3, align 4, !tbaa !34
  %tmp5 = sext i32 %tmp4 to i64
  store i64 %tmp5, i64* %tmp, align 8, !tbaa !115
  %tmp6 = getelementptr inbounds %"struct.std::pair", %"struct.std::pair"* %arg, i64 0, i32 1
  %tmp7 = tail call dereferenceable(4) i32* @_ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE(i32* nonnull dereferenceable(4) %arg2) #4
  %tmp8 = load i32, i32* %tmp7, align 4, !tbaa !34
  %tmp9 = sext i32 %tmp8 to i64
  store i64 %tmp9, i64* %tmp6, align 8, !tbaa !117
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(4) i32* @_ZSt7forwardIiEOT_RNSt16remove_referenceIS0_E4typeE(i32* dereferenceable(4) %arg) local_unnamed_addr #6 comdat {
bb:
  ret i32* %arg
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZN5boost5arrayINS_6detail11multi_array11index_rangeIlmEELm1EEC2Ev(%"class.boost::array.30"* %arg) unnamed_addr #21 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.boost::array.30", %"class.boost::array.30"* %arg, i64 0, i32 0, i64 0
  tail call void @_ZN5boost6detail11multi_array11index_rangeIlmEC2Ev(%"class.boost::detail::multi_array::index_range"* %tmp)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5boost6detail11multi_array11index_rangeIlmEC2Ev(%"class.boost::detail::multi_array::index_range"* %arg) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call i64 @_ZN5boost6detail11multi_array11index_rangeIlmE10from_startEv()
  %tmp1 = getelementptr inbounds %"class.boost::detail::multi_array::index_range", %"class.boost::detail::multi_array::index_range"* %arg, i64 0, i32 0
  store i64 %tmp, i64* %tmp1, align 8, !tbaa !118
  %tmp2 = tail call i64 @_ZN5boost6detail11multi_array11index_rangeIlmE6to_endEv()
  %tmp3 = getelementptr inbounds %"class.boost::detail::multi_array::index_range", %"class.boost::detail::multi_array::index_range"* %arg, i64 0, i32 1
  store i64 %tmp2, i64* %tmp3, align 8, !tbaa !120
  %tmp4 = getelementptr inbounds %"class.boost::detail::multi_array::index_range", %"class.boost::detail::multi_array::index_range"* %arg, i64 0, i32 2
  store i64 1, i64* %tmp4, align 8, !tbaa !121
  %tmp5 = getelementptr inbounds %"class.boost::detail::multi_array::index_range", %"class.boost::detail::multi_array::index_range"* %arg, i64 0, i32 3
  store i8 0, i8* %tmp5, align 8, !tbaa !122
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZN5boost6detail11multi_array11index_rangeIlmE10from_startEv() local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i64 @_ZNSt14numeric_limitsIlE3minEv() #4
  ret i64 %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZN5boost6detail11multi_array11index_rangeIlmE6to_endEv() local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = tail call i64 @_ZNSt14numeric_limitsIlE3maxEv() #4
  ret i64 %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNSt14numeric_limitsIlE3minEv() local_unnamed_addr #6 comdat align 2 {
bb:
  ret i64 -9223372036854775808
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i64 @_ZNSt14numeric_limitsIlE3maxEv() local_unnamed_addr #6 comdat align 2 {
bb:
  ret i64 9223372036854775807
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5ArrayILi1EdLb1EE14gradient_indexEv(%"class.adept::Array.32"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 0
  %tmp1 = tail call i32 @_ZNK5adept8internal13GradientIndexILb1EE3getEv(%"struct.adept::internal::GradientIndex.34"* %tmp)
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept15ActiveReferenceIdEC2ERdi(%"class.adept::ActiveReference"* %arg, double* dereferenceable(8) %arg1, i32 %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  store double* %arg1, double** %tmp, align 8, !tbaa !18
  %tmp3 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  store i32 %arg2, i32* %tmp3, align 8, !tbaa !77
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept8internal13GradientIndexILb1EE3getEv(%"struct.adept::internal::GradientIndex.34"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::GradientIndex.34", %"struct.adept::internal::GradientIndex.34"* %arg, i64 0, i32 0
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !123
  ret i32 %tmp1
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 9
  %tmp2 = load i32, i32* %tmp1, align 4, !tbaa !36
  %tmp3 = add nsw i32 %tmp2, 1
  store i32 %tmp3, i32* %tmp1, align 4, !tbaa !36
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp5 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  br i1 %tmp5, label %bb6, label %bb14

bb6:                                              ; preds = %bb
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp8 = load i32, i32* %tmp7, align 8, !tbaa !40
  %tmp9 = add nsw i32 %tmp8, 1
  store i32 %tmp9, i32* %tmp7, align 8, !tbaa !40
  %tmp10 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp11 = load i32, i32* %tmp10, align 8, !tbaa !41
  %tmp12 = icmp slt i32 %tmp8, %tmp11
  br i1 %tmp12, label %bb32, label %bb13

bb13:                                             ; preds = %bb6
  store i32 %tmp9, i32* %tmp10, align 8, !tbaa !41
  br label %bb32

bb14:                                             ; preds = %bb
  %tmp15 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5frontEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  %tmp16 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp15, i64 0, i32 0
  %tmp17 = load i32, i32* %tmp16, align 4, !tbaa !39
  %tmp18 = add nsw i32 %tmp17, 1
  store i32 %tmp18, i32* %tmp16, align 4, !tbaa !39
  %tmp19 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp15, i64 0, i32 1
  %tmp20 = load i32, i32* %tmp19, align 4, !tbaa !37
  %tmp21 = icmp slt i32 %tmp17, %tmp20
  br i1 %tmp21, label %bb32, label %bb22

bb22:                                             ; preds = %bb14
  %tmp23 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp24 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp24) #4
  %tmp25 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  %tmp26 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp25, %"struct.std::__detail::_List_node_base"** %tmp26, align 8
  %tmp27 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_(%"struct.std::_List_iterator"* nonnull %tmp23, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp24) #4
  br i1 %tmp27, label %bb28, label %bb31

bb28:                                             ; preds = %bb22
  %tmp29 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  %tmp30 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp29, %"struct.std::__detail::_List_node_base"** %tmp30, align 8
  br label %bb31

bb31:                                             ; preds = %bb28, %bb22
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9pop_frontEv(%"class.std::__cxx11::list"* nonnull %tmp4) #4
  br label %bb32

bb32:                                             ; preds = %bb31, %bb14, %bb13, %bb6
  %tmp33 = phi i32 [ %tmp17, %bb14 ], [ %tmp17, %bb31 ], [ %tmp8, %bb6 ], [ %tmp8, %bb13 ]
  ret i32 %tmp33
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi1EEEvv(%"class.adept::internal::StackStorageOrig"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 1)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.36"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector", align 1
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = getelementptr inbounds %"class.adept::internal::ScratchVector", %"class.adept::internal::ScratchVector"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi0EdEC2Ev(%"class.adept::internal::ScratchVector"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* %arg)
  %tmp6 = call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector"* nonnull dereferenceable(1) %tmp)
  %tmp7 = call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector"* nonnull dereferenceable(1) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) %"struct.adept::Gap"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5frontEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp1 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp1) #4
  %tmp2 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* %arg) #4
  %tmp3 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp2, %"struct.std::__detail::_List_node_base"** %tmp3, align 8
  %tmp4 = call dereferenceable(8) %"struct.adept::Gap"* @_ZNKSt14_List_iteratorIN5adept3GapEEdeEv(%"struct.std::_List_iterator"* nonnull %tmp) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp1) #4
  ret %"struct.adept::Gap"* %tmp4
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE9pop_frontEv(%"class.std::__cxx11::list"* %arg) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE5beginEv(%"class.std::__cxx11::list"* %arg) #4
  tail call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8_M_eraseESt14_List_iteratorIS2_E(%"class.std::__cxx11::list"* %arg, %"struct.std::__detail::_List_node_base"* %tmp) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 6
  %tmp2 = load i32, i32* %tmp, align 4, !tbaa !52
  %tmp3 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 5
  %tmp4 = load i32, i32* %tmp3, align 8, !tbaa !51
  %tmp5 = add nsw i32 %tmp4, %arg1
  %tmp6 = icmp sgt i32 %tmp2, %tmp5
  br i1 %tmp6, label %bb8, label %bb7

bb7:                                              ; preds = %bb
  tail call void @_ZN5adept8internal16StackStorageOrig20grow_operation_stackEi(%"class.adept::internal::StackStorageOrig"* nonnull %arg, i32 %arg1)
  br label %bb8

bb8:                                              ; preds = %bb7, %bb
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13ScratchVectorILi0EdEC2Ev(%"class.adept::internal::ScratchVector"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.36"* %arg to %"class.adept::ActiveReference"*
  ret %"class.adept::ActiveReference"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector"* dereferenceable(1) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector"* dereferenceable(1) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  store double 1.000000e+00, double* %tmp, align 8, !tbaa !31
  %tmp6 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* %arg, double* dereferenceable(8) %arg1, i32* dereferenceable(4) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast double* %arg1 to i64*
  %tmp3 = load i64, i64* %tmp, align 8, !tbaa !31
  %tmp4 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 1
  %tmp5 = load double*, double** %tmp4, align 8, !tbaa !26
  %tmp6 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 5
  %tmp7 = load i32, i32* %tmp6, align 8, !tbaa !51
  %tmp8 = sext i32 %tmp7 to i64
  %tmp9 = getelementptr inbounds double, double* %tmp5, i64 %tmp8
  %tmp10 = bitcast double* %tmp9 to i64*
  store i64 %tmp3, i64* %tmp10, align 8, !tbaa !31
  %tmp11 = load i32, i32* %arg2, align 4, !tbaa !34
  %tmp12 = getelementptr inbounds %"class.adept::internal::StackStorageOrig", %"class.adept::internal::StackStorageOrig"* %arg, i64 0, i32 2
  %tmp13 = load i32*, i32** %tmp12, align 8, !tbaa !27
  %tmp14 = add nsw i32 %tmp7, 1
  store i32 %tmp14, i32* %tmp6, align 8, !tbaa !51
  %tmp15 = getelementptr inbounds i32, i32* %tmp13, i64 %tmp8
  store i32 %tmp11, i32* %tmp15, align 4, !tbaa !34
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack19unregister_gradientERKi(%"class.adept::Stack"* %arg, i32* dereferenceable(4) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"struct.std::_List_iterator", align 8
  %tmp2 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 9
  %tmp3 = load i32, i32* %tmp2, align 4, !tbaa !36
  %tmp4 = add nsw i32 %tmp3, -1
  store i32 %tmp4, i32* %tmp2, align 4, !tbaa !36
  %tmp5 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp6 = add nsw i32 %tmp5, 1
  %tmp7 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 6
  %tmp8 = load i32, i32* %tmp7, align 8, !tbaa !40
  %tmp9 = icmp eq i32 %tmp6, %tmp8
  br i1 %tmp9, label %bb10, label %bb33

bb10:                                             ; preds = %bb
  store i32 %tmp5, i32* %tmp7, align 8, !tbaa !40
  %tmp11 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 4
  %tmp12 = tail call zeroext i1 @_ZNKSt7__cxx114listIN5adept3GapESaIS2_EE5emptyEv(%"class.std::__cxx11::list"* nonnull %tmp11) #4
  br i1 %tmp12, label %bb34, label %bb13

bb13:                                             ; preds = %bb10
  %tmp14 = tail call dereferenceable(8) %"struct.adept::Gap"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE4backEv(%"class.std::__cxx11::list"* nonnull %tmp11) #4
  %tmp15 = load i32, i32* %tmp7, align 8, !tbaa !40
  %tmp16 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp14, i64 0, i32 1
  %tmp17 = load i32, i32* %tmp16, align 4, !tbaa !37
  %tmp18 = add nsw i32 %tmp17, 1
  %tmp19 = icmp eq i32 %tmp15, %tmp18
  br i1 %tmp19, label %bb20, label %bb34

bb20:                                             ; preds = %bb13
  %tmp21 = getelementptr inbounds %"struct.adept::Gap", %"struct.adept::Gap"* %tmp14, i64 0, i32 0
  %tmp22 = load i32, i32* %tmp21, align 4, !tbaa !39
  store i32 %tmp22, i32* %tmp7, align 8, !tbaa !40
  %tmp23 = bitcast %"struct.std::_List_iterator"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp23) #4
  %tmp24 = tail call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp11) #4
  %tmp25 = getelementptr inbounds %"struct.std::_List_iterator", %"struct.std::_List_iterator"* %tmp, i64 0, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp24, %"struct.std::__detail::_List_node_base"** %tmp25, align 8
  %tmp26 = call %"struct.std::__detail::_List_node_base"* @_ZNSt14_List_iteratorIN5adept3GapEEmmEi(%"struct.std::_List_iterator"* nonnull %tmp, i32 0) #4
  %tmp27 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5
  %tmp28 = call zeroext i1 @_ZNKSt14_List_iteratorIN5adept3GapEEeqERKS2_(%"struct.std::_List_iterator"* nonnull %tmp27, %"struct.std::_List_iterator"* nonnull dereferenceable(8) %tmp) #4
  br i1 %tmp28, label %bb29, label %bb32

bb29:                                             ; preds = %bb20
  %tmp30 = call %"struct.std::__detail::_List_node_base"* @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE3endEv(%"class.std::__cxx11::list"* nonnull %tmp11) #4
  %tmp31 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 5, i32 0
  store %"struct.std::__detail::_List_node_base"* %tmp30, %"struct.std::__detail::_List_node_base"** %tmp31, align 8
  br label %bb32

bb32:                                             ; preds = %bb29, %bb20
  call void @_ZNSt7__cxx114listIN5adept3GapESaIS2_EE8pop_backEv(%"class.std::__cxx11::list"* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp23) #4
  br label %bb34

bb33:                                             ; preds = %bb
  tail call void @_ZN5adept5Stack27unregister_gradient_not_topERKi(%"class.adept::Stack"* nonnull %arg, i32* nonnull dereferenceable(4) %arg1)
  br label %bb34

bb34:                                             ; preds = %bb33, %bb32, %bb13, %bb10
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::Active"* @_ZN5adept6ActiveIdEaSERKS1_(%"class.adept::Active"* %arg, %"class.adept::Active"* dereferenceable(16) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp2 = bitcast %"class.adept::Stack"** %tmp to %"class.adept::internal::StackStorageOrig"**
  %tmp3 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp2, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %tmp3, i32 1)
  %tmp4 = bitcast %"class.adept::Active"* %arg1 to %"struct.adept::Expression.35"*
  %tmp5 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp6 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp5, align 8, !tbaa !18
  %tmp7 = tail call fast double @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.35"* nonnull %tmp4, %"class.adept::Stack"* dereferenceable(152) %tmp6)
  %tmp8 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  store double %tmp7, double* %tmp8, align 8, !tbaa !71
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = bitcast %"class.adept::Stack"** %tmp9 to %"class.adept::internal::StackStorageOrig"**
  %tmp11 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp10, align 8, !tbaa !18
  %tmp12 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp11, i32* nonnull dereferenceable(4) %tmp12)
  ret %"class.adept::Active"* %arg
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.35"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector", align 1
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = getelementptr inbounds %"class.adept::internal::ScratchVector", %"class.adept::internal::ScratchVector"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi0EdEC2Ev(%"class.adept::internal::ScratchVector"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* %arg)
  %tmp6 = call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector"* nonnull dereferenceable(1) %tmp)
  %tmp7 = call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector"* nonnull dereferenceable(1) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.35"* %arg to %"class.adept::Active"*
  ret %"class.adept::Active"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi0ELi0ELi0EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector"* dereferenceable(1) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi0ELi0ELi0EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector"* dereferenceable(1) %arg3) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  store double 1.000000e+00, double* %tmp, align 8, !tbaa !31
  %tmp6 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  store %"class.adept::Active"* %tmp5, %"class.adept::Active"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.38"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.39"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.39"* %arg to %"struct.adept::internal::BinaryOperation.38"*
  ret %"struct.adept::internal::BinaryOperation.38"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE(%"struct.adept::internal::BinaryOperation"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.39"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.38"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.39"* nonnull %arg2)
  %tmp6 = bitcast %"struct.adept::internal::BinaryOperation.38"* %tmp4 to i8*
  %tmp7 = bitcast %"struct.adept::internal::BinaryOperation.38"* %tmp5 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp6, i8* nonnull align 8 %tmp7, i64 16, i1 false)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi3EEEvv(%"class.adept::internal::StackStorageOrig"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.37"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector.76", align 8
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = bitcast %"class.adept::internal::ScratchVector.76"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi3EdEC2Ev(%"class.adept::internal::ScratchVector.76"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(24) %"struct.adept::internal::BinaryOperation"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.37"* %arg)
  %tmp6 = call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi0ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %tmp)
  %tmp7 = call dereferenceable(24) %"struct.adept::internal::BinaryOperation"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.37"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi0ELi0ELi3EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13ScratchVectorILi3EdEC2Ev(%"class.adept::internal::ScratchVector.76"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(24) %"struct.adept::internal::BinaryOperation"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_6DivideENS2_IdS4_NS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.37"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.37"* %arg to %"struct.adept::internal::BinaryOperation"*
  ret %"struct.adept::internal::BinaryOperation"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi0ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE27my_value_at_location_store_ILi2ELi0ELi0ELi0ELi3EEENS0_9enable_ifIXeqT_Li2EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi0ELi0ELi3EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 0
  %tmp4 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !125
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE10calc_left_ILi0ELi0ELi0ELi3ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp4, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg3)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE11calc_right_ILi0ELi0ELi0ELi3ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.38"* nonnull dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE27my_value_at_location_store_ILi2ELi0ELi0ELi0ELi3EEENS0_9enable_ifIXeqT_Li2EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation"* %arg to %"struct.adept::internal::Divide"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !125
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 1
  %tmp11 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.38"* nonnull %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = tail call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg2, i32 1)
  %tmp13 = call fast double @_ZNK5adept8internal6Divide15operation_storeIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_Rd(%"struct.adept::internal::Divide"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3, double* nonnull dereferenceable(8) %tmp12)
  %tmp14 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg2, i32 0)
  store double %tmp13, double* %tmp14, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal6Divide15operation_storeIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_Rd(%"struct.adept::internal::Divide"* %arg, double* dereferenceable(8) %arg1, double* dereferenceable(8) %arg2, double* dereferenceable(8) %arg3) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load double, double* %arg2, align 8, !tbaa !31
  %tmp4 = fdiv fast double 1.000000e+00, %tmp
  store double %tmp4, double* %arg3, align 8, !tbaa !31
  %tmp5 = load double, double* %arg1, align 8, !tbaa !31
  %tmp6 = fmul fast double %tmp5, %tmp4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi2ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi3EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.76", %"class.adept::internal::ScratchVector.76"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi3EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.38"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !128
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 1
  %tmp11 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp10, align 8, !tbaa !129
  %tmp12 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp11, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg2)
  store double %tmp12, double* %tmp3, align 8, !tbaa !31
  %tmp13 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp14 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg2, i32 2)
  store double %tmp13, double* %tmp14, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %arg, double* dereferenceable(8) %arg1, double* dereferenceable(8) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = load double, double* %arg2, align 8, !tbaa !31
  %tmp4 = fmul fast double %tmp3, %tmp
  ret double %tmp4
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE10calc_left_ILi0ELi0ELi0ELi3ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation"* %arg to %"struct.adept::internal::Divide"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal6Divide9calc_leftILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Divide"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"struct.adept::internal::BinaryOperation.38"* nonnull dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEE11calc_right_ILi0ELi0ELi0ELi3ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.38"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation"* %arg to %"struct.adept::internal::Divide"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation", %"struct.adept::internal::BinaryOperation"* %arg, i64 0, i32 0
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 8, !tbaa !125
  tail call void @_ZNK5adept8internal6Divide10calc_rightILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Divide"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp6, %"struct.adept::internal::BinaryOperation.38"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal6Divide9calc_leftILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Divide"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"struct.adept::internal::BinaryOperation.38"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg5, i32 1)
  tail call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.76", %"class.adept::internal::ScratchVector.76"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal6Divide10calc_rightILi0ELi0ELi0ELi3ENS_6ActiveIdEENS0_15BinaryOperationIdS4_NS0_8MultiplyES4_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Divide"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"struct.adept::internal::BinaryOperation.38"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg5, i32 0)
  %tmp6 = load double, double* %tmp, align 8, !tbaa !31
  %tmp7 = tail call dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi3EdEixEi(%"class.adept::internal::ScratchVector.76"* nonnull %arg5, i32 1)
  %tmp8 = load double, double* %tmp7, align 8, !tbaa !31
  %tmp9 = fmul fast double %tmp6, %tmp8
  %tmp10 = fsub fast double -0.000000e+00, %tmp9
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.38"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg5, double %tmp10)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi2ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !128
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg3, double %arg4)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 1
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !129
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg3, double %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !129
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi2ELi0ELi3ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.38"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.38", %"struct.adept::internal::BinaryOperation.38"* %arg, i64 0, i32 0
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !128
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call fast double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4)
  %tmp8 = fmul fast double %tmp7, %arg5
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi3ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi3ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi2ELi0ELi3ENS_6ActiveIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* dereferenceable(24) %arg4, double %arg5) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call fast double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi3ELi0ELi3EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4)
  %tmp8 = fmul fast double %tmp7, %arg5
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi3ELi0ELi3EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.76"* nonnull dereferenceable(24) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  store %"class.adept::ActiveReference"* %tmp3, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp5, %"class.adept::ActiveReference"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.42"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.43"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.43"* %arg to %"struct.adept::internal::BinaryOperation.42"*
  ret %"struct.adept::internal::BinaryOperation.42"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"struct.adept::Expression.43"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 1
  %tmp3 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.42"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EEE4castEv(%"struct.adept::Expression.43"* nonnull %arg1)
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.42"* %tmp to i8*
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.42"* %tmp3 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp4, i8* nonnull align 8 %tmp5, i64 16, i1 false)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 2
  %tmp7 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp7, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !18
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.41"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector.77", align 8
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = bitcast %"class.adept::internal::ScratchVector.77"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi2EdEC2Ev(%"class.adept::internal::ScratchVector.77"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(32) %"struct.adept::internal::BinaryOperation.40"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.41"* %arg)
  %tmp6 = call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E24value_at_location_store_ILi0ELi0ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %tmp)
  %tmp7 = call dereferenceable(32) %"struct.adept::internal::BinaryOperation.40"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.41"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E14calc_gradient_ILi0ELi0ELi0ELi2EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13ScratchVectorILi2EdEC2Ev(%"class.adept::internal::ScratchVector.77"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(32) %"struct.adept::internal::BinaryOperation.40"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_8MultiplyES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.41"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.41"* %arg to %"struct.adept::internal::BinaryOperation.40"*
  ret %"struct.adept::internal::BinaryOperation.40"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E24value_at_location_store_ILi0ELi0ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E14calc_gradient_ILi0ELi0ELi0ELi2EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E10calc_left_ILi0ELi0ELi0ELi2ES5_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.42"* nonnull dereferenceable(16) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 2
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp4, align 8, !tbaa !130
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E11calc_right_ILi0ELi0ELi0ELi2ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.40"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 1
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.42"* nonnull %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 2
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8, !tbaa !130
  %tmp11 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp13 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi2EdEixEi(%"class.adept::internal::ScratchVector.77"* nonnull %arg2, i32 0)
  store double %tmp12, double* %tmp13, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E24value_at_location_store_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi2EdEixEi(%"class.adept::internal::ScratchVector.77"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.77", %"class.adept::internal::ScratchVector.77"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.42"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !133
  %tmp8 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 1
  %tmp11 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp10, align 8, !tbaa !134
  %tmp12 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp11, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  store double %tmp12, double* %tmp3, align 8, !tbaa !31
  %tmp13 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp14 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi2EdEixEi(%"class.adept::internal::ScratchVector.77"* nonnull %arg2, i32 1)
  store double %tmp13, double* %tmp14, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E10calc_left_ILi0ELi0ELi0ELi2ES5_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.42"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 2
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !130
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.42"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_E11calc_right_ILi0ELi0ELi0ELi2ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.40"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.40", %"struct.adept::internal::BinaryOperation.40"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.42"* nonnull dereferenceable(16) %tmp, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"struct.adept::internal::BinaryOperation.42"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi1ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.42"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E14calc_gradient_ILi0ELi1ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !133
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg3, double %arg4)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 1
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !134
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E10calc_left_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !134
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E11calc_right_ILi0ELi1ELi0ELi2ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.42", %"struct.adept::internal::BinaryOperation.42"* %arg, i64 0, i32 0
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !133
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::ActiveReference"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call fast double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  %tmp8 = fmul fast double %tmp7, %arg5
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi2ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi2ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi2ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::ActiveReference"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call fast double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi2ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  %tmp8 = fmul fast double %tmp7, %arg5
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi2ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi0ELi0ELi2ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"struct.adept::internal::BinaryOperation.42"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E13value_stored_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.42"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4)
  store double %tmp6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi2ELi0ELi2EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E13value_stored_ILi0ELi1ELi0ELi2EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E16my_value_stored_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* nonnull dereferenceable(16) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_E16my_value_stored_ILi1ELi0ELi1ELi0ELi2EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.42"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.77"* dereferenceable(16) %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi2EdEixEi(%"class.adept::internal::ScratchVector.77"* nonnull %arg2, i32 1)
  %tmp3 = load double, double* %tmp, align 8, !tbaa !31
  ret double %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi2EdEixEi(%"class.adept::internal::ScratchVector.77"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.77", %"class.adept::internal::ScratchVector.77"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_EC2ERKNS_10ExpressionIdS3_EES9_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"struct.adept::Expression.36"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg1)
  store %"class.adept::ActiveReference"* %tmp3, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp5, %"class.adept::ActiveReference"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.60"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EEE4castEv(%"struct.adept::Expression.61"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.61"* %arg to %"struct.adept::internal::BinaryOperation.60"*
  ret %"struct.adept::internal::BinaryOperation.60"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EC2ERKNS_10ExpressionIdS5_EERKNS7_IdS3_EE(%"struct.adept::internal::BinaryOperation.58"* %arg, %"struct.adept::Expression.61"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 1
  %tmp3 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.60"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS1_3AddES4_EEE4castEv(%"struct.adept::Expression.61"* nonnull %arg1)
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp to i8*
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.60"* %tmp3 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp4, i8* nonnull align 8 %tmp5, i64 16, i1 false)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 2
  %tmp7 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp7, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(32) %"struct.adept::internal::BinaryOperation.58"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.59"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.59"* %arg to %"struct.adept::internal::BinaryOperation.58"*
  ret %"struct.adept::internal::BinaryOperation.58"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EC2ERKNS_10ExpressionIdS6_EERKNS8_IdS3_EE(%"struct.adept::internal::BinaryOperation.56"* %arg, %"struct.adept::Expression.59"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(32) %"struct.adept::internal::BinaryOperation.58"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EEE4castEv(%"struct.adept::Expression.59"* nonnull %arg1)
  %tmp3 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 1, i32 0, i64 0
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %tmp, i64 0, i32 0, i64 0
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 32, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 2
  %tmp6 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp6, %"class.adept::ActiveReference"** %tmp5, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEEC2EiRKNS_10ExpressionIdS4_EE(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, i32 %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal6PacketIiEC2Ei(%"struct.adept::internal::Packet.63"* %tmp, i32 %arg1)
  %tmp3 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 1
  %tmp4 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp4, %"class.adept::ActiveReference"** %tmp3, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6PacketIiEC2Ei(%"struct.adept::internal::Packet.63"* %arg, i32 %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet.63", %"struct.adept::internal::Packet.63"* %arg, i64 0, i32 0
  store i32 %arg1, i32* %tmp, align 4, !tbaa !135
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(48) %"struct.adept::internal::BinaryOperation.56"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EEE4castEv(%"struct.adept::Expression.57"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.57"* %arg to %"struct.adept::internal::BinaryOperation.56"*
  ret %"struct.adept::internal::BinaryOperation.56"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOpScalarLeft"* @_ZNK5adept10ExpressionIdNS_8internal18BinaryOpScalarLeftIdiNS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.62"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.62"* %arg to %"struct.adept::internal::BinaryOpScalarLeft"*
  ret %"struct.adept::internal::BinaryOpScalarLeft"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEEC2ERKNS_10ExpressionIdS7_EERKNSD_IdSB_EE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"struct.adept::Expression.57"* dereferenceable(1) %arg1, %"struct.adept::Expression.62"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(48) %"struct.adept::internal::BinaryOperation.56"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EEE4castEv(%"struct.adept::Expression.57"* nonnull %arg1)
  %tmp3 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 0, i32 0, i64 0
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %tmp, i64 0, i32 0, i64 0
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 48, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOpScalarLeft"* @_ZNK5adept10ExpressionIdNS_8internal18BinaryOpScalarLeftIdiNS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.62"* nonnull %arg2)
  store %"struct.adept::internal::BinaryOpScalarLeft"* %tmp6, %"struct.adept::internal::BinaryOpScalarLeft"** %tmp5, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(56) %"struct.adept::internal::BinaryOperation.54"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.55"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.55"* %arg to %"struct.adept::internal::BinaryOperation.54"*
  ret %"struct.adept::internal::BinaryOperation.54"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEC2ERKNS_10ExpressionIdS3_EERKNSG_IdSE_EE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.55"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 8, !tbaa !18
  %tmp4 = tail call dereferenceable(56) %"struct.adept::internal::BinaryOperation.54"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES4_EES5_S4_EES5_S4_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiNS1_8MultiplyES4_EEEEE4castEv(%"struct.adept::Expression.55"* nonnull %arg2)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 1, i32 0, i32 0, i64 0
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %tmp4, i64 0, i32 0, i32 0, i64 0
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp5, i8* nonnull align 8 %tmp6, i64 56, i1 false)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(64) %"struct.adept::internal::BinaryOperation.52"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv(%"struct.adept::Expression.53"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.53"* %arg to %"struct.adept::internal::BinaryOperation.52"*
  ret %"struct.adept::internal::BinaryOperation.52"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EC2ERKNS_10ExpressionIdSF_EERKNSH_IdS3_EE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"struct.adept::Expression.53"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(64) %"struct.adept::internal::BinaryOperation.52"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv(%"struct.adept::Expression.53"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.50"* %arg to i8*
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 64, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  store %"class.adept::Active"* %tmp6, %"class.adept::Active"** %tmp5, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(72) %"struct.adept::internal::BinaryOperation.50"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EEE4castEv(%"struct.adept::Expression.51"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.51"* %arg to %"struct.adept::internal::BinaryOperation.50"*
  ret %"struct.adept::internal::BinaryOperation.50"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EC2ERKNS_10ExpressionIdSG_EERKNSI_IdS3_EE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"struct.adept::Expression.51"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 1
  %tmp3 = tail call dereferenceable(72) %"struct.adept::internal::BinaryOperation.50"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EEE4castEv(%"struct.adept::Expression.51"* nonnull %arg1)
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.50"* %tmp to i8*
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.50"* %tmp3 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp4, i8* nonnull align 8 %tmp5, i64 72, i1 false)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 2
  %tmp7 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  store %"class.adept::Active"* %tmp7, %"class.adept::Active"** %tmp6, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEC2ERKNS_10ExpressionIdS3_EEi(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, i32 %arg2) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal6PacketIiEC2Ei(%"struct.adept::internal::Packet.63"* nonnull %tmp4, i32 %arg2)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOpScalarRight"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEEE4castEv(%"struct.adept::Expression.66"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.66"* %arg to %"struct.adept::internal::BinaryOpScalarRight"*
  ret %"struct.adept::internal::BinaryOpScalarRight"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS6_EERKNSB_IdS9_EE(%"struct.adept::internal::BinaryOperation.64"* %arg, %"struct.adept::Expression.66"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOpScalarRight"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEEE4castEv(%"struct.adept::Expression.66"* nonnull %arg1)
  store %"struct.adept::internal::BinaryOpScalarRight"* %tmp3, %"struct.adept::internal::BinaryOpScalarRight"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp5, %"class.adept::ActiveReference"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(88) %"struct.adept::internal::BinaryOperation.48"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EEE4castEv(%"struct.adept::Expression.49"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.49"* %arg to %"struct.adept::internal::BinaryOperation.48"*
  ret %"struct.adept::internal::BinaryOperation.48"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.64"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.65"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.65"* %arg to %"struct.adept::internal::BinaryOperation.64"*
  ret %"struct.adept::internal::BinaryOperation.64"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEC2ERKNS_10ExpressionIdSH_EERKNSM_IdSK_EE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"struct.adept::Expression.49"* dereferenceable(1) %arg1, %"struct.adept::Expression.65"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(88) %"struct.adept::internal::BinaryOperation.48"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EEE4castEv(%"struct.adept::Expression.49"* nonnull %arg1)
  %tmp3 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 0, i32 0, i64 0
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %tmp, i64 0, i32 0, i64 0
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 88, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.64"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_3AddEiEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.65"* nonnull %arg2)
  %tmp7 = bitcast %"struct.adept::internal::BinaryOperation.64"* %tmp5 to i8*
  %tmp8 = bitcast %"struct.adept::internal::BinaryOperation.64"* %tmp6 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp7, i8* nonnull align 8 %tmp8, i64 16, i1 false)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local zeroext i1 @_ZN5adeptleINS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEdEENS1_9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINSE_4typeESE_EERKSD_(%"struct.adept::Expression.78"* dereferenceable(1) %arg, double* dereferenceable(8) %arg1) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call fast double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE12scalar_valueEv(%"struct.adept::Expression.78"* nonnull %arg)
  %tmp2 = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = fcmp fast ole double %tmp, %tmp2
  ret i1 %tmp3
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local void @_ZN5adeptplINS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EES9_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS2_INS1_7promoteINSB_4typeENSC_4typeEE4typeESB_NS1_3AddESC_EEE4typeERKNS_10ExpressionISE_SB_EERKNSM_ISF_SC_EE(%"struct.adept::internal::BinaryOperation.79"* noalias sret %arg, %"struct.adept::Expression.81"* dereferenceable(1) %arg1, %"struct.adept::Expression.81"* dereferenceable(1) %arg2) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.80"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv(%"struct.adept::Expression.81"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp to %"struct.adept::Expression.81"*
  %tmp4 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.80"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv(%"struct.adept::Expression.81"* nonnull %arg2)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp4 to %"struct.adept::Expression.81"*
  tail call void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_EC2ERKNS_10ExpressionIdS8_EESE_(%"struct.adept::internal::BinaryOperation.79"* %arg, %"struct.adept::Expression.81"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.81"* nonnull dereferenceable(1) %tmp5)
  ret void
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } @_ZN5adeptmlINS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEES6_EENS1_9enable_ifIXsr8internal15rank_compatibleIXsrT_4rankEXsrT0_4rankEEE5valueENS1_15BinaryOperationINS1_7promoteINS8_4typeENS9_4typeEE4typeES8_NS1_8MultiplyES9_EEE4typeERKNS_10ExpressionISC_S8_EERKNSK_ISD_S9_EE(%"struct.adept::Expression.83"* dereferenceable(1) %arg, %"struct.adept::Expression.83"* dereferenceable(1) %arg1) local_unnamed_addr #21 comdat {
bb:
  %tmp = alloca %"struct.adept::internal::BinaryOperation.80", align 8
  %tmp2 = tail call dereferenceable(32) %"struct.adept::internal::BinaryOpScalarRight.82"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv(%"struct.adept::Expression.83"* nonnull %arg)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp2 to %"struct.adept::Expression.83"*
  %tmp4 = tail call dereferenceable(32) %"struct.adept::internal::BinaryOpScalarRight.82"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv(%"struct.adept::Expression.83"* nonnull %arg1)
  %tmp5 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp4 to %"struct.adept::Expression.83"*
  call void @_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EC2ERKNS_10ExpressionIdS6_EESC_(%"struct.adept::internal::BinaryOperation.80"* nonnull %tmp, %"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp3, %"struct.adept::Expression.83"* nonnull dereferenceable(1) %tmp5)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp, i64 0, i32 0
  %tmp7 = load %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp6, align 8
  %tmp8 = insertvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } undef, %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp7, 0
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %tmp, i64 0, i32 1
  %tmp10 = load %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp9, align 8
  %tmp11 = insertvalue { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp8, %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp10, 1
  ret { %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"* } %tmp11
}

; Function Attrs: inlinehint norecurse uwtable
define linkonce_odr dso_local void @_ZN5adeptmiINS_6ActiveIdEEdEENS_8internal9enable_ifIXsr8internal17is_not_expressionIT0_EE5valueENS3_19BinaryOpScalarRightINS3_7promoteINT_4typeES5_E4typeES8_NS3_8SubtractES5_EEE4typeERKNS_10ExpressionIS9_S8_EERKS5_(%"struct.adept::internal::BinaryOpScalarRight.82"* noalias sret %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, double* dereferenceable(8) %arg2) local_unnamed_addr #21 comdat {
bb:
  %tmp = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  %tmp3 = bitcast %"class.adept::Active"* %tmp to %"struct.adept::Expression.35"*
  %tmp4 = load double, double* %arg2, align 8, !tbaa !31
  tail call void @_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEC2ERKNS_10ExpressionIdS3_EEd(%"struct.adept::internal::BinaryOpScalarRight.82"* %arg, %"struct.adept::Expression.35"* nonnull dereferenceable(1) %tmp3, double %tmp4)
  ret void
}

; Function Attrs: inlinehint uwtable
define linkonce_odr dso_local zeroext i1 @_ZN5adeptgeINS_6ActiveIdEEdEENS_8internal9enable_ifIXaasr8internal17is_not_expressionIT0_EE5valueeqsrT_4rankLi0EEbE4typeERKNS_10ExpressionINS6_4typeES6_EERKS5_(%"struct.adept::Expression.35"* dereferenceable(1) %arg, double* dereferenceable(8) %arg1) local_unnamed_addr #10 comdat {
bb:
  %tmp = tail call fast double @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE12scalar_valueEv(%"struct.adept::Expression.35"* nonnull %arg)
  %tmp2 = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = fcmp fast oge double %tmp, %tmp2
  ret i1 %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept6ActiveIdEC2IiEERKT_PNS_8internal9enable_ifIXsr17is_not_expressionIS3_EE5valueEvE4typeE(%"class.adept::Active"* %arg, i32* dereferenceable(4) %arg1, i8* %arg2) unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp4 = sitofp i32 %tmp3 to double
  store double %tmp4, double* %tmp, align 8, !tbaa !71
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  %tmp6 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp7 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp6, align 8, !tbaa !18
  %tmp8 = tail call i32 @_ZN5adept5Stack17register_gradientEv(%"class.adept::Stack"* %tmp7)
  store i32 %tmp8, i32* %tmp5, align 8, !tbaa !69
  %tmp9 = tail call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp10 = bitcast %"class.adept::Stack"** %tmp9 to %"class.adept::internal::StackStorageOrig"**
  %tmp11 = load %"class.adept::internal::StackStorageOrig"*, %"class.adept::internal::StackStorageOrig"** %tmp10, align 8, !tbaa !18
  tail call void @_ZN5adept8internal16StackStorageOrig8push_lhsERKi(%"class.adept::internal::StackStorageOrig"* %tmp11, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE12scalar_valueEv(%"struct.adept::Expression.78"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp1 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp)
  %tmp2 = call dereferenceable(32) %"struct.adept::internal::BinaryOperation.79"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE4castEv(%"struct.adept::Expression.78"* %arg)
  %tmp3 = call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOperation.79"* nonnull %tmp2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  ret double %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(32) %"struct.adept::internal::BinaryOperation.79"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EENS1_3AddES9_EEE4castEv(%"struct.adept::Expression.78"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.78"* %arg to %"struct.adept::internal::BinaryOperation.79"*
  ret %"struct.adept::internal::BinaryOperation.79"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOperation.79"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp2 = alloca double, align 8
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.79"* %arg to %"struct.adept::internal::Add"*
  %tmp4 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.79", %"struct.adept::internal::BinaryOperation.79"* %arg, i64 0, i32 0
  %tmp6 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOperation.80"* %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp6, double* %tmp, align 8, !tbaa !31
  %tmp7 = bitcast double* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp7) #4
  %tmp8 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.79", %"struct.adept::internal::BinaryOperation.79"* %arg, i64 0, i32 1
  %tmp9 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOperation.80"* nonnull %tmp8, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp9, double* %tmp2, align 8, !tbaa !31
  %tmp10 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp3, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp2)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp7) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp4) #4
  ret double %tmp10
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %arg, double* dereferenceable(8) %arg1, double* dereferenceable(8) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = load double, double* %arg2, align 8, !tbaa !31
  %tmp4 = fadd fast double %tmp3, %tmp
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_E18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOperation.80"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp2 = alloca double, align 8
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.80"* %arg to %"struct.adept::internal::Multiply"*
  %tmp4 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %arg, i64 0, i32 0
  %tmp6 = load %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp5, align 8, !tbaa !137
  %tmp7 = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOpScalarRight.82"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %arg, i64 0, i32 1
  %tmp10 = load %"struct.adept::internal::BinaryOpScalarRight.82"*, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp9, align 8, !tbaa !139
  %tmp11 = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOpScalarRight.82"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp11, double* %tmp2, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp3, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp2)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp4) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"struct.adept::internal::BinaryOpScalarRight.82"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp2 = alloca double, align 8
  %tmp3 = bitcast %"struct.adept::internal::BinaryOpScalarRight.82"* %arg to %"struct.adept::internal::Subtract"*
  %tmp4 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp4) #4
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight.82", %"struct.adept::internal::BinaryOpScalarRight.82"* %arg, i64 0, i32 0
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 16, !tbaa !140
  %tmp7 = tail call fast double @_ZNK5adept6ActiveIdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"class.adept::Active"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp2 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight.82", %"struct.adept::internal::BinaryOpScalarRight.82"* %arg, i64 0, i32 1
  %tmp10 = tail call fast double @_ZNK5adept8internal6PacketIdE5valueEv(%"struct.adept::internal::Packet"* nonnull %tmp9)
  store double %tmp10, double* %tmp2, align 8, !tbaa !31
  %tmp11 = call fast double @_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Subtract"* %tmp3, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp2)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp4) #4
  ret double %tmp11
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Subtract"* %arg, double* dereferenceable(8) %arg1, double* dereferenceable(8) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = load double, double* %arg2, align 8, !tbaa !31
  %tmp4 = fsub fast double %tmp, %tmp3
  ret double %tmp4
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp2 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp2
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal6PacketIdE5valueEv(%"struct.adept::internal::Packet"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet", %"struct.adept::internal::Packet"* %arg, i64 0, i32 0, i32 0, i64 0
  %tmp1 = load double, double* %tmp, align 16, !tbaa !53
  ret double %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.80"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv(%"struct.adept::Expression.81"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.81"* %arg to %"struct.adept::internal::BinaryOperation.80"*
  ret %"struct.adept::internal::BinaryOperation.80"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EENS0_3AddES8_EC2ERKNS_10ExpressionIdS8_EESE_(%"struct.adept::internal::BinaryOperation.79"* %arg, %"struct.adept::Expression.81"* dereferenceable(1) %arg1, %"struct.adept::Expression.81"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.80"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv(%"struct.adept::Expression.81"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.79"* %arg to i8*
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 16, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.79", %"struct.adept::internal::BinaryOperation.79"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.80"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS1_19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEENS1_8MultiplyES7_EEE4castEv(%"struct.adept::Expression.81"* nonnull %arg2)
  %tmp7 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp5 to i8*
  %tmp8 = bitcast %"struct.adept::internal::BinaryOperation.80"* %tmp6 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp7, i8* nonnull align 8 %tmp8, i64 16, i1 false)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(32) %"struct.adept::internal::BinaryOpScalarRight.82"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv(%"struct.adept::Expression.83"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.83"* %arg to %"struct.adept::internal::BinaryOpScalarRight.82"*
  ret %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EC2ERKNS_10ExpressionIdS6_EESC_(%"struct.adept::internal::BinaryOperation.80"* %arg, %"struct.adept::Expression.83"* dereferenceable(1) %arg1, %"struct.adept::Expression.83"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(32) %"struct.adept::internal::BinaryOpScalarRight.82"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv(%"struct.adept::Expression.83"* nonnull %arg1)
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp3, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.80", %"struct.adept::internal::BinaryOperation.80"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(32) %"struct.adept::internal::BinaryOpScalarRight.82"* @_ZNK5adept10ExpressionIdNS_8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS1_8SubtractEdEEE4castEv(%"struct.adept::Expression.83"* nonnull %arg2)
  store %"struct.adept::internal::BinaryOpScalarRight.82"* %tmp5, %"struct.adept::internal::BinaryOpScalarRight.82"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEC2ERKNS_10ExpressionIdS3_EEd(%"struct.adept::internal::BinaryOpScalarRight.82"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, double %arg2) unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight.82", %"struct.adept::internal::BinaryOpScalarRight.82"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 16, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight.82", %"struct.adept::internal::BinaryOpScalarRight.82"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal6PacketIdEC2Ed(%"struct.adept::internal::Packet"* nonnull %tmp4, double %arg2)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE12scalar_valueEv(%"struct.adept::Expression.35"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp1 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp1) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp)
  %tmp2 = call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* %arg)
  %tmp3 = call fast double @_ZNK5adept6ActiveIdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"class.adept::Active"* nonnull %tmp2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp1) #4
  ret double %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(104) %"struct.adept::internal::BinaryOperation.46"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEEE4castEv(%"struct.adept::Expression.47"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.47"* %arg to %"struct.adept::internal::BinaryOperation.46"*
  ret %"struct.adept::internal::BinaryOperation.46"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_EC2ERKNS_10ExpressionIdSL_EERKNSN_IdS3_EE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"struct.adept::Expression.47"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(104) %"struct.adept::internal::BinaryOperation.46"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEEE4castEv(%"struct.adept::Expression.47"* nonnull %arg1)
  %tmp3 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 1, i32 0, i32 0, i64 0
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %tmp, i64 0, i32 0, i32 0, i64 0
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 104, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 2
  %tmp6 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  store %"class.adept::Active"* %tmp6, %"class.adept::Active"** %tmp5, align 8, !tbaa !18
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi11EEEvv(%"class.adept::internal::StackStorageOrig"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 11)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.45"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector.84", align 8
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = bitcast %"class.adept::internal::ScratchVector.84"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi5EdEC2Ev(%"class.adept::internal::ScratchVector.84"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(120) %"struct.adept::internal::BinaryOperation.44"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE4castEv(%"struct.adept::Expression.45"* %arg)
  %tmp6 = call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %tmp)
  %tmp7 = call dereferenceable(120) %"struct.adept::internal::BinaryOperation.44"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE4castEv(%"struct.adept::Expression.45"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13ScratchVectorILi5EdEC2Ev(%"class.adept::internal::ScratchVector.84"* %arg) unnamed_addr #6 comdat align 2 {
bb:
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(120) %"struct.adept::internal::BinaryOperation.44"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_S4_EES8_S4_EESC_NS2_IdNS1_19BinaryOpScalarRightIdS4_S8_iEES5_S7_EEEES8_S4_EEE4castEv(%"struct.adept::Expression.45"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.45"* %arg to %"struct.adept::internal::BinaryOperation.44"*
  ret %"struct.adept::internal::BinaryOperation.44"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E10calc_left_ILi0ELi0ELi0ELi5ESL_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* nonnull dereferenceable(104) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 2
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp4, align 8, !tbaa !143
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.44"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 1
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* nonnull %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 2
  %tmp10 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp9, align 8, !tbaa !143
  %tmp11 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.46"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 0
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 1
  %tmp10 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.64"* nonnull %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp10, double* %tmp3, align 8, !tbaa !31
  %tmp11 = call fast double @_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Subtract"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp12 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 0)
  store double %tmp11, double* %tmp12, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.84", %"class.adept::internal::ScratchVector.84"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.48"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 1
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* nonnull %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 2
  %tmp10 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp9, align 8, !tbaa !154
  %tmp11 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.50"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 0
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 1
  %tmp10 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp9, align 8, !tbaa !155
  %tmp11 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE27my_value_at_location_store_ILi1ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.52"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !156
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 1
  %tmp11 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.54"* nonnull %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp13 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 1)
  store double %tmp12, double* %tmp13, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE24value_at_location_store_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE27my_value_at_location_store_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.54"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 0
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.56"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 1
  %tmp10 = load %"struct.adept::internal::BinaryOpScalarLeft"*, %"struct.adept::internal::BinaryOpScalarLeft"** %tmp9, align 8, !tbaa !157
  %tmp11 = tail call fast double @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarLeft"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Subtract"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp13 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 2)
  store double %tmp12, double* %tmp13, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.56"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 1
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.58"* nonnull %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 2
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8, !tbaa !158
  %tmp11 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.58"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 1
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.60"* nonnull %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 2
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8, !tbaa !159
  %tmp11 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E27my_value_at_location_store_ILi0ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.60"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !160
  %tmp8 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 1
  %tmp11 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp10, align 8, !tbaa !161
  %tmp12 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi3ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp11, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp12, double* %tmp3, align 8, !tbaa !31
  %tmp13 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi3ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca i32, align 4
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOpScalarLeft"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast i32* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 0
  %tmp7 = tail call i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* %tmp6)
  store i32 %tmp7, i32* %tmp, align 4, !tbaa !34
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 1
  %tmp10 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp9, align 8, !tbaa !162
  %tmp11 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Multiply9operationIidEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, i32* nonnull dereferenceable(4) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp13 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 3)
  store double %tmp12, double* %tmp13, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal8Multiply9operationIidEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %arg, i32* dereferenceable(4) %arg1, double* dereferenceable(8) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp3 = sitofp i32 %tmp to double
  %tmp4 = load double, double* %arg2, align 8, !tbaa !31
  %tmp5 = fmul fast double %tmp4, %tmp3
  ret double %tmp5
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Packet.63", %"struct.adept::internal::Packet.63"* %arg, i64 0, i32 0
  %tmp1 = load i32, i32* %tmp, align 4, !tbaa !135
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.64"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 0
  %tmp7 = load %"struct.adept::internal::BinaryOpScalarRight"*, %"struct.adept::internal::BinaryOpScalarRight"** %tmp6, align 8, !tbaa !164
  %tmp8 = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 1
  %tmp11 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp10, align 8, !tbaa !165
  %tmp12 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp11, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp12, double* %tmp3, align 8, !tbaa !31
  %tmp13 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp14 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 4)
  store double %tmp13, double* %tmp14, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE27my_value_at_location_store_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE27my_value_at_location_store_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca i32, align 4
  %tmp4 = bitcast %"struct.adept::internal::BinaryOpScalarRight"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !166
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast i32* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 1
  %tmp11 = tail call i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* nonnull %tmp10)
  store i32 %tmp11, i32* %tmp3, align 4, !tbaa !34
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIdiEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal3Add9operationIdiEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %arg, double* dereferenceable(8) %arg1, i32* dereferenceable(4) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = load double, double* %arg1, align 8, !tbaa !31
  %tmp3 = load i32, i32* %arg2, align 4, !tbaa !34
  %tmp4 = sitofp i32 %tmp3 to double
  %tmp5 = fadd fast double %tmp, %tmp4
  ret double %tmp5
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E10calc_left_ILi0ELi0ELi0ELi5ESL_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* dereferenceable(104) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.44"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 2
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 8, !tbaa !143
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* nonnull dereferenceable(104) %arg2, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSP_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.44"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.44"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.44", %"struct.adept::internal::BinaryOperation.44"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* nonnull dereferenceable(104) %tmp5, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* dereferenceable(104) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* dereferenceable(88) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE11calc_right_ILi0ELi0ELi0ELi5ESK_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.64"* nonnull dereferenceable(16) %tmp4, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* dereferenceable(88) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.46"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* nonnull dereferenceable(88) %arg2, %"struct.adept::internal::BinaryOperation.64"* nonnull dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEE11calc_right_ILi0ELi0ELi0ELi5ESK_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSO_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.46"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.64"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.46"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.46", %"struct.adept::internal::BinaryOperation.46"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* dereferenceable(88) %tmp5, %"struct.adept::internal::BinaryOperation.64"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* dereferenceable(88) %arg2, %"struct.adept::internal::BinaryOperation.64"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* nonnull dereferenceable(72) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 2
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp4, align 8, !tbaa !154
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* dereferenceable(72) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.48"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 2
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 8, !tbaa !154
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* nonnull dereferenceable(72) %arg2, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.48"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.48"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.48", %"struct.adept::internal::BinaryOperation.48"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* nonnull dereferenceable(72) %tmp5, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* dereferenceable(72) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 1
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp4, align 8, !tbaa !155
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.50"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 8, !tbaa !155
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* nonnull dereferenceable(64) %arg2, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_E11calc_right_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSJ_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.50"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.50"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.50", %"struct.adept::internal::BinaryOperation.50"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %tmp5, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 0
  %tmp4 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !156
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE10calc_left_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp4, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE11calc_right_ILi0ELi1ELi0ELi5ESE_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.54"* nonnull dereferenceable(56) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE10calc_left_ILi0ELi1ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"struct.adept::internal::BinaryOperation.54"* nonnull dereferenceable(56) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE11calc_right_ILi0ELi1ELi0ELi5ESE_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSI_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.54"* dereferenceable(56) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.52", %"struct.adept::internal::BinaryOperation.52"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !156
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"struct.adept::internal::BinaryOperation.54"* nonnull dereferenceable(56) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"struct.adept::internal::BinaryOperation.54"* dereferenceable(56) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.54"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  store double %tmp6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE16my_value_stored_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE16my_value_stored_ILi1ELi0ELi2ELi0ELi5EEENS0_9enable_ifIXgtT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 2)
  %tmp3 = load double, double* %tmp, align 8, !tbaa !31
  ret double %tmp3
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(8) double* @_ZNK5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* %arg, i32 %arg1) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = sext i32 %arg1 to i64
  %tmp2 = getelementptr inbounds %"class.adept::internal::ScratchVector.84", %"class.adept::internal::ScratchVector.84"* %arg, i64 0, i32 0, i64 %tmp
  ret double* %tmp2
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi1ELi0ELi5ENS_6ActiveIdEENS0_15BinaryOperationIdNS5_IdNS5_IdNS5_IdNS_15ActiveReferenceIdEENS0_3AddES7_EES8_S7_EES8_S7_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS1_S7_EEEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"struct.adept::internal::BinaryOperation.54"* dereferenceable(56) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.54"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE14calc_gradient_ILi0ELi2ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE10calc_left_ILi0ELi2ELi0ELi5ES7_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* dereferenceable(48) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 1
  %tmp6 = load %"struct.adept::internal::BinaryOpScalarLeft"*, %"struct.adept::internal::BinaryOpScalarLeft"** %tmp5, align 8, !tbaa !157
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE11calc_right_ILi0ELi2ELi0ELi5ESB_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarLeft"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi2ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE10calc_left_ILi0ELi2ELi0ELi5ES7_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* dereferenceable(48) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.54"* %arg to %"struct.adept::internal::Subtract"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 1
  %tmp7 = load %"struct.adept::internal::BinaryOpScalarLeft"*, %"struct.adept::internal::BinaryOpScalarLeft"** %tmp6, align 8, !tbaa !157
  tail call void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* nonnull dereferenceable(48) %arg2, %"struct.adept::internal::BinaryOpScalarLeft"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEE11calc_right_ILi0ELi2ELi0ELi5ESB_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSF_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.54"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarLeft"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.54"* %arg to %"struct.adept::internal::Subtract"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.54", %"struct.adept::internal::BinaryOperation.54"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* dereferenceable(48) %tmp6, %"struct.adept::internal::BinaryOpScalarLeft"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* dereferenceable(48) %arg2, %"struct.adept::internal::BinaryOpScalarLeft"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #14 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.56"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double %arg6)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* nonnull dereferenceable(32) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 2
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp5, align 8, !tbaa !158
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* dereferenceable(32) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.56"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 2
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !158
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* nonnull dereferenceable(32) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.56"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.56"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.56", %"struct.adept::internal::BinaryOperation.56"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* nonnull dereferenceable(32) %tmp6, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* dereferenceable(32) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #14 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.58"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double %arg6)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES5_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* nonnull dereferenceable(16) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 2
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp5, align 8, !tbaa !159
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E10calc_left_ILi0ELi3ELi0ELi5ES5_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.58"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 2
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !159
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS9_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.58"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.58"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.58", %"struct.adept::internal::BinaryOperation.58"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* nonnull dereferenceable(16) %tmp6, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #14 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.60"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double %arg6)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !160
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E10calc_left_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 1
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !161
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E10calc_left_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.60"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 1
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !161
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_E11calc_right_ILi0ELi3ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.60"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.60"* %arg to %"struct.adept::internal::Add"*
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.60", %"struct.adept::internal::BinaryOperation.60"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !160
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  store double %arg6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS_15ActiveReferenceIdEES4_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  store double %arg6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS_15ActiveReferenceIdEES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.60"* dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  store double %arg6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi3ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_15ActiveReferenceIdEES1_S5_EES1_S5_EES5_dEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.58"* dereferenceable(32) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  store double %arg6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi2ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES5_EES6_S5_EES6_S5_EENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES5_EEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.56"* dereferenceable(48) %arg2, %"struct.adept::internal::BinaryOpScalarLeft"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = fsub fast double -0.000000e+00, %arg6
  tail call void @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOpScalarLeft"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double %tmp)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi3ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 1
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !162
  tail call void @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi3ELi0ELi5ES4_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi3ELi0ELi5ES4_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOpScalarLeft"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"struct.adept::internal::Scalar", align 4
  %tmp6 = alloca i32, align 4
  %tmp7 = bitcast %"struct.adept::internal::Scalar"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp7) #4
  %tmp8 = bitcast i32* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarLeft", %"struct.adept::internal::BinaryOpScalarLeft"* %arg, i64 0, i32 0
  %tmp10 = tail call i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* %tmp9)
  store i32 %tmp10, i32* %tmp6, align 4, !tbaa !34
  call void @_ZN5adept8internal6ScalarIiEC2ERKi(%"struct.adept::internal::Scalar"* nonnull %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi3ELi0ELi5ENS0_6ScalarIiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::Scalar"* nonnull dereferenceable(4) %tmp, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp7) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi3ELi0ELi5ENS0_6ScalarIiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"struct.adept::internal::Scalar"* dereferenceable(4) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call i32 @_ZNK5adept8internal6ScalarIiE13value_stored_ILi0ELi4ELi0ELi5EEEiRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Scalar"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  %tmp8 = sitofp i32 %tmp7 to double
  %tmp9 = fmul fast double %tmp8, %arg5
  store double %tmp9, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal6ScalarIiEC2ERKi(%"struct.adept::internal::Scalar"* %arg, i32* dereferenceable(4) %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Scalar", %"struct.adept::internal::Scalar"* %arg, i64 0, i32 0
  %tmp2 = load i32, i32* %arg1, align 4, !tbaa !34
  store i32 %tmp2, i32* %tmp, align 4, !tbaa !168
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept8internal6ScalarIiE13value_stored_ILi0ELi4ELi0ELi5EEEiRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Scalar"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::Scalar", %"struct.adept::internal::Scalar"* %arg, i64 0, i32 0
  %tmp3 = load i32, i32* %tmp, align 4, !tbaa !168
  ret i32 %tmp3
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  store double 1.000000e+00, double* %tmp, align 8, !tbaa !31
  %tmp6 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.50"* dereferenceable(72) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #3 comdat align 2 {
bb:
  tail call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_S5_EES9_S5_EENS3_IdNS0_19BinaryOpScalarRightIdS5_S9_iEES6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.48"* dereferenceable(88) %arg2, %"struct.adept::internal::BinaryOperation.64"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.64"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double -1.000000e+00)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 0
  %tmp5 = load %"struct.adept::internal::BinaryOpScalarRight"*, %"struct.adept::internal::BinaryOpScalarRight"** %tmp, align 8, !tbaa !164
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarRight"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 1
  %tmp7 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp6, align 8, !tbaa !165
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES9_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES6_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarRight"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !165
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarRight"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES9_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSD_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOperation.64"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.64", %"struct.adept::internal::BinaryOperation.64"* %arg, i64 0, i32 0
  %tmp6 = load %"struct.adept::internal::BinaryOpScalarRight"*, %"struct.adept::internal::BinaryOpScalarRight"** %tmp, align 8, !tbaa !164
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOpScalarRight"* dereferenceable(16) %tmp6, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"struct.adept::internal::BinaryOpScalarRight"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  %tmp6 = fmul fast double %tmp, %arg5
  tail call void @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOpScalarRight"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %tmp6)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET3_(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !166
  tail call void @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE10calc_left_ILi0ELi5ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3, double %arg4)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 0
  %tmp3 = load double*, double** %tmp, align 8, !tbaa !72
  %tmp4 = load double, double* %tmp3, align 8, !tbaa !31
  ret double %tmp4
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE10calc_left_ILi0ELi5ELi0ELi5ES3_dEENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKS8_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET4_(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"struct.adept::internal::Scalar", align 4
  %tmp6 = alloca i32, align 4
  %tmp7 = bitcast %"struct.adept::internal::BinaryOpScalarRight"* %arg to %"struct.adept::internal::Add"*
  %tmp8 = bitcast %"struct.adept::internal::Scalar"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp8) #4
  %tmp9 = bitcast i32* %tmp6 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 1
  %tmp11 = tail call i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* nonnull %tmp10)
  store i32 %tmp11, i32* %tmp6, align 4, !tbaa !34
  call void @_ZN5adept8internal6ScalarIiEC2ERKi(%"struct.adept::internal::Scalar"* nonnull %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @_ZNK5adept8internal3Add9calc_leftILi0ELi5ELi0ELi5ENS_6ActiveIdEENS0_6ScalarIiEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %tmp7, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"struct.adept::internal::Scalar"* nonnull dereferenceable(4) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double %arg5)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp8) #4
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi5ELi0ELi5ENS_6ActiveIdEENS0_6ScalarIiEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"struct.adept::internal::Scalar"* dereferenceable(4) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5, double %arg6) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  store double %arg6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS_15ActiveReferenceIdEEdEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEET5_(%"class.adept::Stack"* dereferenceable(152) %arg, %"struct.adept::internal::BinaryOpScalarRight"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4, double %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  %tmp7 = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  %tmp8 = fmul fast double %tmp7, %arg5
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3, double* dereferenceable(8) %arg4) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = getelementptr inbounds %"class.adept::ActiveReference", %"class.adept::ActiveReference"* %arg, i64 0, i32 1
  tail call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp, double* nonnull dereferenceable(8) %arg4, i32* nonnull dereferenceable(4) %tmp5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE16my_value_stored_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiE16my_value_stored_ILi0ELi0ELi5ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERKNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOpScalarRight"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca i32, align 4
  %tmp4 = bitcast %"struct.adept::internal::BinaryOpScalarRight"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !166
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE18value_at_location_ILi0ELi0EEEdRKNS_14ExpressionSizeIXT0_EEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast i32* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOpScalarRight", %"struct.adept::internal::BinaryOpScalarRight"* %arg, i64 0, i32 1
  %tmp11 = tail call i32 @_ZNK5adept8internal6PacketIiE5valueEv(%"struct.adept::internal::Packet.63"* nonnull %tmp10)
  store i32 %tmp11, i32* %tmp3, align 4, !tbaa !34
  %tmp12 = call fast double @_ZNK5adept8internal3Add9operationIdiEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS3_IdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES1_S5_EES1_S5_EESC_NS3_IdNS0_19BinaryOpScalarRightIdS5_S1_iEES6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.46"* dereferenceable(104) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp4 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg1, i64 0, i32 0
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  store double 1.000000e+00, double* %tmp, align 8, !tbaa !31
  %tmp6 = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 1
  call void @_ZN5adept8internal16StackStorageOrig8push_rhsERKdRKi(%"class.adept::internal::StackStorageOrig"* nonnull %tmp4, double* nonnull dereferenceable(8) %tmp, i32* nonnull dereferenceable(4) %tmp6)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEEC2ERKNS_10ExpressionIdS3_EERKNS8_IdS6_EE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"struct.adept::Expression.35"* dereferenceable(1) %arg1, %"struct.adept::Expression.36"* dereferenceable(1) %arg2) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 0
  %tmp3 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg1)
  store %"class.adept::Active"* %tmp3, %"class.adept::Active"** %tmp, align 8, !tbaa !18
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 1
  %tmp5 = tail call dereferenceable(16) %"class.adept::ActiveReference"* @_ZNK5adept10ExpressionIdNS_15ActiveReferenceIdEEE4castEv(%"struct.adept::Expression.36"* nonnull %arg2)
  store %"class.adept::ActiveReference"* %tmp5, %"class.adept::ActiveReference"** %tmp4, align 8, !tbaa !18
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(16) %"struct.adept::internal::BinaryOperation.71"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.72"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.72"* %arg to %"struct.adept::internal::BinaryOperation.71"*
  ret %"struct.adept::internal::BinaryOperation.71"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEC2ERKNS_10ExpressionIdSF_EERKNSI_IdSG_EE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"struct.adept::Expression.53"* dereferenceable(1) %arg1, %"struct.adept::Expression.72"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(64) %"struct.adept::internal::BinaryOperation.52"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEEE4castEv(%"struct.adept::Expression.53"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.69"* %arg to i8*
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.52"* %tmp to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 64, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"struct.adept::internal::BinaryOperation.71"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS_6ActiveIdEENS1_8MultiplyENS_15ActiveReferenceIdEEEEE4castEv(%"struct.adept::Expression.72"* nonnull %arg2)
  %tmp7 = bitcast %"struct.adept::internal::BinaryOperation.71"* %tmp5 to i8*
  %tmp8 = bitcast %"struct.adept::internal::BinaryOperation.71"* %tmp6 to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull align 8 %tmp7, i8* nonnull align 8 %tmp8, i64 16, i1 false)
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(80) %"struct.adept::internal::BinaryOperation.69"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEEE4castEv(%"struct.adept::Expression.70"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.70"* %arg to %"struct.adept::internal::BinaryOperation.69"*
  ret %"struct.adept::internal::BinaryOperation.69"* %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_EC2ERKNS_10ExpressionIdSH_EERKNSJ_IdS3_EE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"struct.adept::Expression.70"* dereferenceable(1) %arg1, %"struct.adept::Expression.35"* dereferenceable(1) %arg2) unnamed_addr #3 comdat align 2 {
bb:
  %tmp = tail call dereferenceable(80) %"struct.adept::internal::BinaryOperation.69"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEEE4castEv(%"struct.adept::Expression.70"* nonnull %arg1)
  %tmp3 = bitcast %"struct.adept::internal::BinaryOperation.67"* %arg to i8*
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.69"* %tmp to i8*
  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %tmp3, i8* nonnull align 8 %tmp4, i64 80, i1 false)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 1
  %tmp6 = tail call dereferenceable(16) %"class.adept::Active"* @_ZNK5adept10ExpressionIdNS_6ActiveIdEEE4castEv(%"struct.adept::Expression.35"* nonnull %arg2)
  store %"class.adept::Active"* %tmp6, %"class.adept::Active"** %tmp5, align 8, !tbaa !18
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal16StackStorageOrig18check_space_staticILi9EEEvv(%"class.adept::internal::StackStorageOrig"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZN5adept8internal16StackStorageOrig11check_spaceEi(%"class.adept::internal::StackStorageOrig"* %arg, i32 9)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE25scalar_value_and_gradientERNS_5StackE(%"struct.adept::Expression.68"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca %"class.adept::internal::ScratchVector.84", align 8
  %tmp2 = alloca %"class.adept::ExpressionSize.75", align 1
  %tmp3 = bitcast %"class.adept::internal::ScratchVector.84"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 40, i8* nonnull %tmp3) #4
  call void @_ZN5adept8internal13ScratchVectorILi5EdEC2Ev(%"class.adept::internal::ScratchVector.84"* nonnull %tmp)
  %tmp4 = getelementptr inbounds %"class.adept::ExpressionSize.75", %"class.adept::ExpressionSize.75"* %tmp2, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @_ZN5adept14ExpressionSizeILi0EEC2Ev(%"class.adept::ExpressionSize.75"* nonnull %tmp2)
  %tmp5 = call dereferenceable(88) %"struct.adept::internal::BinaryOperation.67"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE4castEv(%"struct.adept::Expression.68"* %arg)
  %tmp6 = call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* nonnull %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %tmp)
  %tmp7 = call dereferenceable(88) %"struct.adept::internal::BinaryOperation.67"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE4castEv(%"struct.adept::Expression.68"* %arg)
  %tmp8 = call %"class.adept::Stack"** @_ZTWN5adept21_stack_current_threadE()
  %tmp9 = load %"class.adept::Stack"*, %"class.adept::Stack"** %tmp8, align 8, !tbaa !18
  call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* nonnull %tmp7, %"class.adept::Stack"* dereferenceable(152) %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %tmp2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %tmp3) #4
  ret double %tmp6
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local dereferenceable(88) %"struct.adept::internal::BinaryOperation.67"* @_ZNK5adept10ExpressionIdNS_8internal15BinaryOperationIdNS2_IdNS2_IdNS_6ActiveIdEENS1_8MultiplyENS2_IdNS2_IdNS2_IdNS2_IdNS_15ActiveReferenceIdEENS1_3AddES7_EES8_S7_EES8_S7_EENS1_8SubtractENS1_18BinaryOpScalarLeftIdiS5_S7_EEEEEES8_NS2_IdS4_S5_S7_EEEESC_S4_EEE4castEv(%"struct.adept::Expression.68"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::Expression.68"* %arg to %"struct.adept::internal::BinaryOperation.67"*
  ret %"struct.adept::internal::BinaryOperation.67"* %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E24value_at_location_store_ILi0ELi0ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E14calc_gradient_ILi0ELi0ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* dereferenceable(80) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 1
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp4, align 8, !tbaa !170
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E27my_value_at_location_store_ILi1ELi0ELi0ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.67"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 0
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 1
  %tmp10 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp9, align 8, !tbaa !170
  %tmp11 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp10, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp11, double* %tmp3, align 8, !tbaa !31
  %tmp12 = call fast double @_ZNK5adept8internal8Subtract9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Subtract"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp13 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 0)
  store double %tmp12, double* %tmp13, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp12
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE27my_value_at_location_store_ILi0ELi0ELi1ELi0ELi5EEENS0_9enable_ifIXeqT_Li0EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.69"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 0
  %tmp7 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE24value_at_location_store_ILi0ELi1ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp7, double* %tmp, align 8, !tbaa !31
  %tmp8 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 1
  %tmp10 = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* nonnull %tmp9, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp10, double* %tmp3, align 8, !tbaa !31
  %tmp11 = call fast double @_ZNK5adept8internal3Add9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Add"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp8) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp11
}

; Function Attrs: uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE24value_at_location_store_ILi0ELi4ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = tail call fast double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  ret double %tmp
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE27my_value_at_location_store_ILi1ELi0ELi4ELi0ELi5EEENS0_9enable_ifIXeqT_Li1EEdE4typeERKNS_14ExpressionSizeIXT2_EEERNS0_13ScratchVectorIXT3_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp3 = alloca double, align 8
  %tmp4 = bitcast %"struct.adept::internal::BinaryOperation.71"* %arg to %"struct.adept::internal::Multiply"*
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 0
  %tmp7 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp6, align 8, !tbaa !174
  %tmp8 = tail call fast double @_ZNK5adept6ActiveIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %tmp7, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp8, double* %tmp, align 8, !tbaa !31
  %tmp9 = bitcast double* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp9) #4
  %tmp10 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 1
  %tmp11 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp10, align 8, !tbaa !175
  %tmp12 = tail call fast double @_ZNK5adept15ActiveReferenceIdE24value_at_location_store_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* %tmp11, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg2)
  store double %tmp12, double* %tmp3, align 8, !tbaa !31
  %tmp13 = call fast double @_ZNK5adept8internal8Multiply9operationIddEENS0_7promoteIT_T0_E4typeERKS4_RKS5_(%"struct.adept::internal::Multiply"* %tmp4, double* nonnull dereferenceable(8) %tmp, double* nonnull dereferenceable(8) %tmp3)
  %tmp14 = call dereferenceable(8) double* @_ZN5adept8internal13ScratchVectorILi5EdEixEi(%"class.adept::internal::ScratchVector.84"* nonnull %arg2, i32 4)
  store double %tmp13, double* %tmp14, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp9) #4
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret double %tmp13
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E10calc_left_ILi0ELi0ELi0ELi5ESH_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* dereferenceable(80) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.67"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp5, align 8, !tbaa !170
  tail call void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* nonnull dereferenceable(80) %arg2, %"class.adept::Active"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_E11calc_right_ILi0ELi0ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSL_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.67"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.67"* %arg to %"struct.adept::internal::Subtract"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.67", %"struct.adept::internal::BinaryOperation.67"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* dereferenceable(80) %tmp5, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract9calc_leftILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* dereferenceable(80) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %tmp, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp4 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE11calc_right_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.71"* nonnull dereferenceable(16) %tmp4, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE10calc_left_ILi0ELi1ELi0ELi5ESF_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.69"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 1
  tail call void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* nonnull dereferenceable(64) %arg2, %"struct.adept::internal::BinaryOperation.71"* nonnull dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEE11calc_right_ILi0ELi1ELi0ELi5ESG_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSK_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.69"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.71"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = bitcast %"struct.adept::internal::BinaryOperation.69"* %arg to %"struct.adept::internal::Add"*
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.69", %"struct.adept::internal::BinaryOperation.69"* %arg, i64 0, i32 0
  tail call void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %tmp, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %tmp5, %"struct.adept::internal::BinaryOperation.71"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add9calc_leftILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"struct.adept::internal::BinaryOperation.71"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEE14calc_gradient_ILi0ELi1ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.52"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal3Add10calc_rightILi0ELi1ELi0ELi5ENS0_15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEES1_S8_EES1_S8_EES1_S8_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEENS3_IdS5_S6_S8_EEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Add"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.52"* dereferenceable(64) %arg2, %"struct.adept::internal::BinaryOperation.71"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #0 comdat align 2 {
bb:
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE14calc_gradient_ILi0ELi4ELi0ELi5EEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg3) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 0
  %tmp4 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !174
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp4, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  %tmp5 = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 1
  %tmp6 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp5, align 8, !tbaa !175
  tail call void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %tmp6, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg2, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg3)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE10calc_left_ILi0ELi4ELi0ELi5ES3_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 1
  %tmp5 = load %"class.adept::ActiveReference"*, %"class.adept::ActiveReference"** %tmp, align 8, !tbaa !175
  tail call void @_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* nonnull dereferenceable(16) %arg2, %"class.adept::ActiveReference"* dereferenceable(16) %tmp5, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEE11calc_right_ILi0ELi4ELi0ELi5ES6_EENS0_9enable_ifIXsrT3_9is_activeEvE4typeERNS_5StackERKSA_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::BinaryOperation.71"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::BinaryOperation.71", %"struct.adept::internal::BinaryOperation.71"* %arg, i64 0, i32 0
  %tmp5 = load %"class.adept::Active"*, %"class.adept::Active"** %tmp, align 8, !tbaa !174
  tail call void @_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::Active"* dereferenceable(16) %tmp5, %"class.adept::ActiveReference"* nonnull dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  ret void
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply9calc_leftILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = tail call fast double @_ZNK5adept15ActiveReferenceIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  store double %tmp6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg1, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept8internal8Multiply10calc_rightILi0ELi4ELi0ELi5ENS_6ActiveIdEENS_15ActiveReferenceIdEEEEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"class.adept::Stack"* dereferenceable(152) %arg, %"class.adept::Active"* dereferenceable(16) %arg1, %"class.adept::ActiveReference"* dereferenceable(16) %arg2, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg4) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp5 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp5) #4
  %tmp6 = tail call fast double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* nonnull %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4)
  store double %tmp6, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept15ActiveReferenceIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::ActiveReference"* nonnull %arg2, %"class.adept::Stack"* nonnull dereferenceable(152) %arg, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg3, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg4, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp5) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double @_ZNK5adept6ActiveIdE13value_stored_ILi0ELi5ELi0ELi5EEEdRKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEE(%"class.adept::Active"* %arg, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg1, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg2) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Active", %"class.adept::Active"* %arg, i64 0, i32 0
  %tmp3 = load double, double* %tmp, align 8, !tbaa !71
  ret double %tmp3
}

; Function Attrs: nounwind uwtable
define linkonce_odr dso_local void @_ZNK5adept8internal8Subtract10calc_rightILi0ELi0ELi0ELi5ENS0_15BinaryOperationIdNS3_IdNS_6ActiveIdEENS0_8MultiplyENS3_IdNS3_IdNS3_IdNS3_IdNS_15ActiveReferenceIdEENS0_3AddES8_EES9_S8_EES9_S8_EES1_NS0_18BinaryOpScalarLeftIdiS6_S8_EEEEEES9_NS3_IdS5_S6_S8_EEEES5_EEvRNS_5StackERKT3_RKT4_RKNS_14ExpressionSizeIXT1_EEERKNS0_13ScratchVectorIXT2_EdEE(%"struct.adept::internal::Subtract"* %arg, %"class.adept::Stack"* dereferenceable(152) %arg1, %"struct.adept::internal::BinaryOperation.69"* dereferenceable(80) %arg2, %"class.adept::Active"* dereferenceable(16) %arg3, %"class.adept::ExpressionSize.75"* dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* dereferenceable(40) %arg5) local_unnamed_addr #3 comdat align 2 {
bb:
  %tmp = alloca double, align 8
  %tmp6 = bitcast double* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %tmp6) #4
  store double -1.000000e+00, double* %tmp, align 8, !tbaa !31
  call void @_ZNK5adept6ActiveIdE14calc_gradient_ILi0ELi5ELi0ELi5EdEEvRNS_5StackERKNS_14ExpressionSizeIXT1_EEERKNS_8internal13ScratchVectorIXT2_EdEERKT3_(%"class.adept::Active"* nonnull %arg3, %"class.adept::Stack"* nonnull dereferenceable(152) %arg1, %"class.adept::ExpressionSize.75"* nonnull dereferenceable(1) %arg4, %"class.adept::internal::ScratchVector.84"* nonnull dereferenceable(40) %arg5, double* nonnull dereferenceable(8) %tmp)
  call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %tmp6) #4
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb1EEC2Ei(%"struct.adept::internal::GradientIndex.34"* %arg, i32 %arg1) unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::GradientIndex.34", %"struct.adept::internal::GradientIndex.34"* %arg, i64 0, i32 0
  store i32 %arg1, i32* %tmp, align 4, !tbaa !123
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE7resize_ILi1EEENS_8internal9enable_ifIXeqLi1ET_EvE4typeEiiiiiii(%"class.adept::Array.32"* %arg, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6, i32 %arg7) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = alloca [7 x i32], align 16
  %tmp8 = bitcast [7 x i32]* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 28, i8* nonnull %tmp8) #4
  %tmp9 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 0
  store i32 %arg1, i32* %tmp9, align 16, !tbaa !34
  %tmp10 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 1
  store i32 %arg2, i32* %tmp10, align 4, !tbaa !34
  %tmp11 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 2
  store i32 %arg3, i32* %tmp11, align 8, !tbaa !34
  %tmp12 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 3
  store i32 %arg4, i32* %tmp12, align 4, !tbaa !34
  %tmp13 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 4
  store i32 %arg5, i32* %tmp13, align 16, !tbaa !34
  %tmp14 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 5
  store i32 %arg6, i32* %tmp14, align 4, !tbaa !34
  %tmp15 = getelementptr inbounds [7 x i32], [7 x i32]* %tmp, i64 0, i64 6
  store i32 %arg7, i32* %tmp15, align 8, !tbaa !34
  call void @_ZN5adept5ArrayILi1EdLb1EE6resizeEPKib(%"class.adept::Array.32"* %arg, i32* nonnull %tmp9, i1 zeroext false)
  call void @llvm.lifetime.end.p0i8(i64 28, i8* nonnull %tmp8) #4
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE6resizeEPKib(%"class.adept::Array.32"* %arg, i32* %arg1, i1 zeroext %arg2) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp3 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 2
  %tmp5 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !76
  %tmp6 = icmp eq %"class.adept::Storage.14"* %tmp5, null
  br i1 %tmp6, label %bb8, label %bb7

bb7:                                              ; preds = %bb
  tail call void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp5)
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !76
  br label %bb8

bb8:                                              ; preds = %bb7, %bb
  br label %bb9

bb9:                                              ; preds = %bb43, %bb8
  %tmp10 = phi i32 [ 1, %bb43 ], [ 0, %bb8 ]
  %tmp11 = icmp eq i32 %tmp10, 0
  br i1 %tmp11, label %bb12, label %bb46

bb12:                                             ; preds = %bb9
  %tmp13 = load i32, i32* %arg1, align 4, !tbaa !34
  %tmp14 = icmp slt i32 %tmp13, 0
  br i1 %tmp14, label %bb15, label %bb43

bb15:                                             ; preds = %bb12
  %tmp16 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp17 = bitcast i8* %tmp16 to %"class.adept::invalid_dimension"*
  %tmp18 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp18) #4
  %tmp19 = bitcast %"class.std::__cxx11::basic_string"* %tmp3 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp19) #4
  invoke void @_ZN5adept8internal18exception_locationB5cxx11EPKci(%"class.std::__cxx11::basic_string"* nonnull sret %tmp3, i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.100, i64 0, i64 0), i32 1969)
          to label %bb20 unwind label %bb23

bb20:                                             ; preds = %bb15
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(%"class.std::__cxx11::basic_string"* nonnull sret %tmp, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.99, i64 0, i64 0), %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp3)
          to label %bb21 unwind label %bb27

bb21:                                             ; preds = %bb20
  invoke void @_ZN5adept17invalid_dimensionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::invalid_dimension"* %tmp17, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb22 unwind label %bb31

bb22:                                             ; preds = %bb21
  invoke void @__cxa_throw(i8* %tmp16, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept17invalid_dimensionE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb82 unwind label %bb31

bb23:                                             ; preds = %bb15
  %tmp24 = landingpad { i8*, i32 }
          cleanup
  %tmp25 = extractvalue { i8*, i32 } %tmp24, 0
  %tmp26 = extractvalue { i8*, i32 } %tmp24, 1
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp19) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  br label %bb40

bb27:                                             ; preds = %bb20
  %tmp28 = landingpad { i8*, i32 }
          cleanup
  %tmp29 = extractvalue { i8*, i32 } %tmp28, 0
  %tmp30 = extractvalue { i8*, i32 } %tmp28, 1
  br label %bb36

bb31:                                             ; preds = %bb22, %bb21
  %tmp32 = phi i1 [ false, %bb22 ], [ true, %bb21 ]
  %tmp33 = landingpad { i8*, i32 }
          cleanup
  %tmp34 = extractvalue { i8*, i32 } %tmp33, 0
  %tmp35 = extractvalue { i8*, i32 } %tmp33, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb36

bb36:                                             ; preds = %bb31, %bb27
  %tmp37 = phi i8* [ %tmp34, %bb31 ], [ %tmp29, %bb27 ]
  %tmp38 = phi i32 [ %tmp35, %bb31 ], [ %tmp30, %bb27 ]
  %tmp39 = phi i1 [ %tmp32, %bb31 ], [ true, %bb27 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp3) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp19) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp18) #4
  br i1 %tmp39, label %bb40, label %bb77

bb40:                                             ; preds = %bb36, %bb23
  %tmp41 = phi i32 [ %tmp26, %bb23 ], [ %tmp38, %bb36 ]
  %tmp42 = phi i8* [ %tmp25, %bb23 ], [ %tmp37, %bb36 ]
  call void @__cxa_free_exception(i8* %tmp16) #4
  br label %bb77

bb43:                                             ; preds = %bb12
  %tmp44 = icmp eq i32 %tmp13, 0
  br i1 %tmp44, label %bb45, label %bb9

bb45:                                             ; preds = %bb43
  tail call void @_ZN5adept5ArrayILi1EdLb1EE5clearEv(%"class.adept::Array.32"* %arg)
  br label %bb72

bb46:                                             ; preds = %bb9
  %tmp47 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 3
  tail call void @_ZN5adept14ExpressionSizeILi1EE4copyEPKi(%"class.adept::ExpressionSize.27"* nonnull %tmp47, i32* %arg1)
  br i1 %arg2, label %bb48, label %bb49

bb48:                                             ; preds = %bb46
  tail call void @_ZN5adept5ArrayILi1EdLb1EE16pack_contiguous_Ev(%"class.adept::Array.32"* %arg)
  br label %bb50

bb49:                                             ; preds = %bb46
  tail call void @_ZN5adept5ArrayILi1EdLb1EE5pack_Ev(%"class.adept::Array.32"* %arg)
  br label %bb50

bb50:                                             ; preds = %bb49, %bb48
  %tmp51 = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp52 = icmp eq i8 %tmp51, 0
  br i1 %tmp52, label %bb60, label %bb53

bb53:                                             ; preds = %bb50
  %tmp54 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  %tmp55 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp54, i32 0)
  %tmp56 = load i32, i32* %tmp55, align 4, !tbaa !34
  %tmp57 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp47, i32 0)
  %tmp58 = load i32, i32* %tmp57, align 4, !tbaa !34
  %tmp59 = mul nsw i32 %tmp58, %tmp56
  br label %bb62

bb60:                                             ; preds = %bb50
  %tmp61 = tail call i32 @_ZNK5adept5ArrayILi1EdLb1EE4sizeEv(%"class.adept::Array.32"* %arg)
  br label %bb62

bb62:                                             ; preds = %bb60, %bb53
  %tmp63 = phi i32 [ %tmp59, %bb53 ], [ %tmp61, %bb60 ]
  %tmp64 = tail call i8* @_Znwm(i64 24) #28
  %tmp65 = bitcast i8* %tmp64 to %"class.adept::Storage.14"*
  invoke void @_ZN5adept7StorageIdEC2Eib(%"class.adept::Storage.14"* nonnull %tmp65, i32 %tmp63, i1 zeroext true)
          to label %bb66 unwind label %bb73

bb66:                                             ; preds = %bb62
  %tmp67 = bitcast %"class.adept::Storage.14"** %tmp4 to i8**
  store i8* %tmp64, i8** %tmp67, align 8, !tbaa !76
  %tmp68 = tail call double* @_ZN5adept7StorageIdE4dataEv(%"class.adept::Storage.14"* nonnull %tmp65)
  %tmp69 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 1
  store double* %tmp68, double** %tmp69, align 8, !tbaa !67
  %tmp70 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 0
  %tmp71 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp4, align 8, !tbaa !76
  tail call void @_ZN5adept8internal13GradientIndexILb1EE3setIdEEvPKT_PKNS_7StorageIS4_EE(%"struct.adept::internal::GradientIndex.34"* %tmp70, double* %tmp68, %"class.adept::Storage.14"* %tmp71)
  br label %bb72

bb72:                                             ; preds = %bb66, %bb45
  ret void

bb73:                                             ; preds = %bb62
  %tmp74 = landingpad { i8*, i32 }
          cleanup
  %tmp75 = extractvalue { i8*, i32 } %tmp74, 0
  %tmp76 = extractvalue { i8*, i32 } %tmp74, 1
  tail call void @_ZdlPv(i8* nonnull %tmp64) #27
  br label %bb77

bb77:                                             ; preds = %bb73, %bb40, %bb36
  %tmp78 = phi i8* [ %tmp75, %bb73 ], [ %tmp42, %bb40 ], [ %tmp37, %bb36 ]
  %tmp79 = phi i32 [ %tmp76, %bb73 ], [ %tmp41, %bb40 ], [ %tmp38, %bb36 ]
  %tmp80 = insertvalue { i8*, i32 } undef, i8* %tmp78, 0
  %tmp81 = insertvalue { i8*, i32 } %tmp80, i32 %tmp79, 1
  resume { i8*, i32 } %tmp81

bb82:                                             ; preds = %bb22
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE5clearEv(%"class.adept::Array.32"* %arg) local_unnamed_addr #0 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 2
  %tmp1 = load %"class.adept::Storage.14"*, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !76
  %tmp2 = icmp eq %"class.adept::Storage.14"* %tmp1, null
  br i1 %tmp2, label %bb4, label %bb3

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept7StorageIdE11remove_linkEv(%"class.adept::Storage.14"* nonnull %tmp1)
  store %"class.adept::Storage.14"* null, %"class.adept::Storage.14"** %tmp, align 8, !tbaa !76
  br label %bb4

bb4:                                              ; preds = %bb3, %bb
  %tmp5 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 1
  store double* null, double** %tmp5, align 8, !tbaa !67
  %tmp6 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 3
  tail call void @_ZN5adept14ExpressionSizeILi1EE7set_allEi(%"class.adept::ExpressionSize.27"* nonnull %tmp6, i32 0)
  %tmp7 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  tail call void @_ZN5adept14ExpressionSizeILi1EE7set_allEi(%"class.adept::ExpressionSize.27"* nonnull %tmp7, i32 0)
  %tmp8 = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 0
  tail call void @_ZN5adept8internal13GradientIndexILb1EE5clearEv(%"struct.adept::internal::GradientIndex.34"* %tmp8)
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE16pack_contiguous_Ev(%"class.adept::Array.32"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp1 = icmp eq i8 %tmp, 0
  br i1 %tmp1, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb1EE26pack_row_major_contiguous_Ev(%"class.adept::Array.32"* %arg)
  br label %bb4

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb1EE18pack_column_major_Ev(%"class.adept::Array.32"* %arg)
  br label %bb4

bb4:                                              ; preds = %bb3, %bb2
  ret void
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE5pack_Ev(%"class.adept::Array.32"* %arg) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = load i8, i8* @_ZN5adept8internal21array_row_major_orderE, align 1, !tbaa !2, !range !17
  %tmp1 = icmp eq i8 %tmp, 0
  br i1 %tmp1, label %bb3, label %bb2

bb2:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb1EE15pack_row_major_Ev(%"class.adept::Array.32"* %arg)
  br label %bb4

bb3:                                              ; preds = %bb
  tail call void @_ZN5adept5ArrayILi1EdLb1EE18pack_column_major_Ev(%"class.adept::Array.32"* %arg)
  br label %bb4

bb4:                                              ; preds = %bb3, %bb2
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept5ArrayILi1EdLb1EE4sizeEv(%"class.adept::Array.32"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 3
  %tmp1 = tail call dereferenceable(4) i32* @_ZNK5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  %tmp2 = load i32, i32* %tmp1, align 4, !tbaa !34
  ret i32 %tmp2
}

; Function Attrs: norecurse uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb1EE3setIdEEvPKT_PKNS_7StorageIS4_EE(%"struct.adept::internal::GradientIndex.34"* %arg, double* %arg1, %"class.adept::Storage.14"* %arg2) local_unnamed_addr #14 comdat align 2 {
bb:
  %tmp = tail call i32 @_ZNK5adept7StorageIdE14gradient_indexEv(%"class.adept::Storage.14"* %arg2)
  %tmp3 = tail call double* @_ZNK5adept7StorageIdE4dataEv(%"class.adept::Storage.14"* %arg2)
  %tmp4 = ptrtoint double* %arg1 to i64
  %tmp5 = ptrtoint double* %tmp3 to i64
  %tmp6 = sub i64 %tmp4, %tmp5
  %tmp7 = lshr exact i64 %tmp6, 3
  %tmp8 = trunc i64 %tmp7 to i32
  %tmp9 = add i32 %tmp, %tmp8
  %tmp10 = getelementptr inbounds %"struct.adept::internal::GradientIndex.34", %"struct.adept::internal::GradientIndex.34"* %arg, i64 0, i32 0
  store i32 %tmp9, i32* %tmp10, align 4, !tbaa !123
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept8internal13GradientIndexILb1EE5clearEv(%"struct.adept::internal::GradientIndex.34"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"struct.adept::internal::GradientIndex.34", %"struct.adept::internal::GradientIndex.34"* %arg, i64 0, i32 0
  store i32 -9999, i32* %tmp, align 4, !tbaa !123
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE26pack_row_major_contiguous_Ev(%"class.adept::Array.32"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE18pack_column_major_Ev(%"class.adept::Array.32"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept5ArrayILi1EdLb1EE15pack_row_major_Ev(%"class.adept::Array.32"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Array.32", %"class.adept::Array.32"* %arg, i64 0, i32 4
  %tmp1 = tail call dereferenceable(4) i32* @_ZN5adept14ExpressionSizeILi1EEixEi(%"class.adept::ExpressionSize.27"* nonnull %tmp, i32 0)
  store i32 1, i32* %tmp1, align 4, !tbaa !34
  ret void
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local i32 @_ZNK5adept7StorageIdE14gradient_indexEv(%"class.adept::Storage.14"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 3
  %tmp1 = load i32, i32* %tmp, align 8, !tbaa !113
  ret i32 %tmp1
}

; Function Attrs: norecurse nounwind uwtable
define linkonce_odr dso_local double* @_ZNK5adept7StorageIdE4dataEv(%"class.adept::Storage.14"* %arg) local_unnamed_addr #6 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::Storage.14", %"class.adept::Storage.14"* %arg, i64 0, i32 0
  %tmp1 = load double*, double** %tmp, align 8, !tbaa !114
  ret double* %tmp1
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept5Stack13set_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPKS4_(%"class.adept::Stack"* %arg, i32 %arg1, i32 %arg2, double* %arg3) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = alloca %"class.std::allocator", align 1
  %tmp5 = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg)
  br i1 %tmp5, label %bb7, label %bb6

bb6:                                              ; preds = %bb
  tail call void @_ZN5adept5Stack20initialize_gradientsEv(%"class.adept::Stack"* %arg)
  br label %bb7

bb7:                                              ; preds = %bb6, %bb
  %tmp8 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp9 = load i32, i32* %tmp8, align 8, !tbaa !41
  %tmp10 = icmp slt i32 %tmp9, %arg2
  br i1 %tmp10, label %bb18, label %bb11

bb11:                                             ; preds = %bb7
  %tmp12 = icmp sgt i32 %arg2, %arg1
  br i1 %tmp12, label %bb13, label %bb39

bb13:                                             ; preds = %bb11
  %tmp14 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp15 = load double*, double** %tmp14, align 8, !tbaa !19
  %tmp16 = sext i32 %arg1 to i64
  %tmp17 = sub i32 %arg2, %arg1
  br label %bb40

bb18:                                             ; preds = %bb7
  %tmp19 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp20 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp20) #4
  %tmp21 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp4, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp21) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([99 x i8], [99 x i8]* @.str.110, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp4)
          to label %bb22 unwind label %bb25

bb22:                                             ; preds = %bb18
  %tmp23 = bitcast i8* %tmp19 to %"class.adept::gradient_out_of_range"*
  invoke void @_ZN5adept21gradient_out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradient_out_of_range"* %tmp23, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb24 unwind label %bb29

bb24:                                             ; preds = %bb22
  invoke void @__cxa_throw(i8* %tmp19, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21gradient_out_of_rangeE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb55 unwind label %bb29

bb25:                                             ; preds = %bb18
  %tmp26 = landingpad { i8*, i32 }
          cleanup
  %tmp27 = extractvalue { i8*, i32 } %tmp26, 0
  %tmp28 = extractvalue { i8*, i32 } %tmp26, 1
  br label %bb34

bb29:                                             ; preds = %bb24, %bb22
  %tmp30 = phi i1 [ false, %bb24 ], [ true, %bb22 ]
  %tmp31 = landingpad { i8*, i32 }
          cleanup
  %tmp32 = extractvalue { i8*, i32 } %tmp31, 0
  %tmp33 = extractvalue { i8*, i32 } %tmp31, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb34

bb34:                                             ; preds = %bb29, %bb25
  %tmp35 = phi i8* [ %tmp32, %bb29 ], [ %tmp27, %bb25 ]
  %tmp36 = phi i32 [ %tmp33, %bb29 ], [ %tmp28, %bb25 ]
  %tmp37 = phi i1 [ %tmp30, %bb29 ], [ true, %bb25 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp21) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp20) #4
  br i1 %tmp37, label %bb38, label %bb52

bb38:                                             ; preds = %bb34
  call void @__cxa_free_exception(i8* %tmp19) #4
  br label %bb52

bb39:                                             ; preds = %bb40, %bb11
  ret void

bb40:                                             ; preds = %bb40, %bb13
  %tmp41 = phi i64 [ %tmp16, %bb13 ], [ %tmp48, %bb40 ]
  %tmp42 = phi i64 [ 0, %bb13 ], [ %tmp49, %bb40 ]
  %tmp43 = getelementptr inbounds double, double* %arg3, i64 %tmp42
  %tmp44 = bitcast double* %tmp43 to i64*
  %tmp45 = load i64, i64* %tmp44, align 8, !tbaa !31
  %tmp46 = getelementptr inbounds double, double* %tmp15, i64 %tmp41
  %tmp47 = bitcast double* %tmp46 to i64*
  store i64 %tmp45, i64* %tmp47, align 8, !tbaa !31
  %tmp48 = add nsw i64 %tmp41, 1
  %tmp49 = add nuw nsw i64 %tmp42, 1
  %tmp50 = trunc i64 %tmp49 to i32
  %tmp51 = icmp eq i32 %tmp17, %tmp50
  br i1 %tmp51, label %bb39, label %bb40

bb52:                                             ; preds = %bb38, %bb34
  %tmp53 = insertvalue { i8*, i32 } undef, i8* %tmp35, 0
  %tmp54 = insertvalue { i8*, i32 } %tmp53, i32 %tmp36, 1
  resume { i8*, i32 } %tmp54

bb55:                                             ; preds = %bb24
  unreachable
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZN5adept21gradient_out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradient_out_of_range"* %arg, %"class.std::__cxx11::basic_string"* dereferenceable(32) %arg1) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = getelementptr inbounds %"class.adept::gradient_out_of_range", %"class.adept::gradient_out_of_range"* %arg, i64 0, i32 0
  tail call void @_ZN5adept18autodiff_exceptionC2Ev(%"class.adept::autodiff_exception"* %tmp) #4
  %tmp2 = getelementptr inbounds %"class.adept::gradient_out_of_range", %"class.adept::gradient_out_of_range"* %arg, i64 0, i32 0, i32 0, i32 0, i32 0
  store i32 (...)** bitcast (i8** getelementptr inbounds ({ [5 x i8*] }, { [5 x i8*] }* @_ZTVN5adept21gradient_out_of_rangeE, i64 0, inrange i32 0, i64 2) to i32 (...)**), i32 (...)*** %tmp2, align 8, !tbaa !8
  %tmp3 = getelementptr inbounds %"class.adept::gradient_out_of_range", %"class.adept::gradient_out_of_range"* %arg, i64 0, i32 0, i32 0, i32 1
  %tmp4 = invoke dereferenceable(32) %"class.std::__cxx11::basic_string"* @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(%"class.std::__cxx11::basic_string"* nonnull %tmp3, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %arg1)
          to label %bb5 unwind label %bb6

bb5:                                              ; preds = %bb
  ret void

bb6:                                              ; preds = %bb
  %tmp7 = landingpad { i8*, i32 }
          cleanup
  %tmp8 = getelementptr inbounds %"class.adept::gradient_out_of_range", %"class.adept::gradient_out_of_range"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp8) #4
  resume { i8*, i32 } %tmp7
}

; Function Attrs: inlinehint nounwind uwtable
define linkonce_odr dso_local void @_ZN5adept21gradient_out_of_rangeD0Ev(%"class.adept::gradient_out_of_range"* %arg) unnamed_addr #17 comdat align 2 {
bb:
  %tmp = getelementptr inbounds %"class.adept::gradient_out_of_range", %"class.adept::gradient_out_of_range"* %arg, i64 0, i32 0, i32 0
  tail call void @_ZN5adept9exceptionD2Ev(%"class.adept::exception"* %tmp) #4
  %tmp1 = bitcast %"class.adept::gradient_out_of_range"* %arg to i8*
  tail call void @_ZdlPv(i8* %tmp1) #27
  ret void
}

; Function Attrs: uwtable
define linkonce_odr dso_local void @_ZNK5adept5Stack13get_gradientsIdEENS_8internal9enable_ifIXsr8internal17is_floating_pointIT_EE5valueEvE4typeEiiPS4_(%"class.adept::Stack"* %arg, i32 %arg1, i32 %arg2, double* %arg3) local_unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
bb:
  %tmp = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp4 = alloca %"class.std::allocator", align 1
  %tmp5 = alloca %"class.std::__cxx11::basic_string", align 8
  %tmp6 = alloca %"class.std::allocator", align 1
  %tmp7 = tail call zeroext i1 @_ZNK5adept5Stack25gradients_are_initializedEv(%"class.adept::Stack"* %arg)
  br i1 %tmp7, label %bb29, label %bb8

bb8:                                              ; preds = %bb
  %tmp9 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp10 = bitcast %"class.std::__cxx11::basic_string"* %tmp to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp10) #4
  %tmp11 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp4, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp11) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp, i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.27, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp4)
          to label %bb12 unwind label %bb15

bb12:                                             ; preds = %bb8
  %tmp13 = bitcast i8* %tmp9 to %"class.adept::gradients_not_initialized"*
  invoke void @_ZN5adept25gradients_not_initializedC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradients_not_initialized"* %tmp13, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp)
          to label %bb14 unwind label %bb19

bb14:                                             ; preds = %bb12
  invoke void @__cxa_throw(i8* %tmp9, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept25gradients_not_initializedE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb79 unwind label %bb19

bb15:                                             ; preds = %bb8
  %tmp16 = landingpad { i8*, i32 }
          cleanup
  %tmp17 = extractvalue { i8*, i32 } %tmp16, 0
  %tmp18 = extractvalue { i8*, i32 } %tmp16, 1
  br label %bb24

bb19:                                             ; preds = %bb14, %bb12
  %tmp20 = phi i1 [ false, %bb14 ], [ true, %bb12 ]
  %tmp21 = landingpad { i8*, i32 }
          cleanup
  %tmp22 = extractvalue { i8*, i32 } %tmp21, 0
  %tmp23 = extractvalue { i8*, i32 } %tmp21, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp) #4
  br label %bb24

bb24:                                             ; preds = %bb19, %bb15
  %tmp25 = phi i8* [ %tmp22, %bb19 ], [ %tmp17, %bb15 ]
  %tmp26 = phi i32 [ %tmp23, %bb19 ], [ %tmp18, %bb15 ]
  %tmp27 = phi i1 [ %tmp20, %bb19 ], [ true, %bb15 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp4) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp11) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp10) #4
  br i1 %tmp27, label %bb28, label %bb74

bb28:                                             ; preds = %bb24
  call void @__cxa_free_exception(i8* %tmp9) #4
  br label %bb74

bb29:                                             ; preds = %bb
  %tmp30 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 8
  %tmp31 = load i32, i32* %tmp30, align 8, !tbaa !41
  %tmp32 = icmp slt i32 %tmp31, %arg2
  br i1 %tmp32, label %bb40, label %bb33

bb33:                                             ; preds = %bb29
  %tmp34 = icmp sgt i32 %arg2, %arg1
  br i1 %tmp34, label %bb35, label %bb61

bb35:                                             ; preds = %bb33
  %tmp36 = getelementptr inbounds %"class.adept::Stack", %"class.adept::Stack"* %arg, i64 0, i32 1
  %tmp37 = load double*, double** %tmp36, align 8, !tbaa !19
  %tmp38 = sext i32 %arg1 to i64
  %tmp39 = sub i32 %arg2, %arg1
  br label %bb62

bb40:                                             ; preds = %bb29
  %tmp41 = tail call i8* @__cxa_allocate_exception(i64 40) #4
  %tmp42 = bitcast %"class.std::__cxx11::basic_string"* %tmp5 to i8*
  call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %tmp42) #4
  %tmp43 = getelementptr inbounds %"class.std::allocator", %"class.std::allocator"* %tmp6, i64 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %tmp43) #4
  call void @_ZNSaIcEC2Ev(%"class.std::allocator"* nonnull %tmp6) #4
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_(%"class.std::__cxx11::basic_string"* nonnull %tmp5, i8* getelementptr inbounds ([99 x i8], [99 x i8]* @.str.110, i64 0, i64 0), %"class.std::allocator"* nonnull dereferenceable(1) %tmp6)
          to label %bb44 unwind label %bb47

bb44:                                             ; preds = %bb40
  %tmp45 = bitcast i8* %tmp41 to %"class.adept::gradient_out_of_range"*
  invoke void @_ZN5adept21gradient_out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(%"class.adept::gradient_out_of_range"* %tmp45, %"class.std::__cxx11::basic_string"* nonnull dereferenceable(32) %tmp5)
          to label %bb46 unwind label %bb51

bb46:                                             ; preds = %bb44
  invoke void @__cxa_throw(i8* %tmp41, i8* bitcast ({ i8*, i8*, i8* }* @_ZTIN5adept21gradient_out_of_rangeE to i8*), i8* bitcast (void (%"class.adept::exception"*)* @_ZN5adept9exceptionD2Ev to i8*)) #26
          to label %bb79 unwind label %bb51

bb47:                                             ; preds = %bb40
  %tmp48 = landingpad { i8*, i32 }
          cleanup
  %tmp49 = extractvalue { i8*, i32 } %tmp48, 0
  %tmp50 = extractvalue { i8*, i32 } %tmp48, 1
  br label %bb56

bb51:                                             ; preds = %bb46, %bb44
  %tmp52 = phi i1 [ false, %bb46 ], [ true, %bb44 ]
  %tmp53 = landingpad { i8*, i32 }
          cleanup
  %tmp54 = extractvalue { i8*, i32 } %tmp53, 0
  %tmp55 = extractvalue { i8*, i32 } %tmp53, 1
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(%"class.std::__cxx11::basic_string"* nonnull %tmp5) #4
  br label %bb56

bb56:                                             ; preds = %bb51, %bb47
  %tmp57 = phi i8* [ %tmp54, %bb51 ], [ %tmp49, %bb47 ]
  %tmp58 = phi i32 [ %tmp55, %bb51 ], [ %tmp50, %bb47 ]
  %tmp59 = phi i1 [ %tmp52, %bb51 ], [ true, %bb47 ]
  call void @_ZNSaIcED2Ev(%"class.std::allocator"* nonnull %tmp6) #4
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %tmp43) #4
  call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %tmp42) #4
  br i1 %tmp59, label %bb60, label %bb74

bb60:                                             ; preds = %bb56
  call void @__cxa_free_exception(i8* %tmp41) #4
  br label %bb74

bb61:                                             ; preds = %bb62, %bb33
  ret void

bb62:                                             ; preds = %bb62, %bb35
  %tmp63 = phi i64 [ %tmp38, %bb35 ], [ %tmp70, %bb62 ]
  %tmp64 = phi i64 [ 0, %bb35 ], [ %tmp71, %bb62 ]
  %tmp65 = getelementptr inbounds double, double* %tmp37, i64 %tmp63
  %tmp66 = bitcast double* %tmp65 to i64*
  %tmp67 = load i64, i64* %tmp66, align 8, !tbaa !31
  %tmp68 = getelementptr inbounds double, double* %arg3, i64 %tmp64
  %tmp69 = bitcast double* %tmp68 to i64*
  store i64 %tmp67, i64* %tmp69, align 8, !tbaa !31
  %tmp70 = add nsw i64 %tmp63, 1
  %tmp71 = add nuw nsw i64 %tmp64, 1
  %tmp72 = trunc i64 %tmp71 to i32
  %tmp73 = icmp eq i32 %tmp39, %tmp72
  br i1 %tmp73, label %bb61, label %bb62

bb74:                                             ; preds = %bb60, %bb56, %bb28, %bb24
  %tmp75 = phi i8* [ %tmp57, %bb60 ], [ %tmp57, %bb56 ], [ %tmp25, %bb28 ], [ %tmp25, %bb24 ]
  %tmp76 = phi i32 [ %tmp58, %bb60 ], [ %tmp58, %bb56 ], [ %tmp26, %bb28 ], [ %tmp26, %bb24 ]
  %tmp77 = insertvalue { i8*, i32 } undef, i8* %tmp75, 0
  %tmp78 = insertvalue { i8*, i32 } %tmp77, i32 %tmp76, 1
  resume { i8*, i32 } %tmp78

bb79:                                             ; preds = %bb46, %bb14
  unreachable
}

; Function Attrs: uwtable
define internal void @_GLOBAL__sub_I_ode.cpp() #0 section ".text.startup" {
bb:
  tail call fastcc void @__cxx_global_var_init()
  tail call fastcc void @__cxx_global_var_init.1()
  tail call fastcc void @__cxx_global_var_init.2()
  tail call fastcc void @__cxx_global_var_init.4()
  tail call fastcc void @__cxx_global_var_init.6()
  tail call fastcc void @__cxx_global_var_init.7()
  tail call fastcc void @__cxx_global_var_init.8()
  tail call fastcc void @__cxx_global_var_init.9()
  tail call fastcc void @__cxx_global_var_init.11()
  tail call fastcc void @__cxx_global_var_init.13()
  tail call fastcc void @__cxx_global_var_init.14()
  tail call fastcc void @__cxx_global_var_init.16()
  tail call fastcc void @__cxx_global_var_init.83()
  tail call fastcc void @__cxx_global_var_init.84()
  ret void
}

attributes #0 = { uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #2 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #30 = { noinline readnone }
attributes #3 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #4 = { nounwind }
attributes #5 = { argmemonly nounwind }
attributes #6 = { norecurse nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #7 = { norecurse uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #8 = { nobuiltin nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #9 = { norecurse nounwind readnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #10 = { inlinehint uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #11 = { nounwind readnone speculatable }
attributes #12 = { nobuiltin "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #13 = { noreturn uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #14 = { norecurse uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #15 = { norecurse uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="128" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #16 = { inlinehint norecurse uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="128" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #17 = { inlinehint nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #18 = { inlinehint norecurse nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #19 = { norecurse nounwind readonly uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #20 = { noreturn nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #21 = { inlinehint norecurse uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #22 = { noinline noreturn nounwind }
attributes #23 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #24 = { argmemonly nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="true" "use-soft-float"="false" }
attributes #25 = { noreturn nounwind }
attributes #26 = { noreturn }
attributes #27 = { builtin nounwind }
attributes #28 = { builtin }

!llvm.module.flags = !{!0}
!llvm.ident = !{!1}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{!"clang version 7.1.0-svn353565-1~exp1~20190406090509.61 (branches/release_70)"}
!2 = !{!3, !3, i64 0}
!3 = !{!"bool", !4, i64 0}
!4 = !{!"omnipotent char", !5, i64 0}
!5 = !{!"Simple C++ TBAA"}
!6 = !{!7, !7, i64 0}
!7 = !{!"_ZTSN5adept15ArrayPrintStyleE", !4, i64 0}
!8 = !{!9, !9, i64 0}
!9 = !{!"vtable pointer", !5, i64 0}
!10 = !{!11, !3, i64 145}
!11 = !{!"_ZTSN5adept5StackE", !12, i64 40, !13, i64 48, !13, i64 72, !14, i64 96, !15, i64 120, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !3, i64 144, !3, i64 145, !3, i64 146, !3, i64 147, !3, i64 148}
!12 = !{!"any pointer", !4, i64 0}
!13 = !{!"_ZTSSt6vectorIiSaIiEE"}
!14 = !{!"_ZTSNSt7__cxx114listIN5adept3GapESaIS2_EEE"}
!15 = !{!"_ZTSSt14_List_iteratorIN5adept3GapEE", !12, i64 0}
!16 = !{!"int", !4, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{!12, !12, i64 0}
!19 = !{!11, !12, i64 40}
!20 = !{!21, !12, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !12, i64 0, !12, i64 8, !12, i64 16}
!23 = !{!21, !12, i64 8}
!24 = !{!25, !12, i64 0}
!25 = !{!"_ZTSN5adept8internal16StackStorageOrigE", !12, i64 0, !12, i64 8, !12, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36}
!26 = !{!25, !12, i64 8}
!27 = !{!25, !12, i64 16}
!28 = !{!25, !16, i64 24}
!29 = !{!30, !16, i64 0}
!30 = !{!"_ZTSN5adept8internal9StatementE", !16, i64 0, !16, i64 4}
!31 = !{!32, !32, i64 0}
!32 = !{!"double", !4, i64 0}
!33 = !{!30, !16, i64 4}
!34 = !{!16, !16, i64 0}
!35 = !{!11, !3, i64 144}
!36 = !{!11, !16, i64 140}
!37 = !{!38, !16, i64 4}
!38 = !{!"_ZTSN5adept3GapE", !16, i64 0, !16, i64 4}
!39 = !{!38, !16, i64 0}
!40 = !{!11, !16, i64 128}
!41 = !{!11, !16, i64 136}
!42 = !{!43, !12, i64 0}
!43 = !{!"_ZTSNSt8__detail15_List_node_baseE", !12, i64 0, !12, i64 8}
!44 = !{!15, !12, i64 0}
!45 = !{!46, !12, i64 0}
!46 = !{!"_ZTSSt20_List_const_iteratorIN5adept3GapEE", !12, i64 0}
!47 = !{!43, !12, i64 8}
!48 = !{!11, !16, i64 132}
!49 = !{!11, !3, i64 146}
!50 = !{!25, !16, i64 28}
!51 = !{!25, !16, i64 32}
!52 = !{!25, !16, i64 36}
!53 = !{!4, !4, i64 0}
!54 = !{!55, !12, i64 8}
!55 = !{!"_ZTSSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN5adept5BlockILi2EdEESaIS2_EE12_Vector_implE", !12, i64 0, !12, i64 8, !12, i64 16}
!57 = !{!55, !12, i64 0}
!58 = !{!59, !12, i64 8}
!59 = !{!"_ZTSN5adept5ArrayILi1EdLb0EEE", !12, i64 0, !12, i64 8, !60, i64 16, !60, i64 20}
!60 = !{!"_ZTSN5adept14ExpressionSizeILi1EEE", !4, i64 0}
!61 = !{!59, !12, i64 0}
!62 = !{!63, !64, i64 0}
!63 = !{!"_ZTS7timeval", !64, i64 0, !64, i64 8}
!64 = !{!"long", !4, i64 0}
!65 = !{!63, !64, i64 8}
!66 = !{i64 0, i64 16384, !53}
!67 = !{!68, !12, i64 8}
!68 = !{!"_ZTSN5adept5ArrayILi1EdLb1EEE", !12, i64 8, !12, i64 16, !60, i64 24, !60, i64 28}
!69 = !{!70, !16, i64 8}
!70 = !{!"_ZTSN5adept6ActiveIdEE", !32, i64 0, !16, i64 8}
!71 = !{!70, !32, i64 0}
!72 = !{!73, !12, i64 0}
!73 = !{!"_ZTSN5adept15ActiveReferenceIdEE", !12, i64 0, !16, i64 8}
!74 = !{!11, !3, i64 147}
!75 = !{!11, !3, i64 148}
!76 = !{!68, !12, i64 16}
!77 = !{!73, !16, i64 8}
!78 = !{!79, !12, i64 0}
!79 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!80 = !{!81, !64, i64 8}
!81 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !79, i64 0, !64, i64 8, !4, i64 16}
!82 = !{!81, !12, i64 0}
!83 = !{!64, !64, i64 0}
!84 = !{!85, !12, i64 216}
!85 = !{!"_ZTSSt9basic_iosIcSt11char_traitsIcEE", !12, i64 216, !4, i64 224, !3, i64 225, !12, i64 232, !12, i64 240, !12, i64 248, !12, i64 256}
!86 = !{!85, !4, i64 224}
!87 = !{!85, !3, i64 225}
!88 = !{!89, !90, i64 64}
!89 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !90, i64 64, !81, i64 72}
!90 = !{!"_ZTSSt13_Ios_Openmode", !4, i64 0}
!91 = !{!92, !64, i64 8}
!92 = !{!"_ZTSSi", !64, i64 8}
!93 = !{!94, !96, i64 32}
!94 = !{!"_ZTSSt8ios_base", !64, i64 8, !64, i64 16, !95, i64 24, !96, i64 28, !96, i64 32, !12, i64 40, !97, i64 48, !4, i64 64, !16, i64 192, !12, i64 200, !98, i64 208}
!95 = !{!"_ZTSSt13_Ios_Fmtflags", !4, i64 0}
!96 = !{!"_ZTSSt12_Ios_Iostate", !4, i64 0}
!97 = !{!"_ZTSNSt8ios_base6_WordsE", !12, i64 0, !64, i64 8}
!98 = !{!"_ZTSSt6locale", !12, i64 0}
!99 = !{!100, !12, i64 40}
!100 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !98, i64 56}
!101 = !{!100, !12, i64 24}
!102 = !{!100, !12, i64 32}
!103 = !{!21, !12, i64 16}
!104 = !{!105, !12, i64 0}
!105 = !{!"_ZTSSt15__allocated_ptrISaISt10_List_nodeIN5adept3GapEEEE", !12, i64 0, !12, i64 8}
!106 = !{!105, !12, i64 8}
!107 = !{!108, !12, i64 0}
!108 = !{!"_ZTSN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEE", !12, i64 0}
!109 = !{!55, !12, i64 16}
!110 = !{!111, !16, i64 12}
!111 = !{!"_ZTSN5adept7StorageIdEE", !12, i64 0, !16, i64 8, !16, i64 12, !16, i64 16}
!112 = !{!111, !16, i64 8}
!113 = !{!111, !16, i64 16}
!114 = !{!111, !12, i64 0}
!115 = !{!116, !64, i64 0}
!116 = !{!"_ZTSSt4pairIllE", !64, i64 0, !64, i64 8}
!117 = !{!116, !64, i64 8}
!118 = !{!119, !64, i64 0}
!119 = !{!"_ZTSN5boost6detail11multi_array11index_rangeIlmEE", !64, i64 0, !64, i64 8, !64, i64 16, !3, i64 24}
!120 = !{!119, !64, i64 8}
!121 = !{!119, !64, i64 16}
!122 = !{!119, !3, i64 24}
!123 = !{!124, !16, i64 0}
!124 = !{!"_ZTSN5adept8internal13GradientIndexILb1EEE", !16, i64 0}
!125 = !{!126, !12, i64 0}
!126 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_6DivideENS1_IdS3_NS0_8MultiplyES3_EEEE", !12, i64 0, !127, i64 8}
!127 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyES3_EE", !12, i64 0, !12, i64 8}
!128 = !{!127, !12, i64 0}
!129 = !{!127, !12, i64 8}
!130 = !{!131, !12, i64 24}
!131 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EES4_S3_EE", !132, i64 8, !12, i64 24}
!132 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_8MultiplyES3_EE", !12, i64 0, !12, i64 8}
!133 = !{!132, !12, i64 0}
!134 = !{!132, !12, i64 8}
!135 = !{!136, !16, i64 0}
!136 = !{!"_ZTSN5adept8internal6PacketIiEE", !16, i64 0}
!137 = !{!138, !12, i64 0}
!138 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEENS0_8MultiplyES6_EE", !12, i64 0, !12, i64 8}
!139 = !{!138, !12, i64 8}
!140 = !{!141, !12, i64 0}
!141 = !{!"_ZTSN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_8SubtractEdEE", !12, i64 0, !142, i64 16}
!142 = !{!"_ZTSN5adept8internal6PacketIdEE", !4, i64 0}
!143 = !{!144, !12, i64 112}
!144 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEES7_S3_EE", !145, i64 8, !12, i64 112}
!145 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EESB_NS1_IdNS0_19BinaryOpScalarRightIdS3_S7_iEES4_S6_EEEE", !146, i64 0, !153, i64 88}
!146 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EES7_S3_EE", !147, i64 8, !12, i64 80}
!147 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_S3_EE", !148, i64 0, !12, i64 64}
!148 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEE", !12, i64 0, !149, i64 8}
!149 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiNS0_8MultiplyES3_EEEE", !150, i64 0, !12, i64 48}
!150 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EES4_S3_EE", !151, i64 8, !12, i64 40}
!151 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES3_EES4_S3_EE", !152, i64 8, !12, i64 24}
!152 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_15ActiveReferenceIdEENS0_3AddES3_EE", !12, i64 0, !12, i64 8}
!153 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS0_19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEENS0_8MultiplyENS_15ActiveReferenceIdEEEE", !12, i64 0, !12, i64 8}
!154 = !{!146, !12, i64 80}
!155 = !{!147, !12, i64 64}
!156 = !{!148, !12, i64 0}
!157 = !{!149, !12, i64 48}
!158 = !{!150, !12, i64 40}
!159 = !{!151, !12, i64 24}
!160 = !{!152, !12, i64 0}
!161 = !{!152, !12, i64 8}
!162 = !{!163, !12, i64 8}
!163 = !{!"_ZTSN5adept8internal18BinaryOpScalarLeftIdiNS0_8MultiplyENS_15ActiveReferenceIdEEEE", !136, i64 0, !12, i64 8}
!164 = !{!153, !12, i64 0}
!165 = !{!153, !12, i64 8}
!166 = !{!167, !12, i64 0}
!167 = !{!"_ZTSN5adept8internal19BinaryOpScalarRightIdNS_6ActiveIdEENS0_3AddEiEE", !12, i64 0, !136, i64 8}
!168 = !{!169, !16, i64 0}
!169 = !{!"_ZTSN5adept8internal6ScalarIiEE", !16, i64 0}
!170 = !{!171, !12, i64 80}
!171 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEESB_S3_EE", !172, i64 0, !12, i64 80}
!172 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS1_IdNS_6ActiveIdEENS0_8MultiplyENS1_IdNS1_IdNS1_IdNS1_IdNS_15ActiveReferenceIdEENS0_3AddES6_EES7_S6_EES7_S6_EENS0_8SubtractENS0_18BinaryOpScalarLeftIdiS4_S6_EEEEEES7_NS1_IdS3_S4_S6_EEEE", !148, i64 0, !173, i64 64}
!173 = !{!"_ZTSN5adept8internal15BinaryOperationIdNS_6ActiveIdEENS0_8MultiplyENS_15ActiveReferenceIdEEEE", !12, i64 0, !12, i64 8}
!174 = !{!173, !12, i64 0}
!175 = !{!173, !12, i64 8}

; CHECK: define internal void @diffe_Z19brusselator_2d_loopPdS_PKdS1_S1_d(double* noalias nocapture readnone %arg, double* nocapture readnone %"arg'", double* noalias nocapture %arg1, double* nocapture %"arg1'", double* noalias nocapture readonly %arg2, double* nocapture %"arg2'", double* noalias nocapture readonly %arg3, double* nocapture %"arg3'", double* noalias nocapture readonly %arg4, double* nocapture %"arg4'", double %arg5)
; CHECK-NEXT: bb:
; CHECK-NEXT:   %A = load double, double* %arg4, align 8, !tbaa !31
; CHECK-NEXT:   %v0 = load double, double* %arg3, align 8, !tbaa !31
; CHECK-NEXT:   br label %bb9

; CHECK: bb9:                                              ; preds = %bb22, %bb
; CHECK-NEXT:   %iv = phi i64 [ %iv.next, %bb22 ], [ 0, %bb ]
; CHECK-NEXT:   %iv.next = add nuw nsw i64 %iv, 1
; CHECK-NEXT:   br label %bb25

; CHECK: bb22:                                             ; preds = %bb39
; CHECK-NEXT:   %tmp24 = icmp ne i64 %iv.next, 32
; CHECK-NEXT:   br i1 %tmp24, label %bb9, label %invertbb22

; CHECK: bb25:                                             ; preds = %bb39, %bb9
; CHECK-NEXT:   %iv1 = phi i64 [ %iv.next2, %bb39 ], [ 0, %bb9 ]
; CHECK-NEXT:   %iv.next2 = add nuw nsw i64 %iv1, 1
; CHECK-NEXT:   %tmp28 = icmp eq i64 %iv1, 0
; CHECK-NEXT:   %jm1 = add i64 %iv1, -1
; CHECK-NEXT:   %tmp30 = trunc i64 %jm1 to i32
; CHECK-NEXT:   %tmp31 = select i1 %tmp28, i32 0, i32 %tmp30
; CHECK-NEXT:   %tmp31_ext = zext i32 %tmp31 to i64
; CHECK-NEXT:   %tmp37 = icmp ult i64 %tmp31_ext, 33
; CHECK-NEXT:   %tmp66 = icmp ne i64 %iv.next2, 32
; CHECK-NEXT:   br i1 %tmp37, label %bb39, label %bb38

; CHECK: bb38:                                             ; preds = %bb25
; CHECK-NEXT:   tail call void @__assert_fail(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.85, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.86, i64 0, i64 0), i32 106, i8* getelementptr inbounds ([151 x i8], [151 x i8]* @__PRETTY_FUNCTION__._Z19brusselator_2d_loopPdS_PKdS1_S1_d, i64 0, i64 0))
; CHECK-NEXT:   unreachable

; CHECK: bb39:                                             ; preds = %bb25
; CHECK-NEXT:   br i1 %tmp66, label %bb25, label %bb22

; CHECK: invertbb:                                         ; preds = %invertbb9
; CHECK-NEXT:   %0 = load double, double* %"arg3'", align 8
; CHECK-NEXT:   %1 = fadd fast double %0, %[[i21:.+]]
; CHECK-NEXT:   store double %1, double* %"arg3'", align 8
; CHECK-NEXT:   %2 = load double, double* %"arg4'", align 8
; CHECK-NEXT:   %3 = fadd fast double %2, %[[i18:.+]]
; CHECK-NEXT:   store double %3, double* %"arg4'", align 8
; CHECK-NEXT:   ret void

; CHECK: invertbb9:                                        ; preds = %invertbb39
; CHECK-NEXT:   %4 = icmp eq i64 %"iv'ac.0", 0
; CHECK-NEXT:   br i1 %4, label %invertbb, label %incinvertbb9

; CHECK: incinvertbb9:                                     ; preds = %invertbb9
; CHECK-NEXT:   %5 = add nsw i64 %"iv'ac.0", -1
; CHECK-NEXT:   br label %invertbb22

; CHECK: invertbb22:                                       ; preds = %bb22, %incinvertbb9
; CHECK-NEXT:   %"A'de.0" = phi double [ %[[i18]], %incinvertbb9 ], [ 0.000000e+00, %bb22 ]
; CHECK-NEXT:   %"v0'de.0" = phi double [ %[[i21]], %incinvertbb9 ], [ 0.000000e+00, %bb22 ]
; CHECK-NEXT:   %"iv'ac.0" = phi i64 [ %5, %incinvertbb9 ], [ 31, %bb22 ]
; CHECK-NEXT:   %i32_unwrap = shl i64 %"iv'ac.0", 5
; CHECK-NEXT:   br label %invertbb39

; CHECK: incinvertbb25:                                    ; preds = %invertbb39
; CHECK-NEXT:   %6 = add nsw i64 %"iv1'ac.0", -1
; CHECK-NEXT:   br label %invertbb39

; CHECK: invertbb39:                                       ; preds = %incinvertbb25, %invertbb22
; CHECK-NEXT:   %"A'de.1" = phi double [ %"A'de.0", %invertbb22 ], [ %[[i18]], %incinvertbb25 ]
; CHECK-NEXT:   %"v0'de.1" = phi double [ %"v0'de.0", %invertbb22 ], [ %[[i21]], %incinvertbb25 ]
; CHECK-NEXT:   %"iv1'ac.0" = phi i64 [ 31, %invertbb22 ], [ %6, %incinvertbb25 ]
; CHECK-NEXT:   %ij_unwrap = add nuw nsw i64 %"iv1'ac.0", %i32_unwrap
; CHECK-NEXT:   %"tmp65'ipg_unwrap" = getelementptr inbounds double, double* %"arg1'", i64 %ij_unwrap
; CHECK-NEXT:   %[[i7:.+]] = load double, double* %"tmp65'ipg_unwrap", align 8
; CHECK-NEXT:   store double 0.000000e+00, double* %"tmp65'ipg_unwrap", align 8
; CHECK-NEXT:   %tmp12_unwrap = icmp eq i64 %"iv'ac.0", 0
; CHECK-NEXT:   %tmp14_unwrap = add i64 %i32_unwrap, -32
; CHECK-NEXT:   %tmp18_unwrap = and i64 %tmp14_unwrap, 4294967264
; CHECK-NEXT:   %minim132_unwrap = select i1 %tmp12_unwrap, i64 0, i64 %tmp18_unwrap
; CHECK-NEXT:   %im1j_unwrap = add nuw nsw i64 %"iv1'ac.0", %minim132_unwrap
; CHECK-NEXT:   %tmp43_unwrap = getelementptr inbounds double, double* %arg3, i64 %im1j_unwrap
; CHECK-NEXT:   %vim1j_unwrap = load double, double* %tmp43_unwrap, align 8, !tbaa !31
; CHECK-NEXT:   %tmp56_unwrap = fadd fast double %vim1j_unwrap, %v0
; CHECK-NEXT:   %tmp13_unwrap = icmp eq i64 %"iv'ac.0", 31
; CHECK-NEXT:   %ip132_unwrap = add i64 %i32_unwrap, 32
; CHECK-NEXT:   %maxip132_unwrap = select i1 %tmp13_unwrap, i64 992, i64 %ip132_unwrap
; CHECK-NEXT:   %ip1j_unwrap = add nuw nsw i64 %"iv1'ac.0", %maxip132_unwrap
; CHECK-NEXT:   %tmp46_unwrap = getelementptr inbounds double, double* %arg3, i64 %ip1j_unwrap
; CHECK-NEXT:   %vip1j_unwrap = load double, double* %tmp46_unwrap, align 8, !tbaa !31
; CHECK-NEXT:   %tmp57_unwrap = fadd fast double %tmp56_unwrap, %vip1j_unwrap
; CHECK-NEXT:   %endj_unwrap = icmp eq i64 %"iv1'ac.0", 31
; CHECK-NEXT:   %iv.next2_unwrap = add nuw nsw i64 %"iv1'ac.0", 1
; CHECK-NEXT:   %maxjp1_unwrap = select i1 %endj_unwrap, i64 31, i64 %iv.next2_unwrap
; CHECK-NEXT:   %ijp1_unwrap = add i64 %maxjp1_unwrap, %i32_unwrap
; CHECK-NEXT:   %ijp1AND_unwrap = and i64 %ijp1_unwrap, 4294967295
; CHECK-NEXT:   %tmp50_unwrap = getelementptr inbounds double, double* %arg3, i64 %ijp1AND_unwrap
; CHECK-NEXT:   %vijp1_unwrap = load double, double* %tmp50_unwrap, align 8, !tbaa !31
; CHECK-NEXT:   %tmp58_unwrap = fadd fast double %tmp57_unwrap, %vijp1_unwrap
; CHECK-NEXT:   %tmp28_unwrap = icmp eq i64 %"iv1'ac.0", 0
; CHECK-NEXT:   %jm1_unwrap = add i64 %"iv1'ac.0", -1
; CHECK-NEXT:   %tmp30_unwrap = trunc i64 %jm1_unwrap to i32
; CHECK-NEXT:   %tmp31_unwrap = select i1 %tmp28_unwrap, i32 0, i32 %tmp30_unwrap
; CHECK-NEXT:   %tmp31_ext_unwrap = zext i32 %tmp31_unwrap to i64
; CHECK-NEXT:   %ijm1_unwrap = add i64 %tmp31_ext_unwrap, %i32_unwrap
; CHECK-NEXT:   %tmp54_unwrap = getelementptr inbounds double, double* %arg3, i64 %ijm1_unwrap
; CHECK-NEXT:   %vijm1_unwrap = load double, double* %tmp54_unwrap, align 8, !tbaa !31
; CHECK-NEXT:   %sum_unwrap = fadd fast double %tmp58_unwrap, %vijm1_unwrap
; CHECK-NEXT:   %[[m0diffeA:.+]] = fmul fast double %[[i7]], %sum_unwrap
; CHECK-NEXT:   %[[i8:.+]] = fadd fast double %"A'de.1", %[[m0diffeA]]
; CHECK-NEXT:   %[[m1diffesum:.+]] = fmul fast double %[[i7]], %A
; CHECK-NEXT:   %[[i9:.+]] = fadd fast double %"v0'de.1", %[[m1diffesum]]
; CHECK-NEXT:   %"tmp54'ipg_unwrap" = getelementptr inbounds double, double* %"arg3'", i64 %ijm1_unwrap
; CHECK-NEXT:   %[[i10:.+]] = load double, double* %"tmp54'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i11:.+]] = fadd fast double %[[i10]], %[[m1diffesum]]
; CHECK-NEXT:   store double %[[i11]], double* %"tmp54'ipg_unwrap", align 8
; CHECK-NEXT:   %"tmp50'ipg_unwrap" = getelementptr inbounds double, double* %"arg3'", i64 %ijp1AND_unwrap
; CHECK-NEXT:   %[[i12:.+]] = load double, double* %"tmp50'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i13:.+]] = fadd fast double %[[i12]], %[[m1diffesum]]
; CHECK-NEXT:   store double %[[i13]], double* %"tmp50'ipg_unwrap", align 8
; CHECK-NEXT:   %"tmp46'ipg_unwrap" = getelementptr inbounds double, double* %"arg3'", i64 %ip1j_unwrap
; CHECK-NEXT:   %[[i14:.+]] = load double, double* %"tmp46'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i15:.+]] = fadd fast double %[[i14]], %[[m1diffesum]]
; CHECK-NEXT:   store double %[[i15]], double* %"tmp46'ipg_unwrap", align 8
; CHECK-NEXT:   %"tmp43'ipg_unwrap" = getelementptr inbounds double, double* %"arg3'", i64 %im1j_unwrap
; CHECK-NEXT:   %[[i16:.+]] = load double, double* %"tmp43'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i17:.+]] = fadd fast double %[[i16]], %[[m1diffesum]]
; CHECK-NEXT:   store double %[[i17]], double* %"tmp43'ipg_unwrap", align 8
; CHECK-NEXT:   %tmp33_unwrap = getelementptr inbounds double, double* %arg3, i64 %ij_unwrap
; CHECK-NEXT:   %vij_unwrap = load double, double* %tmp33_unwrap, align 8, !tbaa !31
; CHECK-NEXT:   %[[m0diffeterm2:.+]] = fmul fast double %[[i7]], %vij_unwrap
; CHECK-NEXT:   %tmp61_unwrap = fmul fast double %vij_unwrap, %v0
; CHECK-NEXT:   %term2_unwrap = fsub fast double %A, %tmp61_unwrap
; CHECK-NEXT:   %[[m1diffevij:.+]] = fmul fast double %[[i7]], %term2_unwrap
; CHECK-NEXT:   %[[i18]] = fadd fast double %[[i8]], %[[m0diffeterm2]]
; CHECK-NEXT:   %[[i19:.+]] = fsub fast double 0.000000e+00, %[[m0diffeterm2]]
; CHECK-NEXT:   %[[m0diffevij:.+]] = fmul fast double %[[i19]], %v0
; CHECK-NEXT:   %[[i20:.+]] = fadd fast double %[[m1diffevij]], %[[m0diffevij]]
; CHECK-NEXT:   %[[m1diffev0:.+]] = fmul fast double %[[i19]], %vij_unwrap
; CHECK-NEXT:   %[[i21]] = fadd fast double %[[i9]], %[[m1diffev0]]
; CHECK-NEXT:   %"tmp33'ipg_unwrap" = getelementptr inbounds double, double* %"arg3'", i64 %ij_unwrap
; CHECK-NEXT:   %[[i22:.+]] = load double, double* %"tmp33'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i23:.+]] = fadd fast double %[[i22]], %[[i20]]
; CHECK-NEXT:   store double %[[i23]], double* %"tmp33'ipg_unwrap", align 8
; CHECK-NEXT:   %[[i24:.+]] = icmp eq i64 %"iv1'ac.0", 0
; CHECK-NEXT:   br i1 %[[i24]], label %invertbb9, label %incinvertbb25
; CHECK-NEXT: }
