; LLVM IR from Mjolnir-MD/Mjolnir :: test/core/test_system_motion_remover.ll (ZN28SystemMotionRemover_rotation11test_methodEv)

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

%"class.mjolnir::math::Matrix.334" = type { %"struct.std::array.335" }
%"struct.std::array.335" = type { [3 x double] }
%"class.boost::test_tools::assertion::value_expr" = type { ptr }
%"class.boost::test_tools::assertion::binary_expr" = type { %"class.boost::test_tools::assertion::value_expr", double }
%"class.boost::test_tools::assertion_result" = type { %"class.boost::test_tools::assertion_result::readonly_property65", %"class.boost::shared_ptr.225" }
%"class.boost::test_tools::assertion_result::readonly_property65" = type { %"class.boost::unit_test::readonly_property.213" }
%"class.boost::unit_test::readonly_property.213" = type { %"class.boost::unit_test::class_property.98" }
%"class.boost::unit_test::class_property.98" = type { i8 }
%"class.boost::shared_ptr.225" = type { ptr, %"class.boost::detail::shared_count" }
%"class.boost::detail::shared_count" = type { ptr }
%"class.boost::unit_test::lazy_ostream_impl.337" = type { %"class.boost::unit_test::lazy_ostream.base", ptr, ptr }
%"class.boost::unit_test::lazy_ostream.base" = type <{ ptr, i8 }>
%"struct.boost::test_tools::tt_detail::assertion_evaluate_t" = type <{ ptr, %"class.std::__cxx11::list.338", i8, [7 x i8] }>
%"class.std::__cxx11::list.338" = type { %"class.std::__cxx11::_List_base.339" }
%"class.std::__cxx11::_List_base.339" = type { %"struct.std::__cxx11::_List_base<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>, std::allocator<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>>>::_List_impl" }
%"struct.std::__cxx11::_List_base<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>, std::allocator<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343" = type <{ ptr, %"class.std::__cxx11::list.338", i8, [7 x i8] }>
%"class.boost::test_tools::assertion::binary_expr.345" = type { %"class.boost::test_tools::assertion::value_expr", ptr }
%"class.boost::test_tools::assertion::binary_expr.347" = type { %"class.boost::test_tools::assertion::value_expr", ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.mjolnir::System" = type { i8, i8, %"class.std::map.314", %"class.std::map.319", %"class.mjolnir::math::Matrix", i64, %"class.std::vector.324", %"class.std::vector.324", %"class.std::vector.329", %"class.std::vector.329", %"class.std::vector.329", %"class.std::vector", %"class.std::vector" }
%"class.std::map.314" = type { %"class.std::_Rb_tree.315" }
%"class.std::_Rb_tree.315" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, double>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, double>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, double>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, double>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.319" = type { %"class.std::_Rb_tree.320" }
%"class.std::_Rb_tree.320" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.mjolnir::math::Matrix" = type { %"struct.std::array" }
%"struct.std::array" = type { [9 x double] }
%"class.std::vector.324" = type { %"struct.std::_Vector_base.325" }
%"struct.std::_Vector_base.325" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.329" = type { %"struct.std::_Vector_base.330" }
%"struct.std::_Vector_base.330" = type { %"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.mjolnir::UnlimitedBoundary" = type { i8 }
%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<>::param_type" }
%"struct.std::uniform_real_distribution<>::param_type" = type { double, double }
%"class.mjolnir::SystemMotionRemover" = type { i8, i8, i8 }
%"class.boost::unit_test::basic_cstring" = type { ptr, ptr }
%"class.boost::test_tools::assertion::seed" = type { i8 }
%"struct.boost::test_tools::tt_detail::tolerance_manip" = type { double }
%"struct.boost::test_tools::tt_detail::assertion_type" = type { i32 }

@_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE = external hidden global ptr, align 8
@.str.401 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.402 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.403 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.404 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.410 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [32 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(9), ptr noundef, i64 noundef, i32 noundef, i32 noundef, i64 noundef, ...) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt25uniform_real_distributionIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, double noundef, double noundef, double noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(5000)) #2 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, double noundef, ptr noundef nonnull align 8 dereferenceable(24)) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(352)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::value_expr") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind noalias writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8, ptr noundef nonnull align 8 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(16)) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv() #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8, ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(33)) #2 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8, ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8, ptr noundef nonnull align 8 dereferenceable(16)) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIS4_EENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr.345") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(33)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEgeIS4_EENS1_11binary_exprIS5_T_NS1_2op2GEIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr.347") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEES4_NS1_2op2GEIddvEEE8evaluateEb(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN28SystemMotionRemover_rotation11test_methodEv(ptr noundef nonnull align 1 dereferenceable(1) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca double, align 8
  %8 = alloca i64, align 8
  %9 = alloca %"class.mjolnir::System", align 8
  %10 = alloca %"struct.mjolnir::UnlimitedBoundary", align 1
  %11 = alloca %"class.std::mersenne_twister_engine", align 8
  %12 = alloca %"class.std::uniform_real_distribution", align 8
  %13 = alloca i64, align 8
  %14 = alloca i32, align 4
  %15 = alloca double, align 8
  %16 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %17 = alloca i64, align 8
  %18 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %19 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %20 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %21 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %22 = alloca %"class.mjolnir::System", align 8
  %23 = alloca %"class.mjolnir::SystemMotionRemover", align 1
  %24 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %31 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %32 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %33 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %34 = alloca %"class.boost::test_tools::assertion_result", align 8
  %35 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %36 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %37 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %38 = alloca double, align 8
  %39 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %40 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %41 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %42 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %43 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %44 = alloca %"class.boost::test_tools::assertion_result", align 8
  %45 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %46 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %47 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %48 = alloca double, align 8
  %49 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %50 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %51 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %52 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %53 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %54 = alloca %"class.boost::test_tools::assertion_result", align 8
  %55 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %56 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %57 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %58 = alloca double, align 8
  %59 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %60 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %61 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %62 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %63 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %64 = alloca %"class.boost::test_tools::assertion_result", align 8
  %65 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %66 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %67 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %68 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %69 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %70 = alloca double, align 8
  %71 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %72 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %73 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %74 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %75 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %76 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %77 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %78 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %79 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %80 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %81 = alloca %"class.boost::test_tools::assertion_result", align 8
  %82 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %83 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %84 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %85 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %86 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %87 = alloca double, align 8
  %88 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %89 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %90 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %91 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %92 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %93 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %94 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %95 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %96 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %97 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %98 = alloca %"class.boost::test_tools::assertion_result", align 8
  %99 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %100 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %101 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %102 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %103 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %104 = alloca double, align 8
  %105 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %106 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %107 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %108 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %109 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %110 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %111 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %112 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %113 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %114 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %115 = alloca %"class.boost::test_tools::assertion_result", align 8
  %116 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343", align 8
  %117 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343", align 8
  %118 = alloca %"class.boost::test_tools::assertion::binary_expr.345", align 8
  %119 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %120 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %121 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %122 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %123 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %124 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %125 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %126 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %127 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %128 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %129 = alloca i64, align 8
  %130 = alloca double, align 8
  %131 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %132 = alloca i64, align 8
  %133 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %134 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %135 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %136 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %137 = alloca %"class.mjolnir::System", align 8
  %138 = alloca %"class.mjolnir::SystemMotionRemover", align 1
  %139 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %140 = alloca double, align 8
  %141 = alloca i64, align 8
  %142 = alloca double, align 8
  %143 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %144 = alloca ptr, align 8
  %145 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %146 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %147 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %148 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %149 = alloca %"class.boost::test_tools::assertion_result", align 8
  %150 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %151 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %152 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %153 = alloca double, align 8
  %154 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %155 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %156 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %157 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %158 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %159 = alloca %"class.boost::test_tools::assertion_result", align 8
  %160 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %161 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %162 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %163 = alloca double, align 8
  %164 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %165 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %166 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %167 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %168 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %169 = alloca %"class.boost::test_tools::assertion_result", align 8
  %170 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %171 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %172 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %173 = alloca double, align 8
  %174 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %175 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %176 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %177 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %178 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %179 = alloca %"class.boost::test_tools::assertion_result", align 8
  %180 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %181 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %182 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %183 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %184 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %185 = alloca double, align 8
  %186 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %187 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %188 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %189 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %190 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %191 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %192 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %193 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %194 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %195 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %196 = alloca %"class.boost::test_tools::assertion_result", align 8
  %197 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %198 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %199 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %200 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %201 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %202 = alloca double, align 8
  %203 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %204 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %205 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %206 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %207 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %208 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %209 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %210 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %211 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %212 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %213 = alloca %"class.boost::test_tools::assertion_result", align 8
  %214 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %215 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %216 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %217 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %218 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %219 = alloca double, align 8
  %220 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %221 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %222 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %223 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %224 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %225 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %226 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %227 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %228 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %229 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %230 = alloca %"class.boost::test_tools::assertion_result", align 8
  %231 = alloca %"class.boost::test_tools::assertion::binary_expr.347", align 8
  %232 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %233 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %234 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %235 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %236 = alloca %"class.boost::unit_test::basic_cstring", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %237 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef @.str.402, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %238 unwind label %246

238:                                              ; preds = %1
  invoke void @_ZN7mjolnir20basic_logger_managerIcSt11char_traitsIcEE18set_default_loggerERKNSt7__cxx1112basic_stringIcS2_SaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %239 unwind label %250

239:                                              ; preds = %238
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  store double 1.000000e-08, ptr %7, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store i64 100, ptr %8, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 352, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2EmRKNS2_IdNS_4math6MatrixIdLm3ELm1EEEEE(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef 100, ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 5000, ptr %11) #7
  invoke void @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC2Em(ptr noundef nonnull align 8 dereferenceable(5000) %11, i64 noundef 123456789)
          to label %240 unwind label %255

240:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #7
  invoke void @_ZNSt25uniform_real_distributionIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %12, double noundef 0.000000e+00, double noundef 1.000000e+00)
          to label %241 unwind label %259

241:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %242

242:                                              ; preds = %694, %241
  %243 = load i64, ptr %13, align 8, !tbaa !11
  %244 = icmp ult i64 %243, 100
  br i1 %244, label %263, label %245

245:                                              ; preds = %242
  store i32 2, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %896

246:                                              ; preds = %1
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %5, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %6, align 4
  br label %254

250:                                              ; preds = %238
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %5, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %254

254:                                              ; preds = %250, %246
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #7
  br label %1489

255:                                              ; preds = %239
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  br label %1488

259:                                              ; preds = %240
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %5, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %6, align 4
  br label %1487

263:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %16, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %264

264:                                              ; preds = %319, %263
  %265 = load i64, ptr %17, align 8, !tbaa !11
  %266 = icmp ult i64 %265, 100
  br i1 %266, label %268, label %267

267:                                              ; preds = %264
  store i32 5, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %335

268:                                              ; preds = %264
  %269 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %270 unwind label %322

270:                                              ; preds = %268
  %271 = fadd double 1.000000e+00, %269
  %272 = load i64, ptr %17, align 8, !tbaa !11
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %272) #7
  store double %271, ptr %273, align 8, !tbaa !9
  %274 = load i64, ptr %17, align 8, !tbaa !11
  %275 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %274) #7
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fdiv double 1.000000e+00, %276
  %278 = load i64, ptr %17, align 8, !tbaa !11
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5rmassEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %278) #7
  store double %277, ptr %279, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  %280 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %281 unwind label %326

281:                                              ; preds = %270
  %282 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %283 unwind label %326

283:                                              ; preds = %281
  %284 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %285 unwind label %326

285:                                              ; preds = %283
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %18, double noundef %280, double noundef %282, double noundef %284) #7
  %286 = load i64, ptr %17, align 8, !tbaa !11
  %287 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %286) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %287, ptr align 8 %18, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  %288 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %289 unwind label %330

289:                                              ; preds = %285
  %290 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %291 unwind label %330

291:                                              ; preds = %289
  %292 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %293 unwind label %330

293:                                              ; preds = %291
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %19, double noundef %288, double noundef %290, double noundef %292) #7
  %294 = load i64, ptr %17, align 8, !tbaa !11
  %295 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %294) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %295, ptr align 8 %19, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %20, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  %296 = load i64, ptr %17, align 8, !tbaa !11
  %297 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5forceEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %296) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %297, ptr align 8 %20, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  %298 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4nameB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef 0) #7
  %299 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %298, ptr noundef @.str.403)
          to label %300 unwind label %322

300:                                              ; preds = %293
  %301 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5groupB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef 0) #7
  %302 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %301, ptr noundef @.str.403)
          to label %303 unwind label %322

303:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  %304 = load i64, ptr %17, align 8, !tbaa !11
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %304) #7
  %306 = load double, ptr %305, align 8, !tbaa !9
  %307 = load i64, ptr %17, align 8, !tbaa !11
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %307) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %21, double noundef %306, ptr noundef nonnull align 8 dereferenceable(24) %308) #7
  %309 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  %310 = load i64, ptr %17, align 8, !tbaa !11
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %310) #7
  %312 = load double, ptr %311, align 8, !tbaa !9
  %313 = fmul double 5.000000e-01, %312
  %314 = load i64, ptr %17, align 8, !tbaa !11
  %315 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %314) #7
  %316 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %315) #7
  %317 = load double, ptr %15, align 8, !tbaa !9
  %318 = call double @llvm.fmuladd.f64(double %313, double %316, double %317)
  store double %318, ptr %15, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %303
  %320 = load i64, ptr %17, align 8, !tbaa !11
  %321 = add i64 %320, 1
  store i64 %321, ptr %17, align 8, !tbaa !11
  br label %264, !llvm.loop !15

322:                                              ; preds = %300, %293, %268
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %5, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %6, align 4
  br label %334

326:                                              ; preds = %283, %281, %270
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %5, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  br label %334

330:                                              ; preds = %291, %289, %285
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %5, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  br label %334

334:                                              ; preds = %330, %326, %322
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %895

335:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 352, ptr %22) #7
  invoke void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(352) %22, ptr noundef nonnull align 8 dereferenceable(352) %9)
          to label %336 unwind label %342

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 3, ptr %23) #7
  invoke void @_ZN7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2Ebbb(ptr noundef nonnull align 1 dereferenceable(3) %23, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %337 unwind label %346

337:                                              ; preds = %336
  call void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3) %23, ptr noundef nonnull align 8 dereferenceable(352) %9) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %24, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store i64 0, ptr %26, align 8, !tbaa !11
  br label %338

338:                                              ; preds = %442, %337
  %339 = load i64, ptr %26, align 8, !tbaa !11
  %340 = icmp ult i64 %339, 100
  br i1 %340, label %350, label %341

341:                                              ; preds = %338
  store i32 8, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %522

342:                                              ; preds = %335
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %5, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %6, align 4
  br label %894

346:                                              ; preds = %336
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %5, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %6, align 4
  br label %893

350:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %351 = load i64, ptr %26, align 8, !tbaa !11
  %352 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %351) #7
  %353 = load double, ptr %352, align 8, !tbaa !9
  store double %353, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #7
  %354 = load i64, ptr %26, align 8, !tbaa !11
  %355 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %354) #7
  call void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %28, ptr noundef nonnull align 8 dereferenceable(24) %355, ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %356 = load i64, ptr %26, align 8, !tbaa !11
  %357 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %356) #7
  store ptr %357, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #7
  %358 = load double, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  %359 = load ptr, ptr %29, align 8, !tbaa !5
  call void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %31, ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(24) %359) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %30, double noundef %358, ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  %360 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #7
  %361 = load double, ptr %27, align 8, !tbaa !9
  %362 = fmul double 5.000000e-01, %361
  %363 = load ptr, ptr %29, align 8, !tbaa !5
  %364 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %363) #7
  %365 = load double, ptr %25, align 8, !tbaa !9
  %366 = call double @llvm.fmuladd.f64(double %362, double %364, double %365)
  store double %366, ptr %25, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %390, %350
  %368 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef @.str.401, i64 noundef 92)
          to label %369 unwind label %445

369:                                              ; preds = %367
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %370 unwind label %445

370:                                              ; preds = %369
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef %32, i64 noundef 306, ptr noundef %33)
          to label %371 unwind label %445

371:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  %372 = load i64, ptr %26, align 8, !tbaa !11
  %373 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %372) #7
  %374 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %373) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %375 unwind label %449

375:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %376 = load i64, ptr %26, align 8, !tbaa !11
  %377 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %22, i64 noundef %376) #7
  %378 = call noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %377) #7
  store double %378, ptr %38, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %35, ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %379 unwind label %453

379:                                              ; preds = %375
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %34, ptr noundef nonnull align 8 dereferenceable(16) %35, i1 noundef zeroext false)
          to label %380 unwind label %453

380:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  %381 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %382 unwind label %457

382:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef @.str.404, i64 noundef 74)
          to label %383 unwind label %461

383:                                              ; preds = %382
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %39, ptr noundef nonnull align 8 dereferenceable(9) %381, ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %384 unwind label %461

384:                                              ; preds = %383
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef @.str.401, i64 noundef 92)
          to label %385 unwind label %465

385:                                              ; preds = %384
  %386 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(9) %39, ptr noundef %41, i64 noundef 306, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %387 unwind label %465

387:                                              ; preds = %385
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #7
  br label %388

388:                                              ; preds = %387
  %389 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %390 unwind label %445

390:                                              ; preds = %388
  br i1 %389, label %367, label %391, !llvm.loop !17

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %415, %391
  %393 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef @.str.401, i64 noundef 92)
          to label %394 unwind label %445

394:                                              ; preds = %392
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %395 unwind label %445

395:                                              ; preds = %394
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %393, ptr noundef %42, i64 noundef 307, ptr noundef %43)
          to label %396 unwind label %445

396:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  %397 = load i64, ptr %26, align 8, !tbaa !11
  %398 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %397) #7
  %399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %398) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %46, ptr noundef nonnull align 1 dereferenceable(1) %47, ptr noundef nonnull align 8 dereferenceable(8) %399)
          to label %400 unwind label %473

400:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %401 = load i64, ptr %26, align 8, !tbaa !11
  %402 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %22, i64 noundef %401) #7
  %403 = call noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %402) #7
  store double %403, ptr %48, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %45, ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %404 unwind label %477

404:                                              ; preds = %400
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %44, ptr noundef nonnull align 8 dereferenceable(16) %45, i1 noundef zeroext false)
          to label %405 unwind label %477

405:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #7
  %406 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %407 unwind label %481

407:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef @.str.405, i64 noundef 74)
          to label %408 unwind label %485

408:                                              ; preds = %407
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %49, ptr noundef nonnull align 8 dereferenceable(9) %406, ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %409 unwind label %485

409:                                              ; preds = %408
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef @.str.401, i64 noundef 92)
          to label %410 unwind label %489

410:                                              ; preds = %409
  %411 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(9) %49, ptr noundef %51, i64 noundef 307, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %412 unwind label %489

412:                                              ; preds = %410
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  br label %413

413:                                              ; preds = %412
  %414 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %415 unwind label %445

415:                                              ; preds = %413
  br i1 %414, label %392, label %416, !llvm.loop !18

416:                                              ; preds = %415
  br label %417

417:                                              ; preds = %440, %416
  %418 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef @.str.401, i64 noundef 92)
          to label %419 unwind label %445

419:                                              ; preds = %417
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %420 unwind label %445

420:                                              ; preds = %419
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %418, ptr noundef %52, i64 noundef 308, ptr noundef %53)
          to label %421 unwind label %445

421:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  %422 = load i64, ptr %26, align 8, !tbaa !11
  %423 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %422) #7
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %423) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %56, ptr noundef nonnull align 1 dereferenceable(1) %57, ptr noundef nonnull align 8 dereferenceable(8) %424)
          to label %425 unwind label %497

425:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %426 = load i64, ptr %26, align 8, !tbaa !11
  %427 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %22, i64 noundef %426) #7
  %428 = call noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %427) #7
  store double %428, ptr %58, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %55, ptr noundef nonnull align 1 dereferenceable(1) %56, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %429 unwind label %501

429:                                              ; preds = %425
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %55, i1 noundef zeroext false)
          to label %430 unwind label %501

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #7
  %431 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %432 unwind label %505

432:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %60, ptr noundef @.str.406, i64 noundef 74)
          to label %433 unwind label %509

433:                                              ; preds = %432
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %59, ptr noundef nonnull align 8 dereferenceable(9) %431, ptr noundef nonnull align 8 dereferenceable(16) %60)
          to label %434 unwind label %509

434:                                              ; preds = %433
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef @.str.401, i64 noundef 92)
          to label %435 unwind label %513

435:                                              ; preds = %434
  %436 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(9) %59, ptr noundef %61, i64 noundef 308, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %437 unwind label %513

437:                                              ; preds = %435
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #7
  br label %438

438:                                              ; preds = %437
  %439 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %440 unwind label %445

440:                                              ; preds = %438
  br i1 %439, label %417, label %441, !llvm.loop !19

441:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %442

442:                                              ; preds = %441
  %443 = load i64, ptr %26, align 8, !tbaa !11
  %444 = add i64 %443, 1
  store i64 %444, ptr %26, align 8, !tbaa !11
  br label %338, !llvm.loop !20

445:                                              ; preds = %438, %420, %419, %417, %413, %395, %394, %392, %388, %370, %369, %367
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %5, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %6, align 4
  br label %521

449:                                              ; preds = %371
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %5, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %6, align 4
  br label %472

453:                                              ; preds = %379, %375
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %5, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %6, align 4
  br label %471

457:                                              ; preds = %380
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %5, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %6, align 4
  br label %470

461:                                              ; preds = %383, %382
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %5, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %6, align 4
  br label %469

465:                                              ; preds = %385, %384
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %5, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %469

469:                                              ; preds = %465, %461
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  br label %470

470:                                              ; preds = %469, %457
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  br label %471

471:                                              ; preds = %470, %453
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %472

472:                                              ; preds = %471, %449
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #7
  br label %521

473:                                              ; preds = %396
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %5, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %6, align 4
  br label %496

477:                                              ; preds = %404, %400
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %5, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %6, align 4
  br label %495

481:                                              ; preds = %405
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %5, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %6, align 4
  br label %494

485:                                              ; preds = %408, %407
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %5, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %6, align 4
  br label %493

489:                                              ; preds = %410, %409
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %5, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #7
  br label %493

493:                                              ; preds = %489, %485
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %494

494:                                              ; preds = %493, %481
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  br label %495

495:                                              ; preds = %494, %477
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %496

496:                                              ; preds = %495, %473
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #7
  br label %521

497:                                              ; preds = %421
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %5, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %6, align 4
  br label %520

501:                                              ; preds = %429, %425
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %5, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %6, align 4
  br label %519

505:                                              ; preds = %430
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %5, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %6, align 4
  br label %518

509:                                              ; preds = %433, %432
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %5, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %6, align 4
  br label %517

513:                                              ; preds = %435, %434
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %5, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  br label %517

517:                                              ; preds = %513, %509
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #7
  br label %518

518:                                              ; preds = %517, %505
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  br label %519

519:                                              ; preds = %518, %501
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %520

520:                                              ; preds = %519, %497
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #7
  br label %521

521:                                              ; preds = %520, %496, %472, %445
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %892

522:                                              ; preds = %341
  br label %523

523:                                              ; preds = %564, %522
  %524 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef @.str.401, i64 noundef 92)
          to label %525 unwind label %697

525:                                              ; preds = %523
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %526 unwind label %697

526:                                              ; preds = %525
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef %62, i64 noundef 311, ptr noundef %63)
          to label %527 unwind label %697

527:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 24, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #7
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %68, ptr noundef nonnull align 1 dereferenceable(1) %69, ptr noundef nonnull align 8 dereferenceable(8) %528)
          to label %529 unwind label %701

529:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  store double 0.000000e+00, ptr %70, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %530 unwind label %705

530:                                              ; preds = %529
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %66, ptr noundef nonnull align 8 dereferenceable(16) %67)
          to label %531 unwind label %705

531:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %532 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %533 unwind label %709

533:                                              ; preds = %531
  %534 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %71, i32 0, i32 0
  store double %532, ptr %534, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %65, ptr noundef nonnull align 8 dereferenceable(33) %66, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %535 unwind label %709

535:                                              ; preds = %533
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %64, ptr noundef nonnull align 8 dereferenceable(33) %65)
          to label %536 unwind label %713

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #7
  %537 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %538 unwind label %717

538:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef @.str.410, i64 noundef 33)
          to label %539 unwind label %721

539:                                              ; preds = %538
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %72, ptr noundef nonnull align 8 dereferenceable(9) %537, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %540 unwind label %721

540:                                              ; preds = %539
  %541 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %542 unwind label %725

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %543 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %544 unwind label %729

544:                                              ; preds = %542
  %545 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %74, i32 0, i32 0
  store double %543, ptr %545, align 8
  %546 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %541, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %547 unwind label %729

547:                                              ; preds = %544
  %548 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %72, ptr noundef nonnull align 8 dereferenceable(9) %546)
          to label %549 unwind label %729

549:                                              ; preds = %547
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef @.str.401, i64 noundef 92)
          to label %550 unwind label %729

550:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %77, i32 noundef 1)
          to label %551 unwind label %733

551:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %552 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %553 unwind label %737

553:                                              ; preds = %551
  %554 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %78, i32 0, i32 0
  store double %552, ptr %554, align 8
  %555 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %77, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %556 unwind label %737

556:                                              ; preds = %553
  %557 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %76, i32 0, i32 0
  store i32 %555, ptr %557, align 4
  %558 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %559 unwind label %737

559:                                              ; preds = %556
  %560 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 8 dereferenceable(9) %548, ptr noundef %75, i64 noundef 311, i32 noundef 1, i32 noundef %558, i64 noundef 0)
          to label %561 unwind label %737

561:                                              ; preds = %559
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #7
  br label %562

562:                                              ; preds = %561
  %563 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %564 unwind label %697

564:                                              ; preds = %562
  br i1 %563, label %523, label %565, !llvm.loop !21

565:                                              ; preds = %564
  br label %566

566:                                              ; preds = %607, %565
  %567 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef @.str.401, i64 noundef 92)
          to label %568 unwind label %697

568:                                              ; preds = %566
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80)
          to label %569 unwind label %697

569:                                              ; preds = %568
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef %79, i64 noundef 312, ptr noundef %80)
          to label %570 unwind label %697

570:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %82) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #7
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %85, ptr noundef nonnull align 1 dereferenceable(1) %86, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %572 unwind label %750

572:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  store double 0.000000e+00, ptr %87, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %84, ptr noundef nonnull align 1 dereferenceable(1) %85, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %573 unwind label %754

573:                                              ; preds = %572
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %83, ptr noundef nonnull align 8 dereferenceable(16) %84)
          to label %574 unwind label %754

574:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %575 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %576 unwind label %758

576:                                              ; preds = %574
  %577 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %88, i32 0, i32 0
  store double %575, ptr %577, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %82, ptr noundef nonnull align 8 dereferenceable(33) %83, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %578 unwind label %758

578:                                              ; preds = %576
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %81, ptr noundef nonnull align 8 dereferenceable(33) %82)
          to label %579 unwind label %762

579:                                              ; preds = %578
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #7
  %580 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %581 unwind label %766

581:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %90, ptr noundef @.str.411, i64 noundef 33)
          to label %582 unwind label %770

582:                                              ; preds = %581
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %89, ptr noundef nonnull align 8 dereferenceable(9) %580, ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %583 unwind label %770

583:                                              ; preds = %582
  %584 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %585 unwind label %774

585:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %586 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %587 unwind label %778

587:                                              ; preds = %585
  %588 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %91, i32 0, i32 0
  store double %586, ptr %588, align 8
  %589 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %584, ptr noundef nonnull align 8 dereferenceable(8) %91)
          to label %590 unwind label %778

590:                                              ; preds = %587
  %591 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %89, ptr noundef nonnull align 8 dereferenceable(9) %589)
          to label %592 unwind label %778

592:                                              ; preds = %590
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef @.str.401, i64 noundef 92)
          to label %593 unwind label %778

593:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %94, i32 noundef 1)
          to label %594 unwind label %782

594:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %595 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %596 unwind label %786

596:                                              ; preds = %594
  %597 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %95, i32 0, i32 0
  store double %595, ptr %597, align 8
  %598 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %94, ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %599 unwind label %786

599:                                              ; preds = %596
  %600 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %93, i32 0, i32 0
  store i32 %598, ptr %600, align 4
  %601 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %93)
          to label %602 unwind label %786

602:                                              ; preds = %599
  %603 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(9) %591, ptr noundef %92, i64 noundef 312, i32 noundef 1, i32 noundef %601, i64 noundef 0)
          to label %604 unwind label %786

604:                                              ; preds = %602
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #7
  br label %605

605:                                              ; preds = %604
  %606 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %607 unwind label %697

607:                                              ; preds = %605
  br i1 %606, label %566, label %608, !llvm.loop !22

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %650, %608
  %610 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef @.str.401, i64 noundef 92)
          to label %611 unwind label %697

611:                                              ; preds = %609
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97)
          to label %612 unwind label %697

612:                                              ; preds = %611
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef %96, i64 noundef 313, ptr noundef %97)
          to label %613 unwind label %697

613:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %100) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #7
  %614 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %102, ptr noundef nonnull align 1 dereferenceable(1) %103, ptr noundef nonnull align 8 dereferenceable(8) %614)
          to label %615 unwind label %799

615:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  store double 0.000000e+00, ptr %104, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %101, ptr noundef nonnull align 1 dereferenceable(1) %102, ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %616 unwind label %803

616:                                              ; preds = %615
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %100, ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %617 unwind label %803

617:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %618 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %619 unwind label %807

619:                                              ; preds = %617
  %620 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %105, i32 0, i32 0
  store double %618, ptr %620, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %99, ptr noundef nonnull align 8 dereferenceable(33) %100, ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %621 unwind label %807

621:                                              ; preds = %619
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %98, ptr noundef nonnull align 8 dereferenceable(33) %99)
          to label %622 unwind label %811

622:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #7
  %623 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %624 unwind label %815

624:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %107, ptr noundef @.str.412, i64 noundef 33)
          to label %625 unwind label %819

625:                                              ; preds = %624
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %106, ptr noundef nonnull align 8 dereferenceable(9) %623, ptr noundef nonnull align 8 dereferenceable(16) %107)
          to label %626 unwind label %819

626:                                              ; preds = %625
  %627 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %628 unwind label %823

628:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #7
  %629 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %630 unwind label %827

630:                                              ; preds = %628
  %631 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %108, i32 0, i32 0
  store double %629, ptr %631, align 8
  %632 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %627, ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %633 unwind label %827

633:                                              ; preds = %630
  %634 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %106, ptr noundef nonnull align 8 dereferenceable(9) %632)
          to label %635 unwind label %827

635:                                              ; preds = %633
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef @.str.401, i64 noundef 92)
          to label %636 unwind label %827

636:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %111, i32 noundef 1)
          to label %637 unwind label %831

637:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #7
  %638 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %639 unwind label %835

639:                                              ; preds = %637
  %640 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %112, i32 0, i32 0
  store double %638, ptr %640, align 8
  %641 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %111, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %642 unwind label %835

642:                                              ; preds = %639
  %643 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %110, i32 0, i32 0
  store i32 %641, ptr %643, align 4
  %644 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %110)
          to label %645 unwind label %835

645:                                              ; preds = %642
  %646 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(9) %634, ptr noundef %109, i64 noundef 313, i32 noundef 1, i32 noundef %644, i64 noundef 0)
          to label %647 unwind label %835

647:                                              ; preds = %645
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %100) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #7
  br label %648

648:                                              ; preds = %647
  %649 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %650 unwind label %697

650:                                              ; preds = %648
  br i1 %649, label %609, label %651, !llvm.loop !23

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %692, %651
  %653 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %113, ptr noundef @.str.401, i64 noundef 92)
          to label %654 unwind label %697

654:                                              ; preds = %652
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114)
          to label %655 unwind label %697

655:                                              ; preds = %654
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef %113, i64 noundef 316, ptr noundef %114)
          to label %656 unwind label %697

656:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %116) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %117) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %119, ptr noundef nonnull align 1 dereferenceable(1) %120, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %657 unwind label %848

657:                                              ; preds = %656
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIS4_EENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr.345") align 8 %118, ptr noundef nonnull align 1 dereferenceable(1) %119, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %658 unwind label %848

658:                                              ; preds = %657
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8 %117, ptr noundef nonnull align 8 dereferenceable(16) %118)
          to label %659 unwind label %848

659:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #7
  %660 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %661 unwind label %852

661:                                              ; preds = %659
  %662 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %121, i32 0, i32 0
  store double %660, ptr %662, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8 %116, ptr noundef nonnull align 8 dereferenceable(33) %117, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %663 unwind label %852

663:                                              ; preds = %661
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %115, ptr noundef nonnull align 8 dereferenceable(33) %116)
          to label %664 unwind label %856

664:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #7
  %665 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %666 unwind label %860

666:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %123, ptr noundef @.str.413, i64 noundef 31)
          to label %667 unwind label %864

667:                                              ; preds = %666
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %122, ptr noundef nonnull align 8 dereferenceable(9) %665, ptr noundef nonnull align 8 dereferenceable(16) %123)
          to label %668 unwind label %864

668:                                              ; preds = %667
  %669 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %670 unwind label %868

670:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #7
  %671 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %672 unwind label %872

672:                                              ; preds = %670
  %673 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %124, i32 0, i32 0
  store double %671, ptr %673, align 8
  %674 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %669, ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %675 unwind label %872

675:                                              ; preds = %672
  %676 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %122, ptr noundef nonnull align 8 dereferenceable(9) %674)
          to label %677 unwind label %872

677:                                              ; preds = %675
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %125, ptr noundef @.str.401, i64 noundef 92)
          to label %678 unwind label %872

678:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %127, i32 noundef 1)
          to label %679 unwind label %876

679:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #7
  %680 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %681 unwind label %880

681:                                              ; preds = %679
  %682 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %128, i32 0, i32 0
  store double %680, ptr %682, align 8
  %683 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %127, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %684 unwind label %880

684:                                              ; preds = %681
  %685 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %126, i32 0, i32 0
  store i32 %683, ptr %685, align 4
  %686 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %126)
          to label %687 unwind label %880

687:                                              ; preds = %684
  %688 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(9) %676, ptr noundef %125, i64 noundef 316, i32 noundef 1, i32 noundef %686, i64 noundef 0)
          to label %689 unwind label %880

689:                                              ; preds = %687
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %116) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %117) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #7
  br label %690

690:                                              ; preds = %689
  %691 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %692 unwind label %697

692:                                              ; preds = %690
  br i1 %691, label %652, label %693, !llvm.loop !24

693:                                              ; preds = %692
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 3, ptr %23) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %22) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %694

694:                                              ; preds = %693
  %695 = load i64, ptr %13, align 8, !tbaa !11
  %696 = add i64 %695, 1
  store i64 %696, ptr %13, align 8, !tbaa !11
  br label %242, !llvm.loop !25

697:                                              ; preds = %690, %655, %654, %652, %648, %612, %611, %609, %605, %569, %568, %566, %562, %526, %525, %523
  %698 = landingpad { ptr, i32 }
          cleanup
  %699 = extractvalue { ptr, i32 } %698, 0
  store ptr %699, ptr %5, align 8
  %700 = extractvalue { ptr, i32 } %698, 1
  store i32 %700, ptr %6, align 4
  br label %892

701:                                              ; preds = %527
  %702 = landingpad { ptr, i32 }
          cleanup
  %703 = extractvalue { ptr, i32 } %702, 0
  store ptr %703, ptr %5, align 8
  %704 = extractvalue { ptr, i32 } %702, 1
  store i32 %704, ptr %6, align 4
  br label %749

705:                                              ; preds = %530, %529
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %5, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %6, align 4
  br label %748

709:                                              ; preds = %533, %531
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %5, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %6, align 4
  br label %747

713:                                              ; preds = %535
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %5, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %6, align 4
  br label %746

717:                                              ; preds = %536
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %5, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %6, align 4
  br label %745

721:                                              ; preds = %539, %538
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %5, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %6, align 4
  br label %744

725:                                              ; preds = %540
  %726 = landingpad { ptr, i32 }
          cleanup
  %727 = extractvalue { ptr, i32 } %726, 0
  store ptr %727, ptr %5, align 8
  %728 = extractvalue { ptr, i32 } %726, 1
  store i32 %728, ptr %6, align 4
  br label %743

729:                                              ; preds = %549, %547, %544, %542
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %5, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %6, align 4
  br label %742

733:                                              ; preds = %550
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %5, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %6, align 4
  br label %741

737:                                              ; preds = %559, %556, %553, %551
  %738 = landingpad { ptr, i32 }
          cleanup
  %739 = extractvalue { ptr, i32 } %738, 0
  store ptr %739, ptr %5, align 8
  %740 = extractvalue { ptr, i32 } %738, 1
  store i32 %740, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %741

741:                                              ; preds = %737, %733
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %742

742:                                              ; preds = %741, %729
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %743

743:                                              ; preds = %742, %725
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #7
  br label %744

744:                                              ; preds = %743, %721
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  br label %745

745:                                              ; preds = %744, %717
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %64) #7
  br label %746

746:                                              ; preds = %745, %713
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %65) #7
  br label %747

747:                                              ; preds = %746, %709
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %66) #7
  br label %748

748:                                              ; preds = %747, %705
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %749

749:                                              ; preds = %748, %701
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %64) #7
  br label %892

750:                                              ; preds = %570
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %5, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %6, align 4
  br label %798

754:                                              ; preds = %573, %572
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %5, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %6, align 4
  br label %797

758:                                              ; preds = %576, %574
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %5, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %6, align 4
  br label %796

762:                                              ; preds = %578
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %5, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %6, align 4
  br label %795

766:                                              ; preds = %579
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %5, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %6, align 4
  br label %794

770:                                              ; preds = %582, %581
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %5, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %6, align 4
  br label %793

774:                                              ; preds = %583
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %5, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %6, align 4
  br label %792

778:                                              ; preds = %592, %590, %587, %585
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %5, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %6, align 4
  br label %791

782:                                              ; preds = %593
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %5, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %6, align 4
  br label %790

786:                                              ; preds = %602, %599, %596, %594
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %5, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  br label %790

790:                                              ; preds = %786, %782
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  br label %791

791:                                              ; preds = %790, %778
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  br label %792

792:                                              ; preds = %791, %774
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #7
  br label %793

793:                                              ; preds = %792, %770
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #7
  br label %794

794:                                              ; preds = %793, %766
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #7
  br label %795

795:                                              ; preds = %794, %762
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %82) #7
  br label %796

796:                                              ; preds = %795, %758
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %83) #7
  br label %797

797:                                              ; preds = %796, %754
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  br label %798

798:                                              ; preds = %797, %750
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #7
  br label %892

799:                                              ; preds = %613
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %5, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %6, align 4
  br label %847

803:                                              ; preds = %616, %615
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %5, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %6, align 4
  br label %846

807:                                              ; preds = %619, %617
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %5, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %6, align 4
  br label %845

811:                                              ; preds = %621
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %5, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %6, align 4
  br label %844

815:                                              ; preds = %622
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %5, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %6, align 4
  br label %843

819:                                              ; preds = %625, %624
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %5, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %6, align 4
  br label %842

823:                                              ; preds = %626
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %5, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %6, align 4
  br label %841

827:                                              ; preds = %635, %633, %630, %628
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %5, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %6, align 4
  br label %840

831:                                              ; preds = %636
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %5, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %6, align 4
  br label %839

835:                                              ; preds = %645, %642, %639, %637
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %5, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #7
  br label %839

839:                                              ; preds = %835, %831
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  br label %840

840:                                              ; preds = %839, %827
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #7
  br label %841

841:                                              ; preds = %840, %823
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #7
  br label %842

842:                                              ; preds = %841, %819
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #7
  br label %843

843:                                              ; preds = %842, %815
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  br label %844

844:                                              ; preds = %843, %811
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %99) #7
  br label %845

845:                                              ; preds = %844, %807
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %100) #7
  br label %846

846:                                              ; preds = %845, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  br label %847

847:                                              ; preds = %846, %799
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #7
  br label %892

848:                                              ; preds = %658, %657, %656
  %849 = landingpad { ptr, i32 }
          cleanup
  %850 = extractvalue { ptr, i32 } %849, 0
  store ptr %850, ptr %5, align 8
  %851 = extractvalue { ptr, i32 } %849, 1
  store i32 %851, ptr %6, align 4
  br label %891

852:                                              ; preds = %661, %659
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %5, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %6, align 4
  br label %890

856:                                              ; preds = %663
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %5, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %6, align 4
  br label %889

860:                                              ; preds = %664
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %5, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %6, align 4
  br label %888

864:                                              ; preds = %667, %666
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %5, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %6, align 4
  br label %887

868:                                              ; preds = %668
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %5, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %6, align 4
  br label %886

872:                                              ; preds = %677, %675, %672, %670
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %5, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %6, align 4
  br label %885

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

880:                                              ; preds = %687, %684, %681, %679
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %5, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #7
  br label %884

884:                                              ; preds = %880, %876
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #7
  br label %885

885:                                              ; preds = %884, %872
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #7
  br label %886

886:                                              ; preds = %885, %868
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #7
  br label %887

887:                                              ; preds = %886, %864
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #7
  br label %888

888:                                              ; preds = %887, %860
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  br label %889

889:                                              ; preds = %888, %856
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %116) #7
  br label %890

890:                                              ; preds = %889, %852
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %117) #7
  br label %891

891:                                              ; preds = %890, %848
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #7
  br label %892

892:                                              ; preds = %891, %847, %798, %749, %697, %521
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  br label %893

893:                                              ; preds = %892, %346
  call void @llvm.lifetime.end.p0(i64 3, ptr %23) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %22) #7
  br label %894

894:                                              ; preds = %893, %342
  call void @llvm.lifetime.end.p0(i64 352, ptr %22) #7
  br label %895

895:                                              ; preds = %894, %334
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %1487

896:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #7
  store i64 0, ptr %129, align 8, !tbaa !11
  br label %897

897:                                              ; preds = %1309, %896
  %898 = load i64, ptr %129, align 8, !tbaa !11
  %899 = icmp ult i64 %898, 100
  br i1 %899, label %901, label %900

900:                                              ; preds = %897
  store i32 25, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #7
  br label %1486

901:                                              ; preds = %897
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #7
  store double 0.000000e+00, ptr %130, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %131) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %131, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #7
  store i64 0, ptr %132, align 8, !tbaa !11
  br label %902

902:                                              ; preds = %957, %901
  %903 = load i64, ptr %132, align 8, !tbaa !11
  %904 = icmp ult i64 %903, 100
  br i1 %904, label %906, label %905

905:                                              ; preds = %902
  store i32 28, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #7
  br label %973

906:                                              ; preds = %902
  %907 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %908 unwind label %960

908:                                              ; preds = %906
  %909 = fadd double 1.000000e+00, %907
  %910 = load i64, ptr %132, align 8, !tbaa !11
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %910) #7
  store double %909, ptr %911, align 8, !tbaa !9
  %912 = load i64, ptr %132, align 8, !tbaa !11
  %913 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %912) #7
  %914 = load double, ptr %913, align 8, !tbaa !9
  %915 = fdiv double 1.000000e+00, %914
  %916 = load i64, ptr %132, align 8, !tbaa !11
  %917 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5rmassEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %916) #7
  store double %915, ptr %917, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %133) #7
  %918 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %919 unwind label %964

919:                                              ; preds = %908
  %920 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %921 unwind label %964

921:                                              ; preds = %919
  %922 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %923 unwind label %964

923:                                              ; preds = %921
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %133, double noundef %918, double noundef %920, double noundef %922) #7
  %924 = load i64, ptr %132, align 8, !tbaa !11
  %925 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %924) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %925, ptr align 8 %133, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %133) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %134) #7
  %926 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %927 unwind label %968

927:                                              ; preds = %923
  %928 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %929 unwind label %968

929:                                              ; preds = %927
  %930 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(5000) %11)
          to label %931 unwind label %968

931:                                              ; preds = %929
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %134, double noundef %926, double noundef %928, double noundef %930) #7
  %932 = load i64, ptr %132, align 8, !tbaa !11
  %933 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %932) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %933, ptr align 8 %134, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %134) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %135) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %135, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  %934 = load i64, ptr %132, align 8, !tbaa !11
  %935 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5forceEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %934) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %935, ptr align 8 %135, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #7
  %936 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4nameB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef 0) #7
  %937 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %936, ptr noundef @.str.403)
          to label %938 unwind label %960

938:                                              ; preds = %931
  %939 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5groupB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef 0) #7
  %940 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %939, ptr noundef @.str.403)
          to label %941 unwind label %960

941:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 24, ptr %136) #7
  %942 = load i64, ptr %132, align 8, !tbaa !11
  %943 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %942) #7
  %944 = load double, ptr %943, align 8, !tbaa !9
  %945 = load i64, ptr %132, align 8, !tbaa !11
  %946 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %945) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %136, double noundef %944, ptr noundef nonnull align 8 dereferenceable(24) %946) #7
  %947 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %131, ptr noundef nonnull align 8 dereferenceable(24) %136) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #7
  %948 = load i64, ptr %132, align 8, !tbaa !11
  %949 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %948) #7
  %950 = load double, ptr %949, align 8, !tbaa !9
  %951 = fmul double 5.000000e-01, %950
  %952 = load i64, ptr %132, align 8, !tbaa !11
  %953 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %952) #7
  %954 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %953) #7
  %955 = load double, ptr %130, align 8, !tbaa !9
  %956 = call double @llvm.fmuladd.f64(double %951, double %954, double %955)
  store double %956, ptr %130, align 8, !tbaa !9
  br label %957

957:                                              ; preds = %941
  %958 = load i64, ptr %132, align 8, !tbaa !11
  %959 = add i64 %958, 1
  store i64 %959, ptr %132, align 8, !tbaa !11
  br label %902, !llvm.loop !26

960:                                              ; preds = %938, %931, %906
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %5, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %6, align 4
  br label %972

964:                                              ; preds = %921, %919, %908
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %5, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %133) #7
  br label %972

968:                                              ; preds = %929, %927, %923
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %5, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %134) #7
  br label %972

972:                                              ; preds = %968, %964, %960
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #7
  br label %1485

973:                                              ; preds = %905
  call void @llvm.lifetime.start.p0(i64 352, ptr %137) #7
  invoke void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef nonnull align 8 dereferenceable(352) %9)
          to label %974 unwind label %980

974:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 3, ptr %138) #7
  invoke void @_ZN7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2Ebbb(ptr noundef nonnull align 1 dereferenceable(3) %138, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %975 unwind label %984

975:                                              ; preds = %974
  call void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3) %138, ptr noundef nonnull align 8 dereferenceable(352) %9) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %139) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %139, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #7
  store double 0.000000e+00, ptr %140, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #7
  store i64 0, ptr %141, align 8, !tbaa !11
  br label %976

976:                                              ; preds = %1080, %975
  %977 = load i64, ptr %141, align 8, !tbaa !11
  %978 = icmp ult i64 %977, 100
  br i1 %978, label %988, label %979

979:                                              ; preds = %976
  store i32 31, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  br label %1160

980:                                              ; preds = %973
  %981 = landingpad { ptr, i32 }
          cleanup
  %982 = extractvalue { ptr, i32 } %981, 0
  store ptr %982, ptr %5, align 8
  %983 = extractvalue { ptr, i32 } %981, 1
  store i32 %983, ptr %6, align 4
  br label %1484

984:                                              ; preds = %974
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %5, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %6, align 4
  br label %1483

988:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #7
  %989 = load i64, ptr %141, align 8, !tbaa !11
  %990 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %989) #7
  %991 = load double, ptr %990, align 8, !tbaa !9
  store double %991, ptr %142, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %143) #7
  %992 = load i64, ptr %141, align 8, !tbaa !11
  %993 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %992) #7
  call void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %143, ptr noundef nonnull align 8 dereferenceable(24) %993, ptr noundef nonnull align 8 dereferenceable(24) %131) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #7
  %994 = load i64, ptr %141, align 8, !tbaa !11
  %995 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %994) #7
  store ptr %995, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %145) #7
  %996 = load double, ptr %142, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %146) #7
  %997 = load ptr, ptr %144, align 8, !tbaa !5
  call void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %146, ptr noundef nonnull align 8 dereferenceable(24) %143, ptr noundef nonnull align 8 dereferenceable(24) %997) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind writable sret(%"class.mjolnir::math::Matrix.334") align 8 %145, double noundef %996, ptr noundef nonnull align 8 dereferenceable(24) %146) #7
  %998 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 8 dereferenceable(24) %145) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %145) #7
  %999 = load double, ptr %142, align 8, !tbaa !9
  %1000 = fmul double 5.000000e-01, %999
  %1001 = load ptr, ptr %144, align 8, !tbaa !5
  %1002 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1001) #7
  %1003 = load double, ptr %140, align 8, !tbaa !9
  %1004 = call double @llvm.fmuladd.f64(double %1000, double %1002, double %1003)
  store double %1004, ptr %140, align 8, !tbaa !9
  br label %1005

1005:                                             ; preds = %1028, %988
  %1006 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %147, ptr noundef @.str.401, i64 noundef 92)
          to label %1007 unwind label %1083

1007:                                             ; preds = %1005
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %148)
          to label %1008 unwind label %1083

1008:                                             ; preds = %1007
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1006, ptr noundef %147, i64 noundef 354, ptr noundef %148)
          to label %1009 unwind label %1083

1009:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 24, ptr %149) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %150) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #7
  %1010 = load i64, ptr %141, align 8, !tbaa !11
  %1011 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %1010) #7
  %1012 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1011) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %151, ptr noundef nonnull align 1 dereferenceable(1) %152, ptr noundef nonnull align 8 dereferenceable(8) %1012)
          to label %1013 unwind label %1087

1013:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #7
  %1014 = load i64, ptr %141, align 8, !tbaa !11
  %1015 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %137, i64 noundef %1014) #7
  %1016 = call noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1015) #7
  store double %1016, ptr %153, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %150, ptr noundef nonnull align 1 dereferenceable(1) %151, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %1017 unwind label %1091

1017:                                             ; preds = %1013
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %149, ptr noundef nonnull align 8 dereferenceable(16) %150, i1 noundef zeroext false)
          to label %1018 unwind label %1091

1018:                                             ; preds = %1017
  call void @llvm.lifetime.start.p0(i64 32, ptr %154) #7
  %1019 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1020 unwind label %1095

1020:                                             ; preds = %1018
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %155, ptr noundef @.str.404, i64 noundef 74)
          to label %1021 unwind label %1099

1021:                                             ; preds = %1020
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %154, ptr noundef nonnull align 8 dereferenceable(9) %1019, ptr noundef nonnull align 8 dereferenceable(16) %155)
          to label %1022 unwind label %1099

1022:                                             ; preds = %1021
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %156, ptr noundef @.str.401, i64 noundef 92)
          to label %1023 unwind label %1103

1023:                                             ; preds = %1022
  %1024 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %149, ptr noundef nonnull align 8 dereferenceable(9) %154, ptr noundef %156, i64 noundef 354, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %1025 unwind label %1103

1025:                                             ; preds = %1023
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %149) #7
  br label %1026

1026:                                             ; preds = %1025
  %1027 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1028 unwind label %1083

1028:                                             ; preds = %1026
  br i1 %1027, label %1005, label %1029, !llvm.loop !27

1029:                                             ; preds = %1028
  br label %1030

1030:                                             ; preds = %1053, %1029
  %1031 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %157, ptr noundef @.str.401, i64 noundef 92)
          to label %1032 unwind label %1083

1032:                                             ; preds = %1030
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %1033 unwind label %1083

1033:                                             ; preds = %1032
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1031, ptr noundef %157, i64 noundef 355, ptr noundef %158)
          to label %1034 unwind label %1083

1034:                                             ; preds = %1033
  call void @llvm.lifetime.start.p0(i64 24, ptr %159) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %162) #7
  %1035 = load i64, ptr %141, align 8, !tbaa !11
  %1036 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %1035) #7
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1036) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %161, ptr noundef nonnull align 1 dereferenceable(1) %162, ptr noundef nonnull align 8 dereferenceable(8) %1037)
          to label %1038 unwind label %1111

1038:                                             ; preds = %1034
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #7
  %1039 = load i64, ptr %141, align 8, !tbaa !11
  %1040 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %137, i64 noundef %1039) #7
  %1041 = call noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1040) #7
  store double %1041, ptr %163, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %160, ptr noundef nonnull align 1 dereferenceable(1) %161, ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %1042 unwind label %1115

1042:                                             ; preds = %1038
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %159, ptr noundef nonnull align 8 dereferenceable(16) %160, i1 noundef zeroext false)
          to label %1043 unwind label %1115

1043:                                             ; preds = %1042
  call void @llvm.lifetime.start.p0(i64 32, ptr %164) #7
  %1044 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1045 unwind label %1119

1045:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef @.str.405, i64 noundef 74)
          to label %1046 unwind label %1123

1046:                                             ; preds = %1045
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %164, ptr noundef nonnull align 8 dereferenceable(9) %1044, ptr noundef nonnull align 8 dereferenceable(16) %165)
          to label %1047 unwind label %1123

1047:                                             ; preds = %1046
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %166, ptr noundef @.str.401, i64 noundef 92)
          to label %1048 unwind label %1127

1048:                                             ; preds = %1047
  %1049 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 8 dereferenceable(9) %164, ptr noundef %166, i64 noundef 355, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %1050 unwind label %1127

1050:                                             ; preds = %1048
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %159) #7
  br label %1051

1051:                                             ; preds = %1050
  %1052 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1053 unwind label %1083

1053:                                             ; preds = %1051
  br i1 %1052, label %1030, label %1054, !llvm.loop !28

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1078, %1054
  %1056 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %167, ptr noundef @.str.401, i64 noundef 92)
          to label %1057 unwind label %1083

1057:                                             ; preds = %1055
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %168)
          to label %1058 unwind label %1083

1058:                                             ; preds = %1057
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef %167, i64 noundef 356, ptr noundef %168)
          to label %1059 unwind label %1083

1059:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 24, ptr %169) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %172) #7
  %1060 = load i64, ptr %141, align 8, !tbaa !11
  %1061 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %9, i64 noundef %1060) #7
  %1062 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1061) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %171, ptr noundef nonnull align 1 dereferenceable(1) %172, ptr noundef nonnull align 8 dereferenceable(8) %1062)
          to label %1063 unwind label %1135

1063:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #7
  %1064 = load i64, ptr %141, align 8, !tbaa !11
  %1065 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %137, i64 noundef %1064) #7
  %1066 = call noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %1065) #7
  store double %1066, ptr %173, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %170, ptr noundef nonnull align 1 dereferenceable(1) %171, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %1067 unwind label %1139

1067:                                             ; preds = %1063
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %169, ptr noundef nonnull align 8 dereferenceable(16) %170, i1 noundef zeroext false)
          to label %1068 unwind label %1139

1068:                                             ; preds = %1067
  call void @llvm.lifetime.start.p0(i64 32, ptr %174) #7
  %1069 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1070 unwind label %1143

1070:                                             ; preds = %1068
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef @.str.406, i64 noundef 74)
          to label %1071 unwind label %1147

1071:                                             ; preds = %1070
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %174, ptr noundef nonnull align 8 dereferenceable(9) %1069, ptr noundef nonnull align 8 dereferenceable(16) %175)
          to label %1072 unwind label %1147

1072:                                             ; preds = %1071
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef @.str.401, i64 noundef 92)
          to label %1073 unwind label %1151

1073:                                             ; preds = %1072
  %1074 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %169, ptr noundef nonnull align 8 dereferenceable(9) %174, ptr noundef %176, i64 noundef 356, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %1075 unwind label %1151

1075:                                             ; preds = %1073
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %169) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %172) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %169) #7
  br label %1076

1076:                                             ; preds = %1075
  %1077 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1078 unwind label %1083

1078:                                             ; preds = %1076
  br i1 %1077, label %1055, label %1079, !llvm.loop !29

1079:                                             ; preds = %1078
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #7
  br label %1080

1080:                                             ; preds = %1079
  %1081 = load i64, ptr %141, align 8, !tbaa !11
  %1082 = add i64 %1081, 1
  store i64 %1082, ptr %141, align 8, !tbaa !11
  br label %976, !llvm.loop !30

1083:                                             ; preds = %1076, %1058, %1057, %1055, %1051, %1033, %1032, %1030, %1026, %1008, %1007, %1005
  %1084 = landingpad { ptr, i32 }
          cleanup
  %1085 = extractvalue { ptr, i32 } %1084, 0
  store ptr %1085, ptr %5, align 8
  %1086 = extractvalue { ptr, i32 } %1084, 1
  store i32 %1086, ptr %6, align 4
  br label %1159

1087:                                             ; preds = %1009
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %5, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %6, align 4
  br label %1110

1091:                                             ; preds = %1017, %1013
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %5, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %6, align 4
  br label %1109

1095:                                             ; preds = %1018
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %5, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %6, align 4
  br label %1108

1099:                                             ; preds = %1021, %1020
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %5, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %6, align 4
  br label %1107

1103:                                             ; preds = %1023, %1022
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %5, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #7
  br label %1107

1107:                                             ; preds = %1103, %1099
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #7
  br label %1108

1108:                                             ; preds = %1107, %1095
  call void @llvm.lifetime.end.p0(i64 32, ptr %154) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %149) #7
  br label %1109

1109:                                             ; preds = %1108, %1091
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #7
  br label %1110

1110:                                             ; preds = %1109, %1087
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %149) #7
  br label %1159

1111:                                             ; preds = %1034
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %5, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %6, align 4
  br label %1134

1115:                                             ; preds = %1042, %1038
  %1116 = landingpad { ptr, i32 }
          cleanup
  %1117 = extractvalue { ptr, i32 } %1116, 0
  store ptr %1117, ptr %5, align 8
  %1118 = extractvalue { ptr, i32 } %1116, 1
  store i32 %1118, ptr %6, align 4
  br label %1133

1119:                                             ; preds = %1043
  %1120 = landingpad { ptr, i32 }
          cleanup
  %1121 = extractvalue { ptr, i32 } %1120, 0
  store ptr %1121, ptr %5, align 8
  %1122 = extractvalue { ptr, i32 } %1120, 1
  store i32 %1122, ptr %6, align 4
  br label %1132

1123:                                             ; preds = %1046, %1045
  %1124 = landingpad { ptr, i32 }
          cleanup
  %1125 = extractvalue { ptr, i32 } %1124, 0
  store ptr %1125, ptr %5, align 8
  %1126 = extractvalue { ptr, i32 } %1124, 1
  store i32 %1126, ptr %6, align 4
  br label %1131

1127:                                             ; preds = %1048, %1047
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %5, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #7
  br label %1131

1131:                                             ; preds = %1127, %1123
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #7
  br label %1132

1132:                                             ; preds = %1131, %1119
  call void @llvm.lifetime.end.p0(i64 32, ptr %164) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %159) #7
  br label %1133

1133:                                             ; preds = %1132, %1115
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  br label %1134

1134:                                             ; preds = %1133, %1111
  call void @llvm.lifetime.end.p0(i64 1, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %159) #7
  br label %1159

1135:                                             ; preds = %1059
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %5, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %6, align 4
  br label %1158

1139:                                             ; preds = %1067, %1063
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %5, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %6, align 4
  br label %1157

1143:                                             ; preds = %1068
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %5, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %6, align 4
  br label %1156

1147:                                             ; preds = %1071, %1070
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %5, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %6, align 4
  br label %1155

1151:                                             ; preds = %1073, %1072
  %1152 = landingpad { ptr, i32 }
          cleanup
  %1153 = extractvalue { ptr, i32 } %1152, 0
  store ptr %1153, ptr %5, align 8
  %1154 = extractvalue { ptr, i32 } %1152, 1
  store i32 %1154, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #7
  br label %1155

1155:                                             ; preds = %1151, %1147
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #7
  br label %1156

1156:                                             ; preds = %1155, %1143
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %169) #7
  br label %1157

1157:                                             ; preds = %1156, %1139
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #7
  br label %1158

1158:                                             ; preds = %1157, %1135
  call void @llvm.lifetime.end.p0(i64 1, ptr %172) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %169) #7
  br label %1159

1159:                                             ; preds = %1158, %1134, %1110, %1083
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  br label %1482

1160:                                             ; preds = %979
  br label %1161

1161:                                             ; preds = %1202, %1160
  %1162 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %177, ptr noundef @.str.401, i64 noundef 92)
          to label %1163 unwind label %1312

1163:                                             ; preds = %1161
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178)
          to label %1164 unwind label %1312

1164:                                             ; preds = %1163
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1162, ptr noundef %177, i64 noundef 359, ptr noundef %178)
          to label %1165 unwind label %1312

1165:                                             ; preds = %1164
  call void @llvm.lifetime.start.p0(i64 24, ptr %179) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %180) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %181) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %182) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #7
  %1166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %183, ptr noundef nonnull align 1 dereferenceable(1) %184, ptr noundef nonnull align 8 dereferenceable(8) %1166)
          to label %1167 unwind label %1316

1167:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #7
  store double 0.000000e+00, ptr %185, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %182, ptr noundef nonnull align 1 dereferenceable(1) %183, ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %1168 unwind label %1320

1168:                                             ; preds = %1167
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %181, ptr noundef nonnull align 8 dereferenceable(16) %182)
          to label %1169 unwind label %1320

1169:                                             ; preds = %1168
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #7
  %1170 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1171 unwind label %1324

1171:                                             ; preds = %1169
  %1172 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %186, i32 0, i32 0
  store double %1170, ptr %1172, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %180, ptr noundef nonnull align 8 dereferenceable(33) %181, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %1173 unwind label %1324

1173:                                             ; preds = %1171
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %179, ptr noundef nonnull align 8 dereferenceable(33) %180)
          to label %1174 unwind label %1328

1174:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 32, ptr %187) #7
  %1175 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1176 unwind label %1332

1176:                                             ; preds = %1174
  call void @llvm.lifetime.start.p0(i64 16, ptr %188) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %188, ptr noundef @.str.410, i64 noundef 33)
          to label %1177 unwind label %1336

1177:                                             ; preds = %1176
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %187, ptr noundef nonnull align 8 dereferenceable(9) %1175, ptr noundef nonnull align 8 dereferenceable(16) %188)
          to label %1178 unwind label %1336

1178:                                             ; preds = %1177
  %1179 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1180 unwind label %1340

1180:                                             ; preds = %1178
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #7
  %1181 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1182 unwind label %1344

1182:                                             ; preds = %1180
  %1183 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %189, i32 0, i32 0
  store double %1181, ptr %1183, align 8
  %1184 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %1179, ptr noundef nonnull align 8 dereferenceable(8) %189)
          to label %1185 unwind label %1344

1185:                                             ; preds = %1182
  %1186 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %187, ptr noundef nonnull align 8 dereferenceable(9) %1184)
          to label %1187 unwind label %1344

1187:                                             ; preds = %1185
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef @.str.401, i64 noundef 92)
          to label %1188 unwind label %1344

1188:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %192, i32 noundef 1)
          to label %1189 unwind label %1348

1189:                                             ; preds = %1188
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #7
  %1190 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1191 unwind label %1352

1191:                                             ; preds = %1189
  %1192 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %193, i32 0, i32 0
  store double %1190, ptr %1192, align 8
  %1193 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %192, ptr noundef nonnull align 8 dereferenceable(8) %193)
          to label %1194 unwind label %1352

1194:                                             ; preds = %1191
  %1195 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %191, i32 0, i32 0
  store i32 %1193, ptr %1195, align 4
  %1196 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %191)
          to label %1197 unwind label %1352

1197:                                             ; preds = %1194
  %1198 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr noundef nonnull align 8 dereferenceable(9) %1186, ptr noundef %190, i64 noundef 359, i32 noundef 1, i32 noundef %1196, i64 noundef 0)
          to label %1199 unwind label %1352

1199:                                             ; preds = %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %187) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %180) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %181) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %182) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %181) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %179) #7
  br label %1200

1200:                                             ; preds = %1199
  %1201 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1202 unwind label %1312

1202:                                             ; preds = %1200
  br i1 %1201, label %1161, label %1203, !llvm.loop !31

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1245, %1203
  %1205 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %194, ptr noundef @.str.401, i64 noundef 92)
          to label %1206 unwind label %1312

1206:                                             ; preds = %1204
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %195)
          to label %1207 unwind label %1312

1207:                                             ; preds = %1206
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1205, ptr noundef %194, i64 noundef 360, ptr noundef %195)
          to label %1208 unwind label %1312

1208:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 24, ptr %196) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %197) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %198) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %199) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %201) #7
  %1209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %200, ptr noundef nonnull align 1 dereferenceable(1) %201, ptr noundef nonnull align 8 dereferenceable(8) %1209)
          to label %1210 unwind label %1365

1210:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #7
  store double 0.000000e+00, ptr %202, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %199, ptr noundef nonnull align 1 dereferenceable(1) %200, ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %1211 unwind label %1369

1211:                                             ; preds = %1210
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %198, ptr noundef nonnull align 8 dereferenceable(16) %199)
          to label %1212 unwind label %1369

1212:                                             ; preds = %1211
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #7
  %1213 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1214 unwind label %1373

1214:                                             ; preds = %1212
  %1215 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %203, i32 0, i32 0
  store double %1213, ptr %1215, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %197, ptr noundef nonnull align 8 dereferenceable(33) %198, ptr noundef nonnull align 8 dereferenceable(8) %203)
          to label %1216 unwind label %1373

1216:                                             ; preds = %1214
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %196, ptr noundef nonnull align 8 dereferenceable(33) %197)
          to label %1217 unwind label %1377

1217:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 32, ptr %204) #7
  %1218 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1219 unwind label %1381

1219:                                             ; preds = %1217
  call void @llvm.lifetime.start.p0(i64 16, ptr %205) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %205, ptr noundef @.str.411, i64 noundef 33)
          to label %1220 unwind label %1385

1220:                                             ; preds = %1219
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %204, ptr noundef nonnull align 8 dereferenceable(9) %1218, ptr noundef nonnull align 8 dereferenceable(16) %205)
          to label %1221 unwind label %1385

1221:                                             ; preds = %1220
  %1222 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1223 unwind label %1389

1223:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #7
  %1224 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1225 unwind label %1393

1225:                                             ; preds = %1223
  %1226 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %206, i32 0, i32 0
  store double %1224, ptr %1226, align 8
  %1227 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %1222, ptr noundef nonnull align 8 dereferenceable(8) %206)
          to label %1228 unwind label %1393

1228:                                             ; preds = %1225
  %1229 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %204, ptr noundef nonnull align 8 dereferenceable(9) %1227)
          to label %1230 unwind label %1393

1230:                                             ; preds = %1228
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %207, ptr noundef @.str.401, i64 noundef 92)
          to label %1231 unwind label %1393

1231:                                             ; preds = %1230
  call void @llvm.lifetime.start.p0(i64 4, ptr %208) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %209) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %209, i32 noundef 1)
          to label %1232 unwind label %1397

1232:                                             ; preds = %1231
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #7
  %1233 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1234 unwind label %1401

1234:                                             ; preds = %1232
  %1235 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %210, i32 0, i32 0
  store double %1233, ptr %1235, align 8
  %1236 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %209, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %1237 unwind label %1401

1237:                                             ; preds = %1234
  %1238 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %208, i32 0, i32 0
  store i32 %1236, ptr %1238, align 4
  %1239 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %208)
          to label %1240 unwind label %1401

1240:                                             ; preds = %1237
  %1241 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %196, ptr noundef nonnull align 8 dereferenceable(9) %1229, ptr noundef %207, i64 noundef 360, i32 noundef 1, i32 noundef %1239, i64 noundef 0)
          to label %1242 unwind label %1401

1242:                                             ; preds = %1240
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %208) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %197) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %198) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %201) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %197) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %196) #7
  br label %1243

1243:                                             ; preds = %1242
  %1244 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1245 unwind label %1312

1245:                                             ; preds = %1243
  br i1 %1244, label %1204, label %1246, !llvm.loop !32

1246:                                             ; preds = %1245
  br label %1247

1247:                                             ; preds = %1288, %1246
  %1248 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef @.str.401, i64 noundef 92)
          to label %1249 unwind label %1312

1249:                                             ; preds = %1247
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %212)
          to label %1250 unwind label %1312

1250:                                             ; preds = %1249
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1248, ptr noundef %211, i64 noundef 361, ptr noundef %212)
          to label %1251 unwind label %1312

1251:                                             ; preds = %1250
  call void @llvm.lifetime.start.p0(i64 24, ptr %213) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %214) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %215) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %216) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %217) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #7
  %1252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %139) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %217, ptr noundef nonnull align 1 dereferenceable(1) %218, ptr noundef nonnull align 8 dereferenceable(8) %1252)
          to label %1253 unwind label %1414

1253:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #7
  store double 0.000000e+00, ptr %219, align 8, !tbaa !9
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %216, ptr noundef nonnull align 1 dereferenceable(1) %217, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %1254 unwind label %1418

1254:                                             ; preds = %1253
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %215, ptr noundef nonnull align 8 dereferenceable(16) %216)
          to label %1255 unwind label %1418

1255:                                             ; preds = %1254
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #7
  %1256 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1257 unwind label %1422

1257:                                             ; preds = %1255
  %1258 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %220, i32 0, i32 0
  store double %1256, ptr %1258, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %214, ptr noundef nonnull align 8 dereferenceable(33) %215, ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %1259 unwind label %1422

1259:                                             ; preds = %1257
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %213, ptr noundef nonnull align 8 dereferenceable(33) %214)
          to label %1260 unwind label %1426

1260:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 32, ptr %221) #7
  %1261 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1262 unwind label %1430

1262:                                             ; preds = %1260
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef @.str.412, i64 noundef 33)
          to label %1263 unwind label %1434

1263:                                             ; preds = %1262
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %221, ptr noundef nonnull align 8 dereferenceable(9) %1261, ptr noundef nonnull align 8 dereferenceable(16) %222)
          to label %1264 unwind label %1434

1264:                                             ; preds = %1263
  %1265 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1266 unwind label %1438

1266:                                             ; preds = %1264
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #7
  %1267 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1268 unwind label %1442

1268:                                             ; preds = %1266
  %1269 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %223, i32 0, i32 0
  store double %1267, ptr %1269, align 8
  %1270 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %1265, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %1271 unwind label %1442

1271:                                             ; preds = %1268
  %1272 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %221, ptr noundef nonnull align 8 dereferenceable(9) %1270)
          to label %1273 unwind label %1442

1273:                                             ; preds = %1271
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %224, ptr noundef @.str.401, i64 noundef 92)
          to label %1274 unwind label %1442

1274:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 4, ptr %225) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %226) #7
  invoke void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %226, i32 noundef 1)
          to label %1275 unwind label %1446

1275:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #7
  %1276 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %1277 unwind label %1450

1277:                                             ; preds = %1275
  %1278 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::tolerance_manip", ptr %227, i32 0, i32 0
  store double %1276, ptr %1278, align 8
  %1279 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %226, ptr noundef nonnull align 8 dereferenceable(8) %227)
          to label %1280 unwind label %1450

1280:                                             ; preds = %1277
  %1281 = getelementptr inbounds %"struct.boost::test_tools::tt_detail::assertion_type", ptr %225, i32 0, i32 0
  store i32 %1279, ptr %1281, align 4
  %1282 = invoke noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %225)
          to label %1283 unwind label %1450

1283:                                             ; preds = %1280
  %1284 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull align 8 dereferenceable(9) %1272, ptr noundef %224, i64 noundef 361, i32 noundef 1, i32 noundef %1282, i64 noundef 0)
          to label %1285 unwind label %1450

1285:                                             ; preds = %1283
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %225) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %213) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %214) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %215) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %215) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %214) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %213) #7
  br label %1286

1286:                                             ; preds = %1285
  %1287 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1288 unwind label %1312

1288:                                             ; preds = %1286
  br i1 %1287, label %1247, label %1289, !llvm.loop !33

1289:                                             ; preds = %1288
  br label %1290

1290:                                             ; preds = %1307, %1289
  %1291 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !5
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %228, ptr noundef @.str.401, i64 noundef 92)
          to label %1292 unwind label %1312

1292:                                             ; preds = %1290
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %229)
          to label %1293 unwind label %1312

1293:                                             ; preds = %1292
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %1291, ptr noundef %228, i64 noundef 364, ptr noundef %229)
          to label %1294 unwind label %1312

1294:                                             ; preds = %1293
  call void @llvm.lifetime.start.p0(i64 24, ptr %230) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %231) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %233) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %232, ptr noundef nonnull align 1 dereferenceable(1) %233, ptr noundef nonnull align 8 dereferenceable(8) %130)
          to label %1295 unwind label %1463

1295:                                             ; preds = %1294
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEgeIS4_EENS1_11binary_exprIS5_T_NS1_2op2GEIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion::binary_expr.347") align 8 %231, ptr noundef nonnull align 1 dereferenceable(1) %232, ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %1296 unwind label %1463

1296:                                             ; preds = %1295
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEES4_NS1_2op2GEIddvEEE8evaluateEb(ptr dead_on_unwind writable sret(%"class.boost::test_tools::assertion_result") align 8 %230, ptr noundef nonnull align 8 dereferenceable(16) %231, i1 noundef zeroext false)
          to label %1297 unwind label %1463

1297:                                             ; preds = %1296
  call void @llvm.lifetime.start.p0(i64 32, ptr %234) #7
  %1298 = invoke noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
          to label %1299 unwind label %1467

1299:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 16, ptr %235) #7
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %235, ptr noundef @.str.414, i64 noundef 31)
          to label %1300 unwind label %1471

1300:                                             ; preds = %1299
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %234, ptr noundef nonnull align 8 dereferenceable(9) %1298, ptr noundef nonnull align 8 dereferenceable(16) %235)
          to label %1301 unwind label %1471

1301:                                             ; preds = %1300
  invoke void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef @.str.401, i64 noundef 92)
          to label %1302 unwind label %1475

1302:                                             ; preds = %1301
  %1303 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %230, ptr noundef nonnull align 8 dereferenceable(9) %234, ptr noundef %236, i64 noundef 364, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %1304 unwind label %1475

1304:                                             ; preds = %1302
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %235) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %234) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %230) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %231) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %230) #7
  br label %1305

1305:                                             ; preds = %1304
  %1306 = invoke noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
          to label %1307 unwind label %1312

1307:                                             ; preds = %1305
  br i1 %1306, label %1290, label %1308, !llvm.loop !34

1308:                                             ; preds = %1307
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 3, ptr %138) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %137) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #7
  br label %1309

1309:                                             ; preds = %1308
  %1310 = load i64, ptr %129, align 8, !tbaa !11
  %1311 = add i64 %1310, 1
  store i64 %1311, ptr %129, align 8, !tbaa !11
  br label %897, !llvm.loop !35

1312:                                             ; preds = %1305, %1293, %1292, %1290, %1286, %1250, %1249, %1247, %1243, %1207, %1206, %1204, %1200, %1164, %1163, %1161
  %1313 = landingpad { ptr, i32 }
          cleanup
  %1314 = extractvalue { ptr, i32 } %1313, 0
  store ptr %1314, ptr %5, align 8
  %1315 = extractvalue { ptr, i32 } %1313, 1
  store i32 %1315, ptr %6, align 4
  br label %1482

1316:                                             ; preds = %1165
  %1317 = landingpad { ptr, i32 }
          cleanup
  %1318 = extractvalue { ptr, i32 } %1317, 0
  store ptr %1318, ptr %5, align 8
  %1319 = extractvalue { ptr, i32 } %1317, 1
  store i32 %1319, ptr %6, align 4
  br label %1364

1320:                                             ; preds = %1168, %1167
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %5, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %6, align 4
  br label %1363

1324:                                             ; preds = %1171, %1169
  %1325 = landingpad { ptr, i32 }
          cleanup
  %1326 = extractvalue { ptr, i32 } %1325, 0
  store ptr %1326, ptr %5, align 8
  %1327 = extractvalue { ptr, i32 } %1325, 1
  store i32 %1327, ptr %6, align 4
  br label %1362

1328:                                             ; preds = %1173
  %1329 = landingpad { ptr, i32 }
          cleanup
  %1330 = extractvalue { ptr, i32 } %1329, 0
  store ptr %1330, ptr %5, align 8
  %1331 = extractvalue { ptr, i32 } %1329, 1
  store i32 %1331, ptr %6, align 4
  br label %1361

1332:                                             ; preds = %1174
  %1333 = landingpad { ptr, i32 }
          cleanup
  %1334 = extractvalue { ptr, i32 } %1333, 0
  store ptr %1334, ptr %5, align 8
  %1335 = extractvalue { ptr, i32 } %1333, 1
  store i32 %1335, ptr %6, align 4
  br label %1360

1336:                                             ; preds = %1177, %1176
  %1337 = landingpad { ptr, i32 }
          cleanup
  %1338 = extractvalue { ptr, i32 } %1337, 0
  store ptr %1338, ptr %5, align 8
  %1339 = extractvalue { ptr, i32 } %1337, 1
  store i32 %1339, ptr %6, align 4
  br label %1359

1340:                                             ; preds = %1178
  %1341 = landingpad { ptr, i32 }
          cleanup
  %1342 = extractvalue { ptr, i32 } %1341, 0
  store ptr %1342, ptr %5, align 8
  %1343 = extractvalue { ptr, i32 } %1341, 1
  store i32 %1343, ptr %6, align 4
  br label %1358

1344:                                             ; preds = %1187, %1185, %1182, %1180
  %1345 = landingpad { ptr, i32 }
          cleanup
  %1346 = extractvalue { ptr, i32 } %1345, 0
  store ptr %1346, ptr %5, align 8
  %1347 = extractvalue { ptr, i32 } %1345, 1
  store i32 %1347, ptr %6, align 4
  br label %1357

1348:                                             ; preds = %1188
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %5, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %6, align 4
  br label %1356

1352:                                             ; preds = %1197, %1194, %1191, %1189
  %1353 = landingpad { ptr, i32 }
          cleanup
  %1354 = extractvalue { ptr, i32 } %1353, 0
  store ptr %1354, ptr %5, align 8
  %1355 = extractvalue { ptr, i32 } %1353, 1
  store i32 %1355, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #7
  br label %1356

1356:                                             ; preds = %1352, %1348
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  br label %1357

1357:                                             ; preds = %1356, %1344
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #7
  br label %1358

1358:                                             ; preds = %1357, %1340
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %187) #7
  br label %1359

1359:                                             ; preds = %1358, %1336
  call void @llvm.lifetime.end.p0(i64 16, ptr %188) #7
  br label %1360

1360:                                             ; preds = %1359, %1332
  call void @llvm.lifetime.end.p0(i64 32, ptr %187) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #7
  br label %1361

1361:                                             ; preds = %1360, %1328
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %180) #7
  br label %1362

1362:                                             ; preds = %1361, %1324
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %181) #7
  br label %1363

1363:                                             ; preds = %1362, %1320
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #7
  br label %1364

1364:                                             ; preds = %1363, %1316
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %182) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %181) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %179) #7
  br label %1482

1365:                                             ; preds = %1208
  %1366 = landingpad { ptr, i32 }
          cleanup
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %5, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %6, align 4
  br label %1413

1369:                                             ; preds = %1211, %1210
  %1370 = landingpad { ptr, i32 }
          cleanup
  %1371 = extractvalue { ptr, i32 } %1370, 0
  store ptr %1371, ptr %5, align 8
  %1372 = extractvalue { ptr, i32 } %1370, 1
  store i32 %1372, ptr %6, align 4
  br label %1412

1373:                                             ; preds = %1214, %1212
  %1374 = landingpad { ptr, i32 }
          cleanup
  %1375 = extractvalue { ptr, i32 } %1374, 0
  store ptr %1375, ptr %5, align 8
  %1376 = extractvalue { ptr, i32 } %1374, 1
  store i32 %1376, ptr %6, align 4
  br label %1411

1377:                                             ; preds = %1216
  %1378 = landingpad { ptr, i32 }
          cleanup
  %1379 = extractvalue { ptr, i32 } %1378, 0
  store ptr %1379, ptr %5, align 8
  %1380 = extractvalue { ptr, i32 } %1378, 1
  store i32 %1380, ptr %6, align 4
  br label %1410

1381:                                             ; preds = %1217
  %1382 = landingpad { ptr, i32 }
          cleanup
  %1383 = extractvalue { ptr, i32 } %1382, 0
  store ptr %1383, ptr %5, align 8
  %1384 = extractvalue { ptr, i32 } %1382, 1
  store i32 %1384, ptr %6, align 4
  br label %1409

1385:                                             ; preds = %1220, %1219
  %1386 = landingpad { ptr, i32 }
          cleanup
  %1387 = extractvalue { ptr, i32 } %1386, 0
  store ptr %1387, ptr %5, align 8
  %1388 = extractvalue { ptr, i32 } %1386, 1
  store i32 %1388, ptr %6, align 4
  br label %1408

1389:                                             ; preds = %1221
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %5, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %6, align 4
  br label %1407

1393:                                             ; preds = %1230, %1228, %1225, %1223
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %5, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %6, align 4
  br label %1406

1397:                                             ; preds = %1231
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %5, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %6, align 4
  br label %1405

1401:                                             ; preds = %1240, %1237, %1234, %1232
  %1402 = landingpad { ptr, i32 }
          cleanup
  %1403 = extractvalue { ptr, i32 } %1402, 0
  store ptr %1403, ptr %5, align 8
  %1404 = extractvalue { ptr, i32 } %1402, 1
  store i32 %1404, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #7
  br label %1405

1405:                                             ; preds = %1401, %1397
  call void @llvm.lifetime.end.p0(i64 4, ptr %209) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %208) #7
  br label %1406

1406:                                             ; preds = %1405, %1393
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #7
  br label %1407

1407:                                             ; preds = %1406, %1389
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %204) #7
  br label %1408

1408:                                             ; preds = %1407, %1385
  call void @llvm.lifetime.end.p0(i64 16, ptr %205) #7
  br label %1409

1409:                                             ; preds = %1408, %1381
  call void @llvm.lifetime.end.p0(i64 32, ptr %204) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #7
  br label %1410

1410:                                             ; preds = %1409, %1377
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %197) #7
  br label %1411

1411:                                             ; preds = %1410, %1373
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %198) #7
  br label %1412

1412:                                             ; preds = %1411, %1369
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #7
  br label %1413

1413:                                             ; preds = %1412, %1365
  call void @llvm.lifetime.end.p0(i64 1, ptr %201) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %197) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %196) #7
  br label %1482

1414:                                             ; preds = %1251
  %1415 = landingpad { ptr, i32 }
          cleanup
  %1416 = extractvalue { ptr, i32 } %1415, 0
  store ptr %1416, ptr %5, align 8
  %1417 = extractvalue { ptr, i32 } %1415, 1
  store i32 %1417, ptr %6, align 4
  br label %1462

1418:                                             ; preds = %1254, %1253
  %1419 = landingpad { ptr, i32 }
          cleanup
  %1420 = extractvalue { ptr, i32 } %1419, 0
  store ptr %1420, ptr %5, align 8
  %1421 = extractvalue { ptr, i32 } %1419, 1
  store i32 %1421, ptr %6, align 4
  br label %1461

1422:                                             ; preds = %1257, %1255
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %5, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %6, align 4
  br label %1460

1426:                                             ; preds = %1259
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %5, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %6, align 4
  br label %1459

1430:                                             ; preds = %1260
  %1431 = landingpad { ptr, i32 }
          cleanup
  %1432 = extractvalue { ptr, i32 } %1431, 0
  store ptr %1432, ptr %5, align 8
  %1433 = extractvalue { ptr, i32 } %1431, 1
  store i32 %1433, ptr %6, align 4
  br label %1458

1434:                                             ; preds = %1263, %1262
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %5, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %6, align 4
  br label %1457

1438:                                             ; preds = %1264
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %5, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %6, align 4
  br label %1456

1442:                                             ; preds = %1273, %1271, %1268, %1266
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %5, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %6, align 4
  br label %1455

1446:                                             ; preds = %1274
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %5, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %6, align 4
  br label %1454

1450:                                             ; preds = %1283, %1280, %1277, %1275
  %1451 = landingpad { ptr, i32 }
          cleanup
  %1452 = extractvalue { ptr, i32 } %1451, 0
  store ptr %1452, ptr %5, align 8
  %1453 = extractvalue { ptr, i32 } %1451, 1
  store i32 %1453, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #7
  br label %1454

1454:                                             ; preds = %1450, %1446
  call void @llvm.lifetime.end.p0(i64 4, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %225) #7
  br label %1455

1455:                                             ; preds = %1454, %1442
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #7
  br label %1456

1456:                                             ; preds = %1455, %1438
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #7
  br label %1457

1457:                                             ; preds = %1456, %1434
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #7
  br label %1458

1458:                                             ; preds = %1457, %1430
  call void @llvm.lifetime.end.p0(i64 32, ptr %221) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %213) #7
  br label %1459

1459:                                             ; preds = %1458, %1426
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %214) #7
  br label %1460

1460:                                             ; preds = %1459, %1422
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %215) #7
  br label %1461

1461:                                             ; preds = %1460, %1418
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #7
  br label %1462

1462:                                             ; preds = %1461, %1414
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %216) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %215) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %214) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %213) #7
  br label %1482

1463:                                             ; preds = %1296, %1295, %1294
  %1464 = landingpad { ptr, i32 }
          cleanup
  %1465 = extractvalue { ptr, i32 } %1464, 0
  store ptr %1465, ptr %5, align 8
  %1466 = extractvalue { ptr, i32 } %1464, 1
  store i32 %1466, ptr %6, align 4
  br label %1481

1467:                                             ; preds = %1297
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %5, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %6, align 4
  br label %1480

1471:                                             ; preds = %1300, %1299
  %1472 = landingpad { ptr, i32 }
          cleanup
  %1473 = extractvalue { ptr, i32 } %1472, 0
  store ptr %1473, ptr %5, align 8
  %1474 = extractvalue { ptr, i32 } %1472, 1
  store i32 %1474, ptr %6, align 4
  br label %1479

1475:                                             ; preds = %1302, %1301
  %1476 = landingpad { ptr, i32 }
          cleanup
  %1477 = extractvalue { ptr, i32 } %1476, 0
  store ptr %1477, ptr %5, align 8
  %1478 = extractvalue { ptr, i32 } %1476, 1
  store i32 %1478, ptr %6, align 4
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %234) #7
  br label %1479

1479:                                             ; preds = %1475, %1471
  call void @llvm.lifetime.end.p0(i64 16, ptr %235) #7
  br label %1480

1480:                                             ; preds = %1479, %1467
  call void @llvm.lifetime.end.p0(i64 32, ptr %234) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %230) #7
  br label %1481

1481:                                             ; preds = %1480, %1463
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %231) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %230) #7
  br label %1482

1482:                                             ; preds = %1481, %1462, %1413, %1364, %1312, %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %139) #7
  br label %1483

1483:                                             ; preds = %1482, %984
  call void @llvm.lifetime.end.p0(i64 3, ptr %138) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %137) #7
  br label %1484

1484:                                             ; preds = %1483, %980
  call void @llvm.lifetime.end.p0(i64 352, ptr %137) #7
  br label %1485

1485:                                             ; preds = %1484, %972
  call void @llvm.lifetime.end.p0(i64 24, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #7
  br label %1487

1486:                                             ; preds = %900
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 5000, ptr %11) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %9) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  ret void

1487:                                             ; preds = %1485, %895, %259
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #7
  br label %1488

1488:                                             ; preds = %1487, %255
  call void @llvm.lifetime.end.p0(i64 5000, ptr %11) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %9) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  br label %1489

1489:                                             ; preds = %1488, %254
  %1490 = load ptr, ptr %5, align 8
  %1491 = load i32, ptr %6, align 4
  %1492 = insertvalue { ptr, i32 } poison, ptr %1490, 0
  %1493 = insertvalue { ptr, i32 } %1492, i32 %1491, 1
  resume { ptr, i32 } %1493
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{i64 0, i64 24, !14}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}


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

%"class.mjolnir::math::Matrix.334" = type { %"struct.std::array.335" }
%"struct.std::array.335" = type { [3 x double] }
%"class.boost::test_tools::assertion::value_expr" = type { ptr }
%"class.boost::test_tools::assertion::binary_expr" = type { %"class.boost::test_tools::assertion::value_expr", double }
%"class.boost::test_tools::assertion_result" = type { %"class.boost::test_tools::assertion_result::readonly_property65", %"class.boost::shared_ptr.225" }
%"class.boost::test_tools::assertion_result::readonly_property65" = type { %"class.boost::unit_test::readonly_property.213" }
%"class.boost::unit_test::readonly_property.213" = type { %"class.boost::unit_test::class_property.98" }
%"class.boost::unit_test::class_property.98" = type { i8 }
%"class.boost::shared_ptr.225" = type { ptr, %"class.boost::detail::shared_count" }
%"class.boost::detail::shared_count" = type { ptr }
%"class.boost::unit_test::lazy_ostream_impl.337" = type { %"class.boost::unit_test::lazy_ostream.base", ptr, ptr }
%"class.boost::unit_test::lazy_ostream.base" = type <{ ptr, i8 }>
%"struct.boost::test_tools::tt_detail::assertion_evaluate_t" = type <{ ptr, %"class.std::__cxx11::list.338", i8, [7 x i8] }>
%"class.std::__cxx11::list.338" = type { %"class.std::__cxx11::_List_base.339" }
%"class.std::__cxx11::_List_base.339" = type { %"struct.std::__cxx11::_List_base<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>, std::allocator<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>>>::_List_impl" }
%"struct.std::__cxx11::_List_base<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>, std::allocator<boost::shared_ptr<boost::test_tools::tt_detail::assertion_evaluation_context>>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343" = type <{ ptr, %"class.std::__cxx11::list.338", i8, [7 x i8] }>
%"class.boost::test_tools::assertion::binary_expr.345" = type { %"class.boost::test_tools::assertion::value_expr", ptr }
%"class.boost::test_tools::assertion::binary_expr.347" = type { %"class.boost::test_tools::assertion::value_expr", ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.mjolnir::System" = type { i8, i8, %"class.std::map.314", %"class.std::map.319", %"class.mjolnir::math::Matrix", i64, %"class.std::vector.324", %"class.std::vector.324", %"class.std::vector.329", %"class.std::vector.329", %"class.std::vector.329", %"class.std::vector", %"class.std::vector" }
%"class.std::map.314" = type { %"class.std::_Rb_tree.315" }
%"class.std::_Rb_tree.315" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, double>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, double>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, double>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, double>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.319" = type { %"class.std::_Rb_tree.320" }
%"class.std::_Rb_tree.320" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, mjolnir::DynamicVariable<double>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.mjolnir::math::Matrix" = type { %"struct.std::array" }
%"struct.std::array" = type { [9 x double] }
%"class.std::vector.324" = type { %"struct.std::_Vector_base.325" }
%"struct.std::_Vector_base.325" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.329" = type { %"struct.std::_Vector_base.330" }
%"struct.std::_Vector_base.330" = type { %"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<mjolnir::math::Matrix<double, 3, 1>, std::allocator<mjolnir::math::Matrix<double, 3, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.mjolnir::UnlimitedBoundary" = type { i8 }
%"class.std::mersenne_twister_engine" = type { [624 x i64], i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<>::param_type" }
%"struct.std::uniform_real_distribution<>::param_type" = type { double, double }
%"class.mjolnir::SystemMotionRemover" = type { i8, i8, i8 }
%"class.boost::unit_test::basic_cstring" = type { ptr, ptr }
%"class.boost::test_tools::assertion::seed" = type { i8 }
%"struct.boost::test_tools::tt_detail::tolerance_manip" = type { double }
%"struct.boost::test_tools::tt_detail::assertion_type" = type { i32 }

@_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE = external hidden local_unnamed_addr global ptr, align 8
@.str.401 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.402 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.403 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.404 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.410 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.411 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.412 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.413 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.414 = external hidden unnamed_addr constant [32 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(9), ptr noundef, i64 noundef, i32 noundef, i32 noundef, i64 noundef, ...) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7mjolnir20basic_logger_managerIcSt11char_traitsIcEE18set_default_loggerERKNSt7__cxx1112basic_stringIcS2_SaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt25uniform_real_distributionIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16), double noundef, double noundef) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, double noundef, double noundef, double noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(5000)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, double noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(352)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind noalias writable sret(%"class.mjolnir::math::Matrix.334") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::value_expr") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind noalias writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8, ptr noundef nonnull align 8 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv() local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8, ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9), ptr noundef nonnull align 8 dereferenceable(9)) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8, ptr noundef nonnull align 8 dereferenceable(33), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind noalias writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIS4_EENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr.345") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(33)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEgeIS4_EENS1_11binary_exprIS5_T_NS1_2op2GEIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion::binary_expr.347") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEES4_NS1_2op2GEIddvEEE8evaluateEb(ptr dead_on_unwind noalias writable sret(%"class.boost::test_tools::assertion_result") align 8, ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN28SystemMotionRemover_rotation11test_methodEv(ptr nocapture noundef nonnull readnone align 1 dereferenceable(1) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::allocator", align 1
  %4 = alloca %"class.mjolnir::System", align 8
  %5 = alloca %"struct.mjolnir::UnlimitedBoundary", align 1
  %6 = alloca %"class.std::mersenne_twister_engine", align 8
  %7 = alloca %"class.std::uniform_real_distribution", align 8
  %8 = alloca double, align 8
  %9 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %10 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %11 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %12 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %13 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %14 = alloca %"class.mjolnir::System", align 8
  %15 = alloca %"class.mjolnir::SystemMotionRemover", align 1
  %16 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %19 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %20 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %21 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %22 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %23 = alloca %"class.boost::test_tools::assertion_result", align 8
  %24 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %25 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %26 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %27 = alloca double, align 8
  %28 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %29 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %30 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %31 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %32 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %33 = alloca %"class.boost::test_tools::assertion_result", align 8
  %34 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %35 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %36 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %37 = alloca double, align 8
  %38 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %39 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %40 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %41 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %42 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %43 = alloca %"class.boost::test_tools::assertion_result", align 8
  %44 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %45 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %46 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %47 = alloca double, align 8
  %48 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %49 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %50 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %51 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %52 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %53 = alloca %"class.boost::test_tools::assertion_result", align 8
  %54 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %55 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %56 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %57 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %58 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %59 = alloca double, align 8
  %60 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %61 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %62 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %63 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %64 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %65 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %66 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %67 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %68 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %69 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %70 = alloca %"class.boost::test_tools::assertion_result", align 8
  %71 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %72 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %73 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %74 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %75 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %76 = alloca double, align 8
  %77 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %78 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %79 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %80 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %81 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %82 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %83 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %84 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %85 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %86 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %87 = alloca %"class.boost::test_tools::assertion_result", align 8
  %88 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %89 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %90 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %91 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %92 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %93 = alloca double, align 8
  %94 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %95 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %96 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %97 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %98 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %99 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %100 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %101 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %102 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %103 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %104 = alloca %"class.boost::test_tools::assertion_result", align 8
  %105 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343", align 8
  %106 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343", align 8
  %107 = alloca %"class.boost::test_tools::assertion::binary_expr.345", align 8
  %108 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %109 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %110 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %111 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %112 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %113 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %114 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %115 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %116 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %117 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %118 = alloca double, align 8
  %119 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %120 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %121 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %122 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %123 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %124 = alloca %"class.mjolnir::System", align 8
  %125 = alloca %"class.mjolnir::SystemMotionRemover", align 1
  %126 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %127 = alloca double, align 8
  %128 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %129 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %130 = alloca %"class.mjolnir::math::Matrix.334", align 8
  %131 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %132 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %133 = alloca %"class.boost::test_tools::assertion_result", align 8
  %134 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %135 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %136 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %137 = alloca double, align 8
  %138 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %139 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %140 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %141 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %142 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %143 = alloca %"class.boost::test_tools::assertion_result", align 8
  %144 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %145 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %146 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %147 = alloca double, align 8
  %148 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %149 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %150 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %151 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %152 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %153 = alloca %"class.boost::test_tools::assertion_result", align 8
  %154 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %155 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %156 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %157 = alloca double, align 8
  %158 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %159 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %160 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %161 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %162 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %163 = alloca %"class.boost::test_tools::assertion_result", align 8
  %164 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %165 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %166 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %167 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %168 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %169 = alloca double, align 8
  %170 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %171 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %172 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %173 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %174 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %175 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %176 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %177 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %178 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %179 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %180 = alloca %"class.boost::test_tools::assertion_result", align 8
  %181 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %182 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %183 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %184 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %185 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %186 = alloca double, align 8
  %187 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %188 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %189 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %190 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %191 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %192 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %193 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %194 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %195 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %196 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %197 = alloca %"class.boost::test_tools::assertion_result", align 8
  %198 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %199 = alloca %"struct.boost::test_tools::tt_detail::assertion_evaluate_t", align 8
  %200 = alloca %"class.boost::test_tools::assertion::binary_expr", align 8
  %201 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %202 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %203 = alloca double, align 8
  %204 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %205 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %206 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %207 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %208 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %209 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %210 = alloca %"struct.boost::test_tools::tt_detail::assertion_type", align 4
  %211 = alloca %"struct.boost::test_tools::tt_detail::tolerance_manip", align 8
  %212 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %213 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %214 = alloca %"class.boost::test_tools::assertion_result", align 8
  %215 = alloca %"class.boost::test_tools::assertion::binary_expr.347", align 8
  %216 = alloca %"class.boost::test_tools::assertion::value_expr", align 8
  %217 = alloca %"class.boost::test_tools::assertion::seed", align 1
  %218 = alloca %"class.boost::unit_test::lazy_ostream_impl.337", align 8
  %219 = alloca %"class.boost::unit_test::basic_cstring", align 8
  %220 = alloca %"class.boost::unit_test::basic_cstring", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull @.str.402, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %221 unwind label %224

221:                                              ; preds = %1
  invoke void @_ZN7mjolnir20basic_logger_managerIcSt11char_traitsIcEE18set_default_loggerERKNSt7__cxx1112basic_stringIcS2_SaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %222 unwind label %226

222:                                              ; preds = %221
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2EmRKNS2_IdNS_4math6MatrixIdLm3ELm1EEEEE(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef 100, ptr noundef nonnull align 1 dereferenceable(1) %5)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 5000, ptr nonnull %6) #7
  invoke void @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEC2Em(ptr noundef nonnull align 8 dereferenceable(5000) %6, i64 noundef 123456789)
          to label %223 unwind label %229

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  invoke void @_ZNSt25uniform_real_distributionIdEC2Edd(ptr noundef nonnull align 8 dereferenceable(16) %7, double noundef 0.000000e+00, double noundef 1.000000e+00)
          to label %.preheader279 unwind label %231

224:                                              ; preds = %1
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %228

226:                                              ; preds = %221
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #7
  br label %228

228:                                              ; preds = %226, %224
  %.pn = phi { ptr, i32 } [ %227, %226 ], [ %225, %224 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #7
  br label %861

229:                                              ; preds = %222
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %860

231:                                              ; preds = %223
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %859

.preheader279:                                    ; preds = %223, %475
  %.0140282 = phi i64 [ %476, %475 ], [ 0, %223 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store double 0.000000e+00, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %9, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  br label %234

233:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %14) #7
  invoke void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(352) %14, ptr noundef nonnull align 8 dereferenceable(352) %4)
          to label %282 unwind label %284

234:                                              ; preds = %.preheader279, %263
  %.0142280 = phi i64 [ 0, %.preheader279 ], [ %275, %263 ]
  %235 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %236 unwind label %276

236:                                              ; preds = %234
  %237 = fadd double %235, 1.000000e+00
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  store double %237, ptr %238, align 8, !tbaa !5
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  %240 = load double, ptr %239, align 8, !tbaa !5
  %241 = fdiv double 1.000000e+00, %240
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5rmassEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  store double %241, ptr %242, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  %243 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %244 unwind label %278

244:                                              ; preds = %236
  %245 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %246 unwind label %278

246:                                              ; preds = %244
  %247 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %248 unwind label %278

248:                                              ; preds = %246
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %10, double noundef %243, double noundef %245, double noundef %247) #7
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %249, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  %250 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %251 unwind label %280

251:                                              ; preds = %248
  %252 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %253 unwind label %280

253:                                              ; preds = %251
  %254 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %255 unwind label %280

255:                                              ; preds = %253
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %11, double noundef %250, double noundef %252, double noundef %254) #7
  %256 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %256, ptr noundef nonnull align 8 dereferenceable(24) %11, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %12, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  %257 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5forceEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %257, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  %258 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4nameB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef 0) #7
  %259 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull @.str.403)
          to label %260 unwind label %276

260:                                              ; preds = %255
  %261 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5groupB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef 0) #7
  %262 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull @.str.403)
          to label %263 unwind label %276

263:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  %265 = load double, ptr %264, align 8, !tbaa !5
  %266 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %13, double noundef %265, ptr noundef nonnull align 8 dereferenceable(24) %266) #7
  %267 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  %269 = load double, ptr %268, align 8, !tbaa !5
  %270 = fmul double %269, 5.000000e-01
  %271 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0142280) #7
  %272 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %271) #7
  %273 = load double, ptr %8, align 8, !tbaa !5
  %274 = call double @llvm.fmuladd.f64(double %270, double %272, double %273)
  store double %274, ptr %8, align 8, !tbaa !5
  %275 = add nuw nsw i64 %.0142280, 1
  %exitcond.not = icmp eq i64 %275, 100
  br i1 %exitcond.not, label %233, label %234, !llvm.loop !11

276:                                              ; preds = %260, %255, %234
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %556

278:                                              ; preds = %246, %244, %236
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %556

280:                                              ; preds = %253, %251, %248
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  br label %556

282:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %15) #7
  invoke void @_ZN7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2Ebbb(ptr noundef nonnull align 1 dereferenceable(3) %15, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %283 unwind label %286

283:                                              ; preds = %282
  call void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3) %15, ptr noundef nonnull align 8 dereferenceable(352) %4) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %16, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  store double 0.000000e+00, ptr %17, align 8, !tbaa !5
  br label %288

284:                                              ; preds = %233
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %555

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

288:                                              ; preds = %283, %341
  %.0141281 = phi i64 [ 0, %283 ], [ %342, %341 ]
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  %290 = load double, ptr %289, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #7
  %291 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  call void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %18, ptr noundef nonnull align 8 dereferenceable(24) %291, ptr noundef nonnull align 8 dereferenceable(24) %9) #7
  %292 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #7
  call void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %20, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %292) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %19, double noundef %290, ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  %293 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #7
  %294 = fmul double %290, 5.000000e-01
  %295 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %292) #7
  %296 = load double, ptr %17, align 8, !tbaa !5
  %297 = call double @llvm.fmuladd.f64(double %294, double %295, double %296)
  store double %297, ptr %17, align 8, !tbaa !5
  br label %298

298:                                              ; preds = %311, %288
  %299 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull %21, i64 noundef 306, ptr noundef nonnull %22)
          to label %300 unwind label %.loopexit.split-lp256.loopexit.split-lp

300:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #7
  %301 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %301) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %25, ptr noundef nonnull align 1 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(8) %302)
          to label %303 unwind label %343

303:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %304 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %14, i64 noundef %.0141281) #7
  %305 = call noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %304) #7
  store double %305, ptr %27, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %24, ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %306 unwind label %345

306:                                              ; preds = %303
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %23, ptr noundef nonnull align 8 dereferenceable(16) %24, i1 noundef zeroext false)
          to label %307 unwind label %345

307:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  %308 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull @.str.404, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %28, ptr noundef nonnull align 8 dereferenceable(9) %308, ptr noundef nonnull align 8 dereferenceable(16) %29)
          to label %309 unwind label %347

309:                                              ; preds = %307
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull @.str.401, i64 noundef 92)
  %310 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(9) %28, ptr noundef nonnull %30, i64 noundef 306, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %311 unwind label %349

311:                                              ; preds = %309
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  %312 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %312, label %298, label %.preheader260, !llvm.loop !15

.preheader260:                                    ; preds = %311, %325
  %313 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull %31, i64 noundef 307, ptr noundef nonnull %32)
          to label %314 unwind label %.loopexit.split-lp256.loopexit

314:                                              ; preds = %.preheader260
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #7
  %315 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %315) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %35, ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 8 dereferenceable(8) %316)
          to label %317 unwind label %354

317:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  %318 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %14, i64 noundef %.0141281) #7
  %319 = call noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %318) #7
  store double %319, ptr %37, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %34, ptr noundef nonnull align 1 dereferenceable(1) %35, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %320 unwind label %356

320:                                              ; preds = %317
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %33, ptr noundef nonnull align 8 dereferenceable(16) %34, i1 noundef zeroext false)
          to label %321 unwind label %356

321:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  %322 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %39, ptr noundef nonnull @.str.405, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %38, ptr noundef nonnull align 8 dereferenceable(9) %322, ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %323 unwind label %358

323:                                              ; preds = %321
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull @.str.401, i64 noundef 92)
  %324 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(9) %38, ptr noundef nonnull %40, i64 noundef 307, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %325 unwind label %360

325:                                              ; preds = %323
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  %326 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %326, label %.preheader260, label %.preheader254, !llvm.loop !16

.preheader254:                                    ; preds = %325, %339
  %327 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull %41, i64 noundef 308, ptr noundef nonnull %42)
          to label %328 unwind label %.loopexit255

328:                                              ; preds = %.preheader254
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #7
  %329 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0141281) #7
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %329) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %45, ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 8 dereferenceable(8) %330)
          to label %331 unwind label %365

331:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  %332 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %14, i64 noundef %.0141281) #7
  %333 = call noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %332) #7
  store double %333, ptr %47, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %44, ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %334 unwind label %367

334:                                              ; preds = %331
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %43, ptr noundef nonnull align 8 dereferenceable(16) %44, i1 noundef zeroext false)
          to label %335 unwind label %367

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #7
  %336 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull @.str.406, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %48, ptr noundef nonnull align 8 dereferenceable(9) %336, ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %337 unwind label %369

337:                                              ; preds = %335
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull @.str.401, i64 noundef 92)
  %338 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(9) %48, ptr noundef nonnull %50, i64 noundef 308, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %339 unwind label %371

339:                                              ; preds = %337
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  %340 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %340, label %.preheader254, label %341, !llvm.loop !17

341:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  %342 = add nuw nsw i64 %.0141281, 1
  %exitcond286.not = icmp eq i64 %342, 100
  br i1 %exitcond286.not, label %.preheader278, label %288, !llvm.loop !18

.loopexit255:                                     ; preds = %.preheader254
  %lpad.loopexit257 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp256

.loopexit.split-lp256.loopexit:                   ; preds = %.preheader260
  %lpad.loopexit261 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp256

.loopexit.split-lp256.loopexit.split-lp:          ; preds = %298
  %lpad.loopexit.split-lp262 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp256

343:                                              ; preds = %300
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %353

345:                                              ; preds = %306, %303
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %352

347:                                              ; preds = %307
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %351

349:                                              ; preds = %309
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %351

351:                                              ; preds = %349, %347
  %.pn214 = phi { ptr, i32 } [ %350, %349 ], [ %348, %347 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  br label %352

352:                                              ; preds = %351, %345
  %.pn214.pn = phi { ptr, i32 } [ %.pn214, %351 ], [ %346, %345 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %353

353:                                              ; preds = %352, %343
  %.pn214.pn.pn = phi { ptr, i32 } [ %.pn214.pn, %352 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  br label %.loopexit.split-lp256

354:                                              ; preds = %314
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %364

356:                                              ; preds = %320, %317
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %363

358:                                              ; preds = %321
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %323
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %362

362:                                              ; preds = %360, %358
  %.pn218 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #7
  br label %363

363:                                              ; preds = %362, %356
  %.pn218.pn = phi { ptr, i32 } [ %.pn218, %362 ], [ %357, %356 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  br label %364

364:                                              ; preds = %363, %354
  %.pn218.pn.pn = phi { ptr, i32 } [ %.pn218.pn, %363 ], [ %355, %354 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #7
  br label %.loopexit.split-lp256

365:                                              ; preds = %328
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %375

367:                                              ; preds = %334, %331
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %374

369:                                              ; preds = %335
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %373

371:                                              ; preds = %337
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %373

373:                                              ; preds = %371, %369
  %.pn222 = phi { ptr, i32 } [ %372, %371 ], [ %370, %369 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  br label %374

374:                                              ; preds = %373, %367
  %.pn222.pn = phi { ptr, i32 } [ %.pn222, %373 ], [ %368, %367 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  br label %375

375:                                              ; preds = %374, %365
  %.pn222.pn.pn = phi { ptr, i32 } [ %.pn222.pn, %374 ], [ %366, %365 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  br label %.loopexit.split-lp256

.loopexit.split-lp256:                            ; preds = %.loopexit255, %.loopexit.split-lp256.loopexit.split-lp, %.loopexit.split-lp256.loopexit, %375, %364, %353
  %.pn222.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn, %375 ], [ %.pn218.pn.pn, %364 ], [ %.pn214.pn.pn, %353 ], [ %lpad.loopexit257, %.loopexit255 ], [ %lpad.loopexit261, %.loopexit.split-lp256.loopexit ], [ %lpad.loopexit.split-lp262, %.loopexit.split-lp256.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  br label %.loopexit.split-lp266

.preheader278:                                    ; preds = %341, %399
  %376 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %376, ptr noundef nonnull %51, i64 noundef 311, ptr noundef nonnull %52)
          to label %377 unwind label %.loopexit.split-lp266.loopexit.split-lp.loopexit.split-lp

377:                                              ; preds = %.preheader278
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %54) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #7
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %57, ptr noundef nonnull align 1 dereferenceable(1) %58, ptr noundef nonnull align 8 dereferenceable(8) %378)
          to label %379 unwind label %477

379:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  store double 0.000000e+00, ptr %59, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %56, ptr noundef nonnull align 1 dereferenceable(1) %57, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %380 unwind label %479

380:                                              ; preds = %379
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %55, ptr noundef nonnull align 8 dereferenceable(16) %56)
          to label %381 unwind label %479

381:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  %382 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %383 unwind label %481

383:                                              ; preds = %381
  store double %382, ptr %60, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %54, ptr noundef nonnull align 8 dereferenceable(33) %55, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %384 unwind label %481

384:                                              ; preds = %383
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %53, ptr noundef nonnull align 8 dereferenceable(33) %54)
          to label %385 unwind label %483

385:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #7
  %386 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %62) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull @.str.410, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %61, ptr noundef nonnull align 8 dereferenceable(9) %386, ptr noundef nonnull align 8 dereferenceable(16) %62)
          to label %387 unwind label %485

387:                                              ; preds = %385
  %388 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #7
  %389 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %390 unwind label %487

390:                                              ; preds = %387
  store double %389, ptr %63, align 8
  %391 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %388, ptr noundef nonnull align 8 dereferenceable(8) %63)
  %392 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %61, ptr noundef nonnull align 8 dereferenceable(9) %391)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %66, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  %393 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %394 unwind label %489

394:                                              ; preds = %390
  store double %393, ptr %67, align 8
  %395 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %396 unwind label %489

396:                                              ; preds = %394
  store i32 %395, ptr %65, align 4
  %397 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %65)
  %398 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(9) %392, ptr noundef nonnull %64, i64 noundef 311, i32 noundef 1, i32 noundef %397, i64 noundef 0)
          to label %399 unwind label %489

399:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #7
  %400 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %400, label %.preheader278, label %.preheader274, !llvm.loop !19

.preheader274:                                    ; preds = %399, %424
  %401 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %68, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef nonnull %68, i64 noundef 312, ptr noundef nonnull %69)
          to label %402 unwind label %.loopexit.split-lp266.loopexit.split-lp.loopexit

402:                                              ; preds = %.preheader274
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %71) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %75) #7
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %74, ptr noundef nonnull align 1 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %404 unwind label %497

404:                                              ; preds = %402
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #7
  store double 0.000000e+00, ptr %76, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %73, ptr noundef nonnull align 1 dereferenceable(1) %74, ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %405 unwind label %499

405:                                              ; preds = %404
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %72, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %406 unwind label %499

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #7
  %407 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %408 unwind label %501

408:                                              ; preds = %406
  store double %407, ptr %77, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %71, ptr noundef nonnull align 8 dereferenceable(33) %72, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %409 unwind label %501

409:                                              ; preds = %408
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %70, ptr noundef nonnull align 8 dereferenceable(33) %71)
          to label %410 unwind label %503

410:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %78) #7
  %411 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef nonnull @.str.411, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %78, ptr noundef nonnull align 8 dereferenceable(9) %411, ptr noundef nonnull align 8 dereferenceable(16) %79)
          to label %412 unwind label %505

412:                                              ; preds = %410
  %413 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #7
  %414 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %415 unwind label %507

415:                                              ; preds = %412
  store double %414, ptr %80, align 8
  %416 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %413, ptr noundef nonnull align 8 dereferenceable(8) %80)
  %417 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %78, ptr noundef nonnull align 8 dereferenceable(9) %416)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %83, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #7
  %418 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %419 unwind label %509

419:                                              ; preds = %415
  store double %418, ptr %84, align 8
  %420 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %83, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %421 unwind label %509

421:                                              ; preds = %419
  store i32 %420, ptr %82, align 4
  %422 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %82)
  %423 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(9) %417, ptr noundef nonnull %81, i64 noundef 312, i32 noundef 1, i32 noundef %422, i64 noundef 0)
          to label %424 unwind label %509

424:                                              ; preds = %421
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #7
  %425 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %425, label %.preheader274, label %.preheader270, !llvm.loop !20

.preheader270:                                    ; preds = %424, %449
  %426 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %85, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef nonnull %85, i64 noundef 313, ptr noundef nonnull %86)
          to label %427 unwind label %.loopexit.split-lp266.loopexit

427:                                              ; preds = %.preheader270
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %87) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %88) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %92) #7
  %428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %91, ptr noundef nonnull align 1 dereferenceable(1) %92, ptr noundef nonnull align 8 dereferenceable(8) %428)
          to label %429 unwind label %517

429:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #7
  store double 0.000000e+00, ptr %93, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %90, ptr noundef nonnull align 1 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %430 unwind label %519

430:                                              ; preds = %429
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %89, ptr noundef nonnull align 8 dereferenceable(16) %90)
          to label %431 unwind label %519

431:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #7
  %432 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %433 unwind label %521

433:                                              ; preds = %431
  store double %432, ptr %94, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %88, ptr noundef nonnull align 8 dereferenceable(33) %89, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %434 unwind label %521

434:                                              ; preds = %433
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %87, ptr noundef nonnull align 8 dereferenceable(33) %88)
          to label %435 unwind label %523

435:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %95) #7
  %436 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull @.str.412, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %95, ptr noundef nonnull align 8 dereferenceable(9) %436, ptr noundef nonnull align 8 dereferenceable(16) %96)
          to label %437 unwind label %525

437:                                              ; preds = %435
  %438 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #7
  %439 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %440 unwind label %527

440:                                              ; preds = %437
  store double %439, ptr %97, align 8
  %441 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %438, ptr noundef nonnull align 8 dereferenceable(8) %97)
  %442 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %95, ptr noundef nonnull align 8 dereferenceable(9) %441)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %100) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %100, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #7
  %443 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %444 unwind label %529

444:                                              ; preds = %440
  store double %443, ptr %101, align 8
  %445 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %100, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %446 unwind label %529

446:                                              ; preds = %444
  store i32 %445, ptr %99, align 4
  %447 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %99)
  %448 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(9) %442, ptr noundef nonnull %98, i64 noundef 313, i32 noundef 1, i32 noundef %447, i64 noundef 0)
          to label %449 unwind label %529

449:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %87) #7
  %450 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %450, label %.preheader270, label %.preheader264, !llvm.loop !21

.preheader264:                                    ; preds = %449, %473
  %451 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %103)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull %102, i64 noundef 316, ptr noundef nonnull %103)
          to label %452 unwind label %.loopexit265

452:                                              ; preds = %.preheader264
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %104) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %105) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %106) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %107) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %109) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %108, ptr noundef nonnull align 1 dereferenceable(1) %109, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %453 unwind label %537

453:                                              ; preds = %452
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIS4_EENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr.345") align 8 %107, ptr noundef nonnull align 1 dereferenceable(1) %108, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %454 unwind label %537

454:                                              ; preds = %453
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8 %106, ptr noundef nonnull align 8 dereferenceable(16) %107)
          to label %455 unwind label %537

455:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #7
  %456 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %457 unwind label %539

457:                                              ; preds = %455
  store double %456, ptr %110, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t.343") align 8 %105, ptr noundef nonnull align 8 dereferenceable(33) %106, ptr noundef nonnull align 8 dereferenceable(8) %110)
          to label %458 unwind label %539

458:                                              ; preds = %457
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %104, ptr noundef nonnull align 8 dereferenceable(33) %105)
          to label %459 unwind label %541

459:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %111) #7
  %460 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %112) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef nonnull @.str.413, i64 noundef 31)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %111, ptr noundef nonnull align 8 dereferenceable(9) %460, ptr noundef nonnull align 8 dereferenceable(16) %112)
          to label %461 unwind label %543

461:                                              ; preds = %459
  %462 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #7
  %463 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %464 unwind label %545

464:                                              ; preds = %461
  store double %463, ptr %113, align 8
  %465 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %462, ptr noundef nonnull align 8 dereferenceable(8) %113)
  %466 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %111, ptr noundef nonnull align 8 dereferenceable(9) %465)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %115) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %116) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %116, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %117) #7
  %467 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %468 unwind label %547

468:                                              ; preds = %464
  store double %467, ptr %117, align 8
  %469 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %116, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %470 unwind label %547

470:                                              ; preds = %468
  store i32 %469, ptr %115, align 4
  %471 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %115)
  %472 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(9) %466, ptr noundef nonnull %114, i64 noundef 316, i32 noundef 1, i32 noundef %471, i64 noundef 0)
          to label %473 unwind label %547

473:                                              ; preds = %470
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %105) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %106) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %104) #7
  %474 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %474, label %.preheader264, label %475, !llvm.loop !22

475:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %15) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %14) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  %476 = add nuw nsw i64 %.0140282, 1
  %exitcond287.not = icmp eq i64 %476, 100
  br i1 %exitcond287.not, label %.preheader253, label %.preheader279, !llvm.loop !23

.loopexit265:                                     ; preds = %.preheader264
  %lpad.loopexit267 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp266

.loopexit.split-lp266.loopexit:                   ; preds = %.preheader270
  %lpad.loopexit271 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp266

.loopexit.split-lp266.loopexit.split-lp.loopexit: ; preds = %.preheader274
  %lpad.loopexit275 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp266

.loopexit.split-lp266.loopexit.split-lp.loopexit.split-lp: ; preds = %.preheader278
  %lpad.loopexit.split-lp276 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp266

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

479:                                              ; preds = %380, %379
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %495

481:                                              ; preds = %383, %381
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %494

483:                                              ; preds = %384
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %493

485:                                              ; preds = %385
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %492

487:                                              ; preds = %387
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %491

489:                                              ; preds = %396, %394, %390
  %490 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #7
  br label %491

491:                                              ; preds = %489, %487
  %.pn187 = phi { ptr, i32 } [ %490, %489 ], [ %488, %487 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %492

492:                                              ; preds = %491, %485
  %.pn187.pn = phi { ptr, i32 } [ %.pn187, %491 ], [ %486, %485 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #7
  br label %493

493:                                              ; preds = %492, %483
  %.pn187.pn.pn = phi { ptr, i32 } [ %.pn187.pn, %492 ], [ %484, %483 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %54) #7
  br label %494

494:                                              ; preds = %493, %481
  %.pn187.pn.pn.pn = phi { ptr, i32 } [ %.pn187.pn.pn, %493 ], [ %482, %481 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %55) #7
  br label %495

495:                                              ; preds = %494, %479
  %.pn187.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn187.pn.pn.pn, %494 ], [ %480, %479 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  br label %496

496:                                              ; preds = %495, %477
  %.pn187.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn187.pn.pn.pn.pn, %495 ], [ %478, %477 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #7
  br label %.loopexit.split-lp266

497:                                              ; preds = %402
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %516

499:                                              ; preds = %405, %404
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %515

501:                                              ; preds = %408, %406
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %514

503:                                              ; preds = %409
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %513

505:                                              ; preds = %410
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %512

507:                                              ; preds = %412
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %421, %419, %415
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #7
  br label %511

511:                                              ; preds = %509, %507
  %.pn194 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #7
  br label %512

512:                                              ; preds = %511, %505
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %511 ], [ %506, %505 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %78) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #7
  br label %513

513:                                              ; preds = %512, %503
  %.pn194.pn.pn = phi { ptr, i32 } [ %.pn194.pn, %512 ], [ %504, %503 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %71) #7
  br label %514

514:                                              ; preds = %513, %501
  %.pn194.pn.pn.pn = phi { ptr, i32 } [ %.pn194.pn.pn, %513 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %72) #7
  br label %515

515:                                              ; preds = %514, %499
  %.pn194.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn194.pn.pn.pn, %514 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  br label %516

516:                                              ; preds = %515, %497
  %.pn194.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn194.pn.pn.pn.pn, %515 ], [ %498, %497 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %72) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #7
  br label %.loopexit.split-lp266

517:                                              ; preds = %427
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %536

519:                                              ; preds = %430, %429
  %520 = landingpad { ptr, i32 }
          cleanup
  br label %535

521:                                              ; preds = %433, %431
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %534

523:                                              ; preds = %434
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %533

525:                                              ; preds = %435
  %526 = landingpad { ptr, i32 }
          cleanup
  br label %532

527:                                              ; preds = %437
  %528 = landingpad { ptr, i32 }
          cleanup
  br label %531

529:                                              ; preds = %446, %444, %440
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #7
  br label %531

531:                                              ; preds = %529, %527
  %.pn201 = phi { ptr, i32 } [ %530, %529 ], [ %528, %527 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #7
  br label %532

532:                                              ; preds = %531, %525
  %.pn201.pn = phi { ptr, i32 } [ %.pn201, %531 ], [ %526, %525 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %95) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  br label %533

533:                                              ; preds = %532, %523
  %.pn201.pn.pn = phi { ptr, i32 } [ %.pn201.pn, %532 ], [ %524, %523 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %88) #7
  br label %534

534:                                              ; preds = %533, %521
  %.pn201.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn, %533 ], [ %522, %521 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %89) #7
  br label %535

535:                                              ; preds = %534, %519
  %.pn201.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn, %534 ], [ %520, %519 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  br label %536

536:                                              ; preds = %535, %517
  %.pn201.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn201.pn.pn.pn.pn, %535 ], [ %518, %517 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %87) #7
  br label %.loopexit.split-lp266

537:                                              ; preds = %454, %453, %452
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %553

539:                                              ; preds = %457, %455
  %540 = landingpad { ptr, i32 }
          cleanup
  br label %552

541:                                              ; preds = %458
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %551

543:                                              ; preds = %459
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %550

545:                                              ; preds = %461
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %549

547:                                              ; preds = %470, %468, %464
  %548 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %115) #7
  br label %549

549:                                              ; preds = %547, %545
  %.pn208 = phi { ptr, i32 } [ %548, %547 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #7
  br label %550

550:                                              ; preds = %549, %543
  %.pn208.pn = phi { ptr, i32 } [ %.pn208, %549 ], [ %544, %543 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %112) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #7
  br label %551

551:                                              ; preds = %550, %541
  %.pn208.pn.pn = phi { ptr, i32 } [ %.pn208.pn, %550 ], [ %542, %541 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %105) #7
  br label %552

552:                                              ; preds = %551, %539
  %.pn208.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn, %551 ], [ %540, %539 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEES6_NS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %106) #7
  br label %553

553:                                              ; preds = %552, %537
  %.pn208.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn, %552 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %106) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %105) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %104) #7
  br label %.loopexit.split-lp266

.loopexit.split-lp266:                            ; preds = %.loopexit265, %.loopexit.split-lp266.loopexit.split-lp.loopexit, %.loopexit.split-lp266.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp266.loopexit, %553, %536, %516, %496, %.loopexit.split-lp256
  %.pn222.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn, %.loopexit.split-lp256 ], [ %.pn208.pn.pn.pn.pn, %553 ], [ %.pn201.pn.pn.pn.pn.pn, %536 ], [ %.pn194.pn.pn.pn.pn.pn, %516 ], [ %.pn187.pn.pn.pn.pn.pn, %496 ], [ %lpad.loopexit267, %.loopexit265 ], [ %lpad.loopexit271, %.loopexit.split-lp266.loopexit ], [ %lpad.loopexit275, %.loopexit.split-lp266.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp276, %.loopexit.split-lp266.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  br label %554

554:                                              ; preds = %.loopexit.split-lp266, %286
  %.pn222.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn.pn, %.loopexit.split-lp266 ], [ %287, %286 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %15) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %14) #7
  br label %555

555:                                              ; preds = %554, %284
  %.pn222.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn.pn.pn, %554 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %14) #7
  br label %556

556:                                              ; preds = %276, %278, %280, %555
  %.pn230.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn.pn.pn.pn, %555 ], [ %277, %276 ], [ %281, %280 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %859

557:                                              ; preds = %786
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 5000, ptr nonnull %6) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %4) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %4) #7
  ret void

.preheader253:                                    ; preds = %475, %786
  %.0139285 = phi i64 [ %787, %786 ], [ 0, %475 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %118) #7
  store double 0.000000e+00, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %119) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %119, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  br label %559

558:                                              ; preds = %588
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %124) #7
  invoke void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(352) %124, ptr noundef nonnull align 8 dereferenceable(352) %4)
          to label %607 unwind label %609

559:                                              ; preds = %.preheader253, %588
  %.0138283 = phi i64 [ 0, %.preheader253 ], [ %600, %588 ]
  %560 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %561 unwind label %601

561:                                              ; preds = %559
  %562 = fadd double %560, 1.000000e+00
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  store double %562, ptr %563, align 8, !tbaa !5
  %564 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  %565 = load double, ptr %564, align 8, !tbaa !5
  %566 = fdiv double 1.000000e+00, %565
  %567 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5rmassEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  store double %566, ptr %567, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %120) #7
  %568 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %569 unwind label %603

569:                                              ; preds = %561
  %570 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %571 unwind label %603

571:                                              ; preds = %569
  %572 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %573 unwind label %603

573:                                              ; preds = %571
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %120, double noundef %568, double noundef %570, double noundef %572) #7
  %574 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %574, ptr noundef nonnull align 8 dereferenceable(24) %120, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %120) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %121) #7
  %575 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %576 unwind label %605

576:                                              ; preds = %573
  %577 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %578 unwind label %605

578:                                              ; preds = %576
  %579 = invoke noundef double @_ZNSt25uniform_real_distributionIdEclISt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EEEEdRT_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(5000) %6)
          to label %580 unwind label %605

580:                                              ; preds = %578
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %121, double noundef %575, double noundef %577, double noundef %579) #7
  %581 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %581, ptr noundef nonnull align 8 dereferenceable(24) %121, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %121) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %122) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %122, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  %582 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5forceEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %582, ptr noundef nonnull align 8 dereferenceable(24) %122, i64 24, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %122) #7
  %583 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4nameB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef 0) #7
  %584 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %583, ptr noundef nonnull @.str.403)
          to label %585 unwind label %601

585:                                              ; preds = %580
  %586 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE5groupB5cxx11Em(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef 0) #7
  %587 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %586, ptr noundef nonnull @.str.403)
          to label %588 unwind label %601

588:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %123) #7
  %589 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  %590 = load double, ptr %589, align 8, !tbaa !5
  %591 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %123, double noundef %590, ptr noundef nonnull align 8 dereferenceable(24) %591) #7
  %592 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %119, ptr noundef nonnull align 8 dereferenceable(24) %123) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %123) #7
  %593 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  %594 = load double, ptr %593, align 8, !tbaa !5
  %595 = fmul double %594, 5.000000e-01
  %596 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0138283) #7
  %597 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %596) #7
  %598 = load double, ptr %118, align 8, !tbaa !5
  %599 = call double @llvm.fmuladd.f64(double %595, double %597, double %598)
  store double %599, ptr %118, align 8, !tbaa !5
  %600 = add nuw nsw i64 %.0138283, 1
  %exitcond288.not = icmp eq i64 %600, 100
  br i1 %exitcond288.not, label %558, label %559, !llvm.loop !24

601:                                              ; preds = %585, %580, %559
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %858

603:                                              ; preds = %571, %569, %561
  %604 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %120) #7
  br label %858

605:                                              ; preds = %578, %576, %573
  %606 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %121) #7
  br label %858

607:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %125) #7
  invoke void @_ZN7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEEC2Ebbb(ptr noundef nonnull align 1 dereferenceable(3) %125, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %608 unwind label %611

608:                                              ; preds = %607
  call void @_ZNK7mjolnir19SystemMotionRemoverINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE6removeERNS_6SystemIS3_EE(ptr noundef nonnull align 1 dereferenceable(3) %125, ptr noundef nonnull align 8 dereferenceable(352) %4) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %126) #7
  call void @_ZN7mjolnir4math15make_coordinateINS0_6MatrixIdLm3ELm1EEEEET_NS0_12real_type_ofIS4_E4typeES7_S7_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %126, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 0.000000e+00) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #7
  store double 0.000000e+00, ptr %127, align 8, !tbaa !5
  br label %613

609:                                              ; preds = %558
  %610 = landingpad { ptr, i32 }
          cleanup
  br label %857

611:                                              ; preds = %607
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %856

613:                                              ; preds = %608, %666
  %.0137284 = phi i64 [ 0, %608 ], [ %667, %666 ]
  %614 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE4massEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  %615 = load double, ptr %614, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %128) #7
  %616 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  call void @_ZN7mjolnir4mathmiIdLm3ELm1EEENS0_6MatrixIT_XT0_EXT1_EEERKS4_S6_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %128, ptr noundef nonnull align 8 dereferenceable(24) %616, ptr noundef nonnull align 8 dereferenceable(24) %119) #7
  %617 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8velocityEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %129) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %130) #7
  call void @_ZN7mjolnir4math13cross_productIdEENS0_6MatrixIT_Lm3ELm1EEERKS4_S6_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %130, ptr noundef nonnull align 8 dereferenceable(24) %128, ptr noundef nonnull align 8 dereferenceable(24) %617) #7
  call void @_ZN7mjolnir4mathmlIddLm3ELm1EEENS0_6MatrixIT_XT1_EXT2_EEET0_RKS4_(ptr dead_on_unwind nonnull writable sret(%"class.mjolnir::math::Matrix.334") align 8 %129, double noundef %615, ptr noundef nonnull align 8 dereferenceable(24) %130) #7
  %618 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir4math6MatrixIdLm3ELm1EEpLIdEERS2_RKNS1_IT_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %126, ptr noundef nonnull align 8 dereferenceable(24) %129) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %129) #7
  %619 = fmul double %615, 5.000000e-01
  %620 = call noundef double @_ZN7mjolnir4math9length_sqIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %617) #7
  %621 = load double, ptr %127, align 8, !tbaa !5
  %622 = call double @llvm.fmuladd.f64(double %619, double %620, double %621)
  store double %622, ptr %127, align 8, !tbaa !5
  br label %623

623:                                              ; preds = %636, %613
  %624 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %132)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %624, ptr noundef nonnull %131, i64 noundef 354, ptr noundef nonnull %132)
          to label %625 unwind label %.loopexit.split-lp.loopexit.split-lp

625:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %133) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %134) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %135) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %136) #7
  %626 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  %627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %626) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %135, ptr noundef nonnull align 1 dereferenceable(1) %136, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %628 unwind label %668

628:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #7
  %629 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %124, i64 noundef %.0137284) #7
  %630 = call noundef double @_ZN7mjolnir4math1XIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %629) #7
  store double %630, ptr %137, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %134, ptr noundef nonnull align 1 dereferenceable(1) %135, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %631 unwind label %670

631:                                              ; preds = %628
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %133, ptr noundef nonnull align 8 dereferenceable(16) %134, i1 noundef zeroext false)
          to label %632 unwind label %670

632:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %138) #7
  %633 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %139) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %139, ptr noundef nonnull @.str.404, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %138, ptr noundef nonnull align 8 dereferenceable(9) %633, ptr noundef nonnull align 8 dereferenceable(16) %139)
          to label %634 unwind label %672

634:                                              ; preds = %632
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull @.str.401, i64 noundef 92)
  %635 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 8 dereferenceable(9) %138, ptr noundef nonnull %140, i64 noundef 354, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %636 unwind label %674

636:                                              ; preds = %634
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %133) #7
  %637 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %637, label %623, label %.preheader236, !llvm.loop !25

.preheader236:                                    ; preds = %636, %650
  %638 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull %141, i64 noundef 355, ptr noundef nonnull %142)
          to label %639 unwind label %.loopexit.split-lp.loopexit

639:                                              ; preds = %.preheader236
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %143) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %144) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %146) #7
  %640 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  %641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %640) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %145, ptr noundef nonnull align 1 dereferenceable(1) %146, ptr noundef nonnull align 8 dereferenceable(8) %641)
          to label %642 unwind label %679

642:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #7
  %643 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %124, i64 noundef %.0137284) #7
  %644 = call noundef double @_ZN7mjolnir4math1YIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %643) #7
  store double %644, ptr %147, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %144, ptr noundef nonnull align 1 dereferenceable(1) %145, ptr noundef nonnull align 8 dereferenceable(8) %147)
          to label %645 unwind label %681

645:                                              ; preds = %642
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %143, ptr noundef nonnull align 8 dereferenceable(16) %144, i1 noundef zeroext false)
          to label %646 unwind label %681

646:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %148) #7
  %647 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %149) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull @.str.405, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %148, ptr noundef nonnull align 8 dereferenceable(9) %647, ptr noundef nonnull align 8 dereferenceable(16) %149)
          to label %648 unwind label %683

648:                                              ; preds = %646
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull @.str.401, i64 noundef 92)
  %649 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %143, ptr noundef nonnull align 8 dereferenceable(9) %148, ptr noundef nonnull %150, i64 noundef 355, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %650 unwind label %685

650:                                              ; preds = %648
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %143) #7
  %651 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %651, label %.preheader236, label %.preheader, !llvm.loop !26

.preheader:                                       ; preds = %650, %664
  %652 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %151, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %152)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %652, ptr noundef nonnull %151, i64 noundef 356, ptr noundef nonnull %152)
          to label %653 unwind label %.loopexit

653:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %153) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %154) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %155) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %156) #7
  %654 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %4, i64 noundef %.0137284) #7
  %655 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %654) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %155, ptr noundef nonnull align 1 dereferenceable(1) %156, ptr noundef nonnull align 8 dereferenceable(8) %655)
          to label %656 unwind label %690

656:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #7
  %657 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEE8positionEm(ptr noundef nonnull align 8 dereferenceable(352) %124, i64 noundef %.0137284) #7
  %658 = call noundef double @_ZN7mjolnir4math1ZIdEET_RKNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %657) #7
  store double %658, ptr %157, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %154, ptr noundef nonnull align 1 dereferenceable(1) %155, ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %659 unwind label %692

659:                                              ; preds = %656
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEEdNS1_2op2EQIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %153, ptr noundef nonnull align 8 dereferenceable(16) %154, i1 noundef zeroext false)
          to label %660 unwind label %692

660:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %158) #7
  %661 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %159) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %159, ptr noundef nonnull @.str.406, i64 noundef 74)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %158, ptr noundef nonnull align 8 dereferenceable(9) %661, ptr noundef nonnull align 8 dereferenceable(16) %159)
          to label %662 unwind label %694

662:                                              ; preds = %660
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef nonnull @.str.401, i64 noundef 92)
  %663 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %153, ptr noundef nonnull align 8 dereferenceable(9) %158, ptr noundef nonnull %160, i64 noundef 356, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %664 unwind label %696

664:                                              ; preds = %662
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %153) #7
  %665 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %665, label %.preheader, label %666, !llvm.loop !27

666:                                              ; preds = %664
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %128) #7
  %667 = add nuw nsw i64 %.0137284, 1
  %exitcond289.not = icmp eq i64 %667, 100
  br i1 %exitcond289.not, label %.preheader252, label %613, !llvm.loop !28

.loopexit:                                        ; preds = %.preheader
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %.preheader236
  %lpad.loopexit237 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %623
  %lpad.loopexit.split-lp238 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

668:                                              ; preds = %625
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %678

670:                                              ; preds = %631, %628
  %671 = landingpad { ptr, i32 }
          cleanup
  br label %677

672:                                              ; preds = %632
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %676

674:                                              ; preds = %634
  %675 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #7
  br label %676

676:                                              ; preds = %674, %672
  %.pn168 = phi { ptr, i32 } [ %675, %674 ], [ %673, %672 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %139) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %138) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #7
  br label %677

677:                                              ; preds = %676, %670
  %.pn168.pn = phi { ptr, i32 } [ %.pn168, %676 ], [ %671, %670 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #7
  br label %678

678:                                              ; preds = %677, %668
  %.pn168.pn.pn = phi { ptr, i32 } [ %.pn168.pn, %677 ], [ %669, %668 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %133) #7
  br label %.loopexit.split-lp

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

681:                                              ; preds = %645, %642
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %688

683:                                              ; preds = %646
  %684 = landingpad { ptr, i32 }
          cleanup
  br label %687

685:                                              ; preds = %648
  %686 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #7
  br label %687

687:                                              ; preds = %685, %683
  %.pn172 = phi { ptr, i32 } [ %686, %685 ], [ %684, %683 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %149) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %148) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #7
  br label %688

688:                                              ; preds = %687, %681
  %.pn172.pn = phi { ptr, i32 } [ %.pn172, %687 ], [ %682, %681 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #7
  br label %689

689:                                              ; preds = %688, %679
  %.pn172.pn.pn = phi { ptr, i32 } [ %.pn172.pn, %688 ], [ %680, %679 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %144) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %143) #7
  br label %.loopexit.split-lp

690:                                              ; preds = %653
  %691 = landingpad { ptr, i32 }
          cleanup
  br label %700

692:                                              ; preds = %659, %656
  %693 = landingpad { ptr, i32 }
          cleanup
  br label %699

694:                                              ; preds = %660
  %695 = landingpad { ptr, i32 }
          cleanup
  br label %698

696:                                              ; preds = %662
  %697 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #7
  br label %698

698:                                              ; preds = %696, %694
  %.pn176 = phi { ptr, i32 } [ %697, %696 ], [ %695, %694 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %158) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #7
  br label %699

699:                                              ; preds = %698, %692
  %.pn176.pn = phi { ptr, i32 } [ %.pn176, %698 ], [ %693, %692 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #7
  br label %700

700:                                              ; preds = %699, %690
  %.pn176.pn.pn = phi { ptr, i32 } [ %.pn176.pn, %699 ], [ %691, %690 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %155) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %153) #7
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %700, %689, %678
  %.pn176.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn, %700 ], [ %.pn172.pn.pn, %689 ], [ %.pn168.pn.pn, %678 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit237, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp238, %.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %128) #7
  br label %.loopexit.split-lp242

.preheader252:                                    ; preds = %666, %724
  %701 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %162)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %701, ptr noundef nonnull %161, i64 noundef 359, ptr noundef nonnull %162)
          to label %702 unwind label %.loopexit.split-lp242.loopexit.split-lp.loopexit.split-lp

702:                                              ; preds = %.preheader252
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %163) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %164) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %165) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %166) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %168) #7
  %703 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1XIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %126) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %167, ptr noundef nonnull align 1 dereferenceable(1) %168, ptr noundef nonnull align 8 dereferenceable(8) %703)
          to label %704 unwind label %788

704:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %169) #7
  store double 0.000000e+00, ptr %169, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %166, ptr noundef nonnull align 1 dereferenceable(1) %167, ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %705 unwind label %790

705:                                              ; preds = %704
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %165, ptr noundef nonnull align 8 dereferenceable(16) %166)
          to label %706 unwind label %790

706:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %170) #7
  %707 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %708 unwind label %792

708:                                              ; preds = %706
  store double %707, ptr %170, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %164, ptr noundef nonnull align 8 dereferenceable(33) %165, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %709 unwind label %792

709:                                              ; preds = %708
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %163, ptr noundef nonnull align 8 dereferenceable(33) %164)
          to label %710 unwind label %794

710:                                              ; preds = %709
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %171) #7
  %711 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %172) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %172, ptr noundef nonnull @.str.410, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %171, ptr noundef nonnull align 8 dereferenceable(9) %711, ptr noundef nonnull align 8 dereferenceable(16) %172)
          to label %712 unwind label %796

712:                                              ; preds = %710
  %713 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #7
  %714 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %715 unwind label %798

715:                                              ; preds = %712
  store double %714, ptr %173, align 8
  %716 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %713, ptr noundef nonnull align 8 dereferenceable(8) %173)
  %717 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %171, ptr noundef nonnull align 8 dereferenceable(9) %716)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %174, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %175) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %176) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %176, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %177) #7
  %718 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %719 unwind label %800

719:                                              ; preds = %715
  store double %718, ptr %177, align 8
  %720 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %176, ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %721 unwind label %800

721:                                              ; preds = %719
  store i32 %720, ptr %175, align 4
  %722 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %175)
  %723 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(9) %717, ptr noundef nonnull %174, i64 noundef 359, i32 noundef 1, i32 noundef %722, i64 noundef 0)
          to label %724 unwind label %800

724:                                              ; preds = %721
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %176) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %175) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %172) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %171) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %164) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %165) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %165) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %164) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %163) #7
  %725 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %725, label %.preheader252, label %.preheader249, !llvm.loop !29

.preheader249:                                    ; preds = %724, %749
  %726 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %178, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %179)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %726, ptr noundef nonnull %178, i64 noundef 360, ptr noundef nonnull %179)
          to label %727 unwind label %.loopexit.split-lp242.loopexit.split-lp.loopexit

727:                                              ; preds = %.preheader249
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %180) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %181) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %182) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %183) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %184) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %185) #7
  %728 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1YIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %126) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %184, ptr noundef nonnull align 1 dereferenceable(1) %185, ptr noundef nonnull align 8 dereferenceable(8) %728)
          to label %729 unwind label %808

729:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %186) #7
  store double 0.000000e+00, ptr %186, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %183, ptr noundef nonnull align 1 dereferenceable(1) %184, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %730 unwind label %810

730:                                              ; preds = %729
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %182, ptr noundef nonnull align 8 dereferenceable(16) %183)
          to label %731 unwind label %810

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #7
  %732 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %733 unwind label %812

733:                                              ; preds = %731
  store double %732, ptr %187, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %181, ptr noundef nonnull align 8 dereferenceable(33) %182, ptr noundef nonnull align 8 dereferenceable(8) %187)
          to label %734 unwind label %812

734:                                              ; preds = %733
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %180, ptr noundef nonnull align 8 dereferenceable(33) %181)
          to label %735 unwind label %814

735:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %188) #7
  %736 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %189) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %189, ptr noundef nonnull @.str.411, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %188, ptr noundef nonnull align 8 dereferenceable(9) %736, ptr noundef nonnull align 8 dereferenceable(16) %189)
          to label %737 unwind label %816

737:                                              ; preds = %735
  %738 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %190) #7
  %739 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %740 unwind label %818

740:                                              ; preds = %737
  store double %739, ptr %190, align 8
  %741 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %738, ptr noundef nonnull align 8 dereferenceable(8) %190)
  %742 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %188, ptr noundef nonnull align 8 dereferenceable(9) %741)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %191, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %192) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %193) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %193, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #7
  %743 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %744 unwind label %820

744:                                              ; preds = %740
  store double %743, ptr %194, align 8
  %745 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %193, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %746 unwind label %820

746:                                              ; preds = %744
  store i32 %745, ptr %192, align 4
  %747 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %192)
  %748 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %180, ptr noundef nonnull align 8 dereferenceable(9) %742, ptr noundef nonnull %191, i64 noundef 360, i32 noundef 1, i32 noundef %747, i64 noundef 0)
          to label %749 unwind label %820

749:                                              ; preds = %746
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %193) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %192) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %190) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %181) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %182) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %185) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %182) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %181) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %180) #7
  %750 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %750, label %.preheader249, label %.preheader245, !llvm.loop !30

.preheader245:                                    ; preds = %749, %774
  %751 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %195, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %196)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %751, ptr noundef nonnull %195, i64 noundef 361, ptr noundef nonnull %196)
          to label %752 unwind label %.loopexit.split-lp242.loopexit

752:                                              ; preds = %.preheader245
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %197) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %198) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %199) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %200) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %201) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %202) #7
  %753 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN7mjolnir4math1ZIdEERT_RNS0_6MatrixIS2_Lm3ELm1EEE(ptr noundef nonnull align 8 dereferenceable(24) %126) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %201, ptr noundef nonnull align 1 dereferenceable(1) %202, ptr noundef nonnull align 8 dereferenceable(8) %753)
          to label %754 unwind label %828

754:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %203) #7
  store double 0.000000e+00, ptr %203, align 8, !tbaa !5
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEeqIdEENS1_11binary_exprIS5_T_NS1_2op2EQIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr") align 8 %200, ptr noundef nonnull align 1 dereferenceable(1) %201, ptr noundef nonnull align 8 dereferenceable(8) %203)
          to label %755 unwind label %830

755:                                              ; preds = %754
  invoke void @_ZN5boost10test_tools9tt_detail18assertion_evaluateINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEENS1_20assertion_evaluate_tIT_EERKSD_(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %199, ptr noundef nonnull align 8 dereferenceable(16) %200)
          to label %756 unwind label %830

756:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #7
  %757 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %758 unwind label %832

758:                                              ; preds = %756
  store double %757, ptr %204, align 8
  invoke void @_ZN5boost10test_tools9tt_detaillsINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEdEENS1_20assertion_evaluate_tIT_EERKSE_RKNS1_15tolerance_manipIT0_EE(ptr dead_on_unwind nonnull writable sret(%"struct.boost::test_tools::tt_detail::assertion_evaluate_t") align 8 %198, ptr noundef nonnull align 8 dereferenceable(33) %199, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %759 unwind label %832

759:                                              ; preds = %758
  invoke void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEEcvNS0_16assertion_resultEEv(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %197, ptr noundef nonnull align 8 dereferenceable(33) %198)
          to label %760 unwind label %834

760:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %205) #7
  %761 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %206) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %206, ptr noundef nonnull @.str.412, i64 noundef 33)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %205, ptr noundef nonnull align 8 dereferenceable(9) %761, ptr noundef nonnull align 8 dereferenceable(16) %206)
          to label %762 unwind label %836

762:                                              ; preds = %760
  %763 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %207) #7
  %764 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %765 unwind label %838

765:                                              ; preds = %762
  store double %764, ptr %207, align 8
  %766 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detaillsIdEERNS_9unit_test12lazy_ostreamES5_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 8 dereferenceable(9) %763, ptr noundef nonnull align 8 dereferenceable(8) %207)
  %767 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost10test_tools9tt_detail14assertion_textERKNS_9unit_test12lazy_ostreamES5_(ptr noundef nonnull align 8 dereferenceable(9) %205, ptr noundef nonnull align 8 dereferenceable(9) %766)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %208, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %209) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %210) #7
  call void @_ZN5boost10test_tools9tt_detail14assertion_typeC2ENS1_10check_typeE(ptr noundef nonnull align 4 dereferenceable(4) %210, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %211) #7
  %768 = invoke double @_ZN5boost10test_tools9toleranceIdEENS0_9tt_detail15tolerance_manipIT_EES4_(double noundef 1.000000e-08)
          to label %769 unwind label %840

769:                                              ; preds = %765
  store double %768, ptr %211, align 8
  %770 = invoke i32 @_ZN5boost10test_tools9tt_detaillsIdEENS1_14assertion_typeERKS3_RKNS1_15tolerance_manipIT_EE(ptr noundef nonnull align 4 dereferenceable(4) %210, ptr noundef nonnull align 8 dereferenceable(8) %211)
          to label %771 unwind label %840

771:                                              ; preds = %769
  store i32 %770, ptr %209, align 4
  %772 = call noundef i32 @_ZN5boost10test_tools9tt_detail14assertion_typecvNS1_10check_typeEEv(ptr noundef nonnull align 4 dereferenceable(4) %209)
  %773 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %197, ptr noundef nonnull align 8 dereferenceable(9) %767, ptr noundef nonnull %208, i64 noundef 361, i32 noundef 1, i32 noundef %772, i64 noundef 0)
          to label %774 unwind label %840

774:                                              ; preds = %771
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %210) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %209) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %206) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %205) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %198) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %199) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %200) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %199) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %198) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #7
  %775 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %775, label %.preheader245, label %.preheader240, !llvm.loop !31

.preheader240:                                    ; preds = %774, %784
  %776 = load ptr, ptr @_ZN5boost9unit_test12_GLOBAL__N_113unit_test_logE, align 8, !tbaa !13
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %212, ptr noundef nonnull @.str.401, i64 noundef 92)
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %213)
  invoke void @_ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEmS4_(ptr noundef nonnull align 8 dereferenceable(8) %776, ptr noundef nonnull %212, i64 noundef 364, ptr noundef nonnull %213)
          to label %777 unwind label %.loopexit241

777:                                              ; preds = %.preheader240
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %214) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %215) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %216) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %217) #7
  invoke void @_ZNK5boost10test_tools9assertion4seedpmIRdEENS1_10value_exprIT_EEOS6_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::value_expr") align 8 %216, ptr noundef nonnull align 1 dereferenceable(1) %217, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %778 unwind label %848

778:                                              ; preds = %777
  invoke void @_ZN5boost10test_tools9assertion15expression_baseINS1_10value_exprIRdEEdEgeIS4_EENS1_11binary_exprIS5_T_NS1_2op2GEIdNS6_4RhsTIS9_E4typeEvEEEEOS9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion::binary_expr.347") align 8 %215, ptr noundef nonnull align 1 dereferenceable(1) %216, ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %779 unwind label %848

779:                                              ; preds = %778
  invoke void @_ZNK5boost10test_tools9assertion11binary_exprINS1_10value_exprIRdEES4_NS1_2op2GEIddvEEE8evaluateEb(ptr dead_on_unwind nonnull writable sret(%"class.boost::test_tools::assertion_result") align 8 %214, ptr noundef nonnull align 8 dereferenceable(16) %215, i1 noundef zeroext false)
          to label %780 unwind label %848

780:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %218) #7
  %781 = call noundef nonnull align 8 dereferenceable(9) ptr @_ZN5boost9unit_test12lazy_ostream8instanceEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %219) #7
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull @.str.414, i64 noundef 31)
  invoke void @_ZN5boost9unit_testlsINS0_13basic_cstringIKcEEEENS0_17lazy_ostream_implINS0_12lazy_ostreamET_RKS7_EERKS6_S9_(ptr dead_on_unwind nonnull writable sret(%"class.boost::unit_test::lazy_ostream_impl.337") align 8 %218, ptr noundef nonnull align 8 dereferenceable(9) %781, ptr noundef nonnull align 8 dereferenceable(16) %219)
          to label %782 unwind label %850

782:                                              ; preds = %780
  call void @_ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_(ptr noundef nonnull align 8 dereferenceable(16) %220, ptr noundef nonnull @.str.401, i64 noundef 92)
  %783 = invoke noundef zeroext i1 (ptr, ptr, ptr, i64, i32, i32, i64, ...) @_ZN5boost10test_tools9tt_detail16report_assertionERKNS0_16assertion_resultERKNS_9unit_test12lazy_ostreamENS5_13basic_cstringIKcEEmNS1_10tool_levelENS1_10check_typeEmz(ptr noundef nonnull align 8 dereferenceable(24) %214, ptr noundef nonnull align 8 dereferenceable(9) %218, ptr noundef nonnull %220, i64 noundef 364, i32 noundef 1, i32 noundef 14, i64 noundef 0)
          to label %784 unwind label %852

784:                                              ; preds = %782
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %218) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %214) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %214) #7
  %785 = call noundef zeroext i1 @_ZN5boost10test_tools9tt_detail10dummy_condEv()
  br i1 %785, label %.preheader240, label %786, !llvm.loop !32

786:                                              ; preds = %784
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %126) #7
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %125) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %124) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %124) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #7
  %787 = add nuw nsw i64 %.0139285, 1
  %exitcond290.not = icmp eq i64 %787, 100
  br i1 %exitcond290.not, label %557, label %.preheader253, !llvm.loop !33

.loopexit241:                                     ; preds = %.preheader240
  %lpad.loopexit243 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp242

.loopexit.split-lp242.loopexit:                   ; preds = %.preheader245
  %lpad.loopexit246 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp242

.loopexit.split-lp242.loopexit.split-lp.loopexit: ; preds = %.preheader249
  %lpad.loopexit250 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp242

.loopexit.split-lp242.loopexit.split-lp.loopexit.split-lp: ; preds = %.preheader252
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp242

788:                                              ; preds = %702
  %789 = landingpad { ptr, i32 }
          cleanup
  br label %807

790:                                              ; preds = %705, %704
  %791 = landingpad { ptr, i32 }
          cleanup
  br label %806

792:                                              ; preds = %708, %706
  %793 = landingpad { ptr, i32 }
          cleanup
  br label %805

794:                                              ; preds = %709
  %795 = landingpad { ptr, i32 }
          cleanup
  br label %804

796:                                              ; preds = %710
  %797 = landingpad { ptr, i32 }
          cleanup
  br label %803

798:                                              ; preds = %712
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %802

800:                                              ; preds = %721, %719, %715
  %801 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %176) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %175) #7
  br label %802

802:                                              ; preds = %800, %798
  %.pn144 = phi { ptr, i32 } [ %801, %800 ], [ %799, %798 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #7
  br label %803

803:                                              ; preds = %802, %796
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %802 ], [ %797, %796 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %172) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %171) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %163) #7
  br label %804

804:                                              ; preds = %803, %794
  %.pn144.pn.pn = phi { ptr, i32 } [ %.pn144.pn, %803 ], [ %795, %794 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %164) #7
  br label %805

805:                                              ; preds = %804, %792
  %.pn144.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn, %804 ], [ %793, %792 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %165) #7
  br label %806

806:                                              ; preds = %805, %790
  %.pn144.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn, %805 ], [ %791, %790 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #7
  br label %807

807:                                              ; preds = %806, %788
  %.pn144.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn144.pn.pn.pn.pn, %806 ], [ %789, %788 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %168) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %165) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %164) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %163) #7
  br label %.loopexit.split-lp242

808:                                              ; preds = %727
  %809 = landingpad { ptr, i32 }
          cleanup
  br label %827

810:                                              ; preds = %730, %729
  %811 = landingpad { ptr, i32 }
          cleanup
  br label %826

812:                                              ; preds = %733, %731
  %813 = landingpad { ptr, i32 }
          cleanup
  br label %825

814:                                              ; preds = %734
  %815 = landingpad { ptr, i32 }
          cleanup
  br label %824

816:                                              ; preds = %735
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %823

818:                                              ; preds = %737
  %819 = landingpad { ptr, i32 }
          cleanup
  br label %822

820:                                              ; preds = %746, %744, %740
  %821 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %193) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %192) #7
  br label %822

822:                                              ; preds = %820, %818
  %.pn151 = phi { ptr, i32 } [ %821, %820 ], [ %819, %818 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %190) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #7
  br label %823

823:                                              ; preds = %822, %816
  %.pn151.pn = phi { ptr, i32 } [ %.pn151, %822 ], [ %817, %816 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %189) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %188) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #7
  br label %824

824:                                              ; preds = %823, %814
  %.pn151.pn.pn = phi { ptr, i32 } [ %.pn151.pn, %823 ], [ %815, %814 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %181) #7
  br label %825

825:                                              ; preds = %824, %812
  %.pn151.pn.pn.pn = phi { ptr, i32 } [ %.pn151.pn.pn, %824 ], [ %813, %812 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %182) #7
  br label %826

826:                                              ; preds = %825, %810
  %.pn151.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn151.pn.pn.pn, %825 ], [ %811, %810 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %186) #7
  br label %827

827:                                              ; preds = %826, %808
  %.pn151.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn151.pn.pn.pn.pn, %826 ], [ %809, %808 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %185) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %182) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %181) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %180) #7
  br label %.loopexit.split-lp242

828:                                              ; preds = %752
  %829 = landingpad { ptr, i32 }
          cleanup
  br label %847

830:                                              ; preds = %755, %754
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %846

832:                                              ; preds = %758, %756
  %833 = landingpad { ptr, i32 }
          cleanup
  br label %845

834:                                              ; preds = %759
  %835 = landingpad { ptr, i32 }
          cleanup
  br label %844

836:                                              ; preds = %760
  %837 = landingpad { ptr, i32 }
          cleanup
  br label %843

838:                                              ; preds = %762
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %842

840:                                              ; preds = %771, %769, %765
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %211) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %210) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %209) #7
  br label %842

842:                                              ; preds = %840, %838
  %.pn158 = phi { ptr, i32 } [ %841, %840 ], [ %839, %838 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #7
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #7
  br label %843

843:                                              ; preds = %842, %836
  %.pn158.pn = phi { ptr, i32 } [ %.pn158, %842 ], [ %837, %836 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %206) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %205) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #7
  br label %844

844:                                              ; preds = %843, %834
  %.pn158.pn.pn = phi { ptr, i32 } [ %.pn158.pn, %843 ], [ %835, %834 ]
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %198) #7
  br label %845

845:                                              ; preds = %844, %832
  %.pn158.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn, %844 ], [ %833, %832 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #7
  call void @_ZN5boost10test_tools9tt_detail20assertion_evaluate_tINS0_9assertion11binary_exprINS3_10value_exprIRdEEdNS3_2op2EQIddvEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %199) #7
  br label %846

846:                                              ; preds = %845, %830
  %.pn158.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn.pn, %845 ], [ %831, %830 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #7
  br label %847

847:                                              ; preds = %846, %828
  %.pn158.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn158.pn.pn.pn.pn, %846 ], [ %829, %828 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %202) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %200) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %199) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %198) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #7
  br label %.loopexit.split-lp242

848:                                              ; preds = %779, %778, %777
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %855

850:                                              ; preds = %780
  %851 = landingpad { ptr, i32 }
          cleanup
  br label %854

852:                                              ; preds = %782
  %853 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5boost9unit_test12lazy_ostreamD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #7
  br label %854

854:                                              ; preds = %852, %850
  %.pn165 = phi { ptr, i32 } [ %853, %852 ], [ %851, %850 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %219) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %218) #7
  call void @_ZN5boost10test_tools16assertion_resultD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %214) #7
  br label %855

855:                                              ; preds = %854, %848
  %.pn165.pn = phi { ptr, i32 } [ %.pn165, %854 ], [ %849, %848 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %216) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %215) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %214) #7
  br label %.loopexit.split-lp242

.loopexit.split-lp242:                            ; preds = %.loopexit241, %.loopexit.split-lp242.loopexit.split-lp.loopexit, %.loopexit.split-lp242.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp242.loopexit, %855, %847, %827, %807, %.loopexit.split-lp
  %.pn176.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn, %.loopexit.split-lp ], [ %.pn165.pn, %855 ], [ %.pn158.pn.pn.pn.pn.pn, %847 ], [ %.pn151.pn.pn.pn.pn.pn, %827 ], [ %.pn144.pn.pn.pn.pn.pn, %807 ], [ %lpad.loopexit243, %.loopexit241 ], [ %lpad.loopexit246, %.loopexit.split-lp242.loopexit ], [ %lpad.loopexit250, %.loopexit.split-lp242.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp242.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %126) #7
  br label %856

856:                                              ; preds = %.loopexit.split-lp242, %611
  %.pn176.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn, %.loopexit.split-lp242 ], [ %612, %611 ]
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %125) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %124) #7
  br label %857

857:                                              ; preds = %856, %609
  %.pn176.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn, %856 ], [ %610, %609 ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %124) #7
  br label %858

858:                                              ; preds = %601, %603, %605, %857
  %.pn184.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn, %857 ], [ %602, %601 ], [ %606, %605 ], [ %604, %603 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #7
  br label %859

859:                                              ; preds = %858, %556, %231
  %.pn230.pn.pn = phi { ptr, i32 } [ %.pn230.pn, %556 ], [ %.pn184.pn, %858 ], [ %232, %231 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %860

860:                                              ; preds = %859, %229
  %.pn230.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn, %859 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 5000, ptr nonnull %6) #7
  call void @_ZN7mjolnir6SystemINS_15SimulatorTraitsIdNS_17UnlimitedBoundaryEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(352) %4) #7
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %4) #7
  br label %861

861:                                              ; preds = %860, %228
  %.pn230.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn230.pn.pn.pn, %860 ], [ %.pn, %228 ]
  resume { ptr, i32 } %.pn230.pn.pn.pn.pn
}

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i64 0, i64 24, !10}
!10 = !{!7, !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"any pointer", !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}


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