; LLVM IR from AsyncAlgoTrading/aat :: aat/cpp/src/core/order_book (price_level)

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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.0" = type { i8 }
%"struct.aat::core::Order" = type <{ %"struct.aat::core::_EventTarget", %"class.std::__cxx11::basic_string", %"class.std::chrono::time_point", i32, [4 x i8], %"struct.aat::core::Instrument", %"struct.aat::core::ExchangeType", double, double, i32, i32, i32, [4 x i8], %"class.std::shared_ptr", double, double, i8, [7 x i8] }>
%"struct.aat::core::_EventTarget" = type { ptr }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"struct.aat::core::Instrument" = type { ptr, %"class.std::__cxx11::basic_string", i32, %"class.std::vector.204" }
%"class.std::vector.204" = type { %"struct.std::_Vector_base.205" }
%"struct.std::_Vector_base.205" = type { %"struct.std::_Vector_base<aat::core::ExchangeType, std::allocator<aat::core::ExchangeType>>::_Vector_impl" }
%"struct.std::_Vector_base<aat::core::ExchangeType, std::allocator<aat::core::ExchangeType>>::_Vector_impl" = type { %"struct.std::_Vector_base<aat::core::ExchangeType, std::allocator<aat::core::ExchangeType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aat::core::ExchangeType, std::allocator<aat::core::ExchangeType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.aat::core::ExchangeType" = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.aat::core::PriceLevel" = type { double, ptr, %"class.std::deque", %"class.std::deque", %"class.std::deque.183", %"class.std::vector.189", %"class.std::vector.189" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Deque_impl" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Deque_impl" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Deque_impl_data" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.183" = type { %"class.std::_Deque_base.184" }
%"class.std::_Deque_base.184" = type { %"struct.std::_Deque_base<double, std::allocator<double>>::_Deque_impl" }
%"struct.std::_Deque_base<double, std::allocator<double>>::_Deque_impl" = type { %"struct.std::_Deque_base<double, std::allocator<double>>::_Deque_impl_data" }
%"struct.std::_Deque_base<double, std::allocator<double>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.188", %"struct.std::_Deque_iterator.188" }
%"struct.std::_Deque_iterator.188" = type { ptr, ptr, ptr, ptr }
%"class.std::vector.189" = type { %"struct.std::_Vector_base.190" }
%"struct.std::_Vector_base.190" = type { %"struct.std::_Vector_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<aat::core::Order>, std::allocator<std::shared_ptr<aat::core::Order>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZTIN3aat6common15AATCPPExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.67 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) #3

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

declare void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(304) %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.std::shared_ptr", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator.0", align 1
  %18 = alloca i1, align 1
  %19 = alloca double, align 8
  %20 = alloca %"class.std::shared_ptr", align 8
  %21 = alloca double, align 8
  %22 = alloca %"class.std::shared_ptr", align 8
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::shared_ptr", align 8
  %26 = alloca %"class.std::shared_ptr", align 8
  %27 = alloca %"class.std::shared_ptr", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %31 = alloca %"class.std::shared_ptr", align 8
  %32 = alloca %"class.std::shared_ptr", align 8
  %33 = alloca %"class.std::shared_ptr", align 8
  %34 = alloca %"class.std::shared_ptr", align 8
  %35 = alloca %"class.std::shared_ptr", align 8
  %36 = alloca %"class.std::shared_ptr", align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.std::shared_ptr", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator.0", align 1
  %43 = alloca i1, align 1
  %44 = alloca ptr, align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.std::shared_ptr", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %48 = load ptr, ptr %6, align 8
  %49 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %50 = getelementptr inbounds %"struct.aat::core::Order", ptr %49, i32 0, i32 10
  %51 = load i32, ptr %50, align 4, !tbaa !9
  %52 = icmp eq i32 %51, 2
  br i1 %52, label %53, label %59

53:                                               ; preds = %4
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %48, ptr noundef %9)
          to label %54 unwind label %55

54:                                               ; preds = %53
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %415

55:                                               ; preds = %53
  %56 = landingpad { ptr, i32 }
          cleanup
  %57 = extractvalue { ptr, i32 } %56, 0
  store ptr %57, ptr %10, align 8
  %58 = extractvalue { ptr, i32 } %56, 1
  store i32 %58, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #5
  br label %416

59:                                               ; preds = %4
  %60 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %61 = getelementptr inbounds %"struct.aat::core::Order", ptr %60, i32 0, i32 15
  %62 = load double, ptr %61, align 8, !tbaa !33
  %63 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %64 = getelementptr inbounds %"struct.aat::core::Order", ptr %63, i32 0, i32 7
  %65 = load double, ptr %64, align 8, !tbaa !34
  %66 = fcmp oeq double %62, %65
  br i1 %66, label %67, label %89

67:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %68 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 5
  store ptr %68, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #5
  %71 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  store ptr %70, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %72 = load ptr, ptr %12, align 8, !tbaa !5
  %73 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #5
  %74 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  store ptr %73, ptr %74, align 8
  br label %75

75:                                               ; preds = %82, %67
  %76 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #5
  br i1 %76, label %78, label %77

77:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %88

78:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #5
  %79 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %79) #5
  %80 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %81 unwind label %84

81:                                               ; preds = %78
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  br label %82

82:                                               ; preds = %81
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #5
  br label %75

84:                                               ; preds = %78
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %10, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %416

88:                                               ; preds = %77
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %415

89:                                               ; preds = %59
  %90 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %91 = getelementptr inbounds %"struct.aat::core::Order", ptr %90, i32 0, i32 15
  %92 = load double, ptr %91, align 8, !tbaa !33
  %93 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %94 = getelementptr inbounds %"struct.aat::core::Order", ptr %93, i32 0, i32 7
  %95 = load double, ptr %94, align 8, !tbaa !34
  %96 = fcmp ogt double %92, %95
  br i1 %96, label %97, label %113

97:                                               ; preds = %89
  store i1 true, ptr %18, align 1
  %98 = call ptr @__cxa_allocate_exception(i64 40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %99 unwind label %101

99:                                               ; preds = %97
  invoke void @_ZN3aat6common15AATCPPExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %98, ptr noundef %16)
          to label %100 unwind label %105

100:                                              ; preds = %99
  store i1 false, ptr %18, align 1
  invoke void @__cxa_throw(ptr %98, ptr @_ZTIN3aat6common15AATCPPExceptionE, ptr @_ZN3aat6common15AATCPPExceptionD2Ev) #6
          to label %421 unwind label %105

101:                                              ; preds = %97
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %10, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %11, align 4
  br label %109

105:                                              ; preds = %100, %99
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %10, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #5
  br label %109

109:                                              ; preds = %105, %101
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #5
  %110 = load i1, ptr %18, align 1
  br i1 %110, label %111, label %112

111:                                              ; preds = %109
  call void @__cxa_free_exception(ptr %98) #5
  br label %112

112:                                              ; preds = %111, %109
  br label %416

113:                                              ; preds = %89
  br label %114

114:                                              ; preds = %113
  br label %115

115:                                              ; preds = %325, %323, %114
  %116 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %117 = getelementptr inbounds %"struct.aat::core::Order", ptr %116, i32 0, i32 15
  %118 = load double, ptr %117, align 8, !tbaa !33
  %119 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %120 = getelementptr inbounds %"struct.aat::core::Order", ptr %119, i32 0, i32 7
  %121 = load double, ptr %120, align 8, !tbaa !34
  %122 = fcmp olt double %118, %121
  br i1 %122, label %123, label %127

123:                                              ; preds = %115
  %124 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 2
  %125 = call noundef i64 @_ZNKSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %124) #5
  %126 = icmp ugt i64 %125, 0
  br label %127

127:                                              ; preds = %123, %115
  %128 = phi i1 [ false, %115 ], [ %126, %123 ]
  br i1 %128, label %129, label %328

129:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %130 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %131 = getelementptr inbounds %"struct.aat::core::Order", ptr %130, i32 0, i32 7
  %132 = load double, ptr %131, align 8, !tbaa !34
  %133 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %134 = getelementptr inbounds %"struct.aat::core::Order", ptr %133, i32 0, i32 15
  %135 = load double, ptr %134, align 8, !tbaa !33
  %136 = fsub double %132, %135
  store double %136, ptr %19, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #5
  %137 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 2
  %138 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %137) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %138) #5
  %139 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 2
  call void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %139) #5
  %140 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 3
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %140, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %141 unwind label %168

141:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %142 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %143 = getelementptr inbounds %"struct.aat::core::Order", ptr %142, i32 0, i32 7
  %144 = load double, ptr %143, align 8, !tbaa !34
  %145 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %146 = getelementptr inbounds %"struct.aat::core::Order", ptr %145, i32 0, i32 15
  %147 = load double, ptr %146, align 8, !tbaa !33
  %148 = fsub double %144, %147
  store double %148, ptr %21, align 8, !tbaa !35
  %149 = load double, ptr %21, align 8, !tbaa !35
  %150 = load double, ptr %19, align 8, !tbaa !35
  %151 = fcmp ogt double %149, %150
  br i1 %151, label %152, label %229

152:                                              ; preds = %141
  %153 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %154 = getelementptr inbounds %"struct.aat::core::Order", ptr %153, i32 0, i32 11
  %155 = load i32, ptr %154, align 8, !tbaa !36
  %156 = icmp eq i32 %155, 1
  br i1 %156, label %162, label %157

157:                                              ; preds = %152
  %158 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %159 = getelementptr inbounds %"struct.aat::core::Order", ptr %158, i32 0, i32 11
  %160 = load i32, ptr %159, align 8, !tbaa !36
  %161 = icmp eq i32 %160, 2
  br i1 %161, label %162, label %180

162:                                              ; preds = %157, %152
  %163 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %164 = load ptr, ptr %163, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %164, ptr noundef %22, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %165 unwind label %172

165:                                              ; preds = %162
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  %166 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  store double 0.000000e+00, ptr %23, align 8, !tbaa !35
  invoke void @_ZNSt5dequeIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(80) %166, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %167 unwind label %176

167:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  store i32 4, ptr %24, align 4
  br label %323, !llvm.loop !53

168:                                              ; preds = %129
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %10, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %11, align 4
  br label %327

172:                                              ; preds = %162
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %10, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %326

176:                                              ; preds = %165
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %10, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  br label %326

180:                                              ; preds = %157
  %181 = load double, ptr %19, align 8, !tbaa !35
  %182 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %183 = getelementptr inbounds %"struct.aat::core::Order", ptr %182, i32 0, i32 15
  %184 = load double, ptr %183, align 8, !tbaa !33
  %185 = fadd double %184, %181
  store double %185, ptr %183, align 8, !tbaa !33
  %186 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 4
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %186, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %187 unwind label %208

187:                                              ; preds = %180
  %188 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %189 = getelementptr inbounds %"struct.aat::core::Order", ptr %188, i32 0, i32 7
  %190 = load double, ptr %189, align 8, !tbaa !34
  %191 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %192 = getelementptr inbounds %"struct.aat::core::Order", ptr %191, i32 0, i32 15
  store double %190, ptr %192, align 8, !tbaa !33
  %193 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %194 = load ptr, ptr %193, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %194, ptr noundef %25, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %195 unwind label %212

195:                                              ; preds = %187
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  %196 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %197 = load ptr, ptr %196, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  %198 = load double, ptr %19, align 8, !tbaa !35
  invoke void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %197, ptr noundef %26, i1 noundef zeroext true, double noundef %198)
          to label %199 unwind label %216

199:                                              ; preds = %195
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  %200 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %201 = getelementptr inbounds %"struct.aat::core::Order", ptr %200, i32 0, i32 11
  %202 = load i32, ptr %201, align 8, !tbaa !36
  %203 = icmp eq i32 %202, 3
  br i1 %203, label %204, label %224

204:                                              ; preds = %199
  %205 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %206 = load ptr, ptr %205, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %206, ptr noundef %27, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %207 unwind label %220

207:                                              ; preds = %204
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  br label %227

208:                                              ; preds = %293, %267, %243, %224, %180
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %10, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %11, align 4
  br label %326

212:                                              ; preds = %187
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %10, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  br label %326

216:                                              ; preds = %195
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %10, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #5
  br label %326

220:                                              ; preds = %204
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %10, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #5
  br label %326

224:                                              ; preds = %199
  %225 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 2
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE10push_frontERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %225, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %226 unwind label %208

226:                                              ; preds = %224
  br label %227

227:                                              ; preds = %226, %207
  br label %228

228:                                              ; preds = %227
  br label %322

229:                                              ; preds = %141
  %230 = load double, ptr %21, align 8, !tbaa !35
  %231 = load double, ptr %19, align 8, !tbaa !35
  %232 = fcmp olt double %230, %231
  br i1 %232, label %233, label %293

233:                                              ; preds = %229
  %234 = load double, ptr %21, align 8, !tbaa !35
  %235 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %236 = getelementptr inbounds %"struct.aat::core::Order", ptr %235, i32 0, i32 15
  %237 = load double, ptr %236, align 8, !tbaa !33
  %238 = fadd double %237, %234
  store double %238, ptr %236, align 8, !tbaa !33
  %239 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %240 = getelementptr inbounds %"struct.aat::core::Order", ptr %239, i32 0, i32 11
  %241 = load i32, ptr %240, align 8, !tbaa !36
  %242 = icmp eq i32 %241, 2
  br i1 %242, label %243, label %267

243:                                              ; preds = %233
  %244 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 2
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE10push_frontERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %244, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %245 unwind label %208

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %246 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 5
  store ptr %246, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %247 = load ptr, ptr %28, align 8, !tbaa !5
  %248 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %247) #5
  %249 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  store ptr %248, ptr %249, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %250) #5
  %252 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %30, i32 0, i32 0
  store ptr %251, ptr %252, align 8
  br label %253

253:                                              ; preds = %260, %245
  %254 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #5
  br i1 %254, label %256, label %255

255:                                              ; preds = %253
  store i32 6, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %266

256:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #5
  %257 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %257) #5
  %258 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %258, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %259 unwind label %262

259:                                              ; preds = %256
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  br label %260

260:                                              ; preds = %259
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #5
  br label %253

262:                                              ; preds = %256
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %10, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  br label %326

266:                                              ; preds = %255
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  store i32 1, ptr %24, align 4
  br label %323

267:                                              ; preds = %233
  %268 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %269 = getelementptr inbounds %"struct.aat::core::Order", ptr %268, i32 0, i32 7
  %270 = load double, ptr %269, align 8, !tbaa !34
  %271 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %272 = getelementptr inbounds %"struct.aat::core::Order", ptr %271, i32 0, i32 15
  store double %270, ptr %272, align 8, !tbaa !33
  %273 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 4
  %274 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %275 = getelementptr inbounds %"struct.aat::core::Order", ptr %274, i32 0, i32 7
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %273, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %276 unwind label %208

276:                                              ; preds = %267
  %277 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %278 = load ptr, ptr %277, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %278, ptr noundef %32, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %279 unwind label %284

279:                                              ; preds = %276
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  %280 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %281 = load ptr, ptr %280, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  %282 = load double, ptr %21, align 8, !tbaa !35
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %281, ptr noundef %33, i1 noundef zeroext true, double noundef %282)
          to label %283 unwind label %288

283:                                              ; preds = %279
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  br label %292

284:                                              ; preds = %276
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %10, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #5
  br label %326

288:                                              ; preds = %279
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %10, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  br label %326

292:                                              ; preds = %283
  br label %321

293:                                              ; preds = %229
  %294 = load double, ptr %19, align 8, !tbaa !35
  %295 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %20) #5
  %296 = getelementptr inbounds %"struct.aat::core::Order", ptr %295, i32 0, i32 15
  %297 = load double, ptr %296, align 8, !tbaa !33
  %298 = fadd double %297, %294
  store double %298, ptr %296, align 8, !tbaa !33
  %299 = load double, ptr %21, align 8, !tbaa !35
  %300 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %301 = getelementptr inbounds %"struct.aat::core::Order", ptr %300, i32 0, i32 15
  %302 = load double, ptr %301, align 8, !tbaa !33
  %303 = fadd double %302, %299
  store double %303, ptr %301, align 8, !tbaa !33
  %304 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 4
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %304, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %305 unwind label %208

305:                                              ; preds = %293
  %306 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %307 = load ptr, ptr %306, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %307, ptr noundef %34, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %308 unwind label %313

308:                                              ; preds = %305
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  %309 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %310 = load ptr, ptr %309, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  %311 = load double, ptr %19, align 8, !tbaa !35
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %310, ptr noundef %35, i1 noundef zeroext true, double noundef %311)
          to label %312 unwind label %317

312:                                              ; preds = %308
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %321

313:                                              ; preds = %305
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %10, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #5
  br label %326

317:                                              ; preds = %308
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %10, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #5
  br label %326

321:                                              ; preds = %312, %292
  br label %322

322:                                              ; preds = %321, %228
  store i32 0, ptr %24, align 4
  br label %323

323:                                              ; preds = %322, %266, %167
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  %324 = load i32, ptr %24, align 4
  switch i32 %324, label %421 [
    i32 0, label %325
    i32 4, label %115
    i32 1, label %415
  ]

325:                                              ; preds = %323
  br label %115, !llvm.loop !53

326:                                              ; preds = %317, %313, %288, %284, %262, %220, %216, %212, %208, %176, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  br label %327

327:                                              ; preds = %326, %168
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %416

328:                                              ; preds = %127
  %329 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %330 = getelementptr inbounds %"struct.aat::core::Order", ptr %329, i32 0, i32 15
  %331 = load double, ptr %330, align 8, !tbaa !33
  %332 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %333 = getelementptr inbounds %"struct.aat::core::Order", ptr %332, i32 0, i32 7
  %334 = load double, ptr %333, align 8, !tbaa !34
  %335 = fcmp oeq double %331, %334
  br i1 %335, label %336, label %368

336:                                              ; preds = %328
  %337 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 1
  %338 = load ptr, ptr %337, align 8, !tbaa !37
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  %339 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %340 = getelementptr inbounds %"struct.aat::core::Order", ptr %339, i32 0, i32 15
  %341 = load double, ptr %340, align 8, !tbaa !33
  invoke void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304) %338, ptr noundef %36, double noundef %341)
          to label %342 unwind label %353

342:                                              ; preds = %336
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %343 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 5
  store ptr %343, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %344 = load ptr, ptr %37, align 8, !tbaa !5
  %345 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #5
  %346 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %38, i32 0, i32 0
  store ptr %345, ptr %346, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %347 = load ptr, ptr %37, align 8, !tbaa !5
  %348 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #5
  %349 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %39, i32 0, i32 0
  store ptr %348, ptr %349, align 8
  br label %350

350:                                              ; preds = %361, %342
  %351 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #5
  br i1 %351, label %357, label %352

352:                                              ; preds = %350
  store i32 8, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %367

353:                                              ; preds = %336
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %10, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #5
  br label %416

357:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #5
  %358 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %358) #5
  %359 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %359, ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %360 unwind label %363

360:                                              ; preds = %357
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  br label %361

361:                                              ; preds = %360
  %362 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #5
  br label %350

363:                                              ; preds = %357
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %10, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  br label %416

367:                                              ; preds = %352
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %415

368:                                              ; preds = %328
  %369 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %370 = getelementptr inbounds %"struct.aat::core::Order", ptr %369, i32 0, i32 15
  %371 = load double, ptr %370, align 8, !tbaa !33
  %372 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %373 = getelementptr inbounds %"struct.aat::core::Order", ptr %372, i32 0, i32 7
  %374 = load double, ptr %373, align 8, !tbaa !34
  %375 = fcmp ogt double %371, %374
  br i1 %375, label %376, label %392

376:                                              ; preds = %368
  store i1 true, ptr %43, align 1
  %377 = call ptr @__cxa_allocate_exception(i64 40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %378 unwind label %380

378:                                              ; preds = %376
  invoke void @_ZN3aat6common15AATCPPExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %377, ptr noundef %41)
          to label %379 unwind label %384

379:                                              ; preds = %378
  store i1 false, ptr %43, align 1
  invoke void @__cxa_throw(ptr %377, ptr @_ZTIN3aat6common15AATCPPExceptionE, ptr @_ZN3aat6common15AATCPPExceptionD2Ev) #6
          to label %421 unwind label %384

380:                                              ; preds = %376
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %10, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %11, align 4
  br label %388

384:                                              ; preds = %379, %378
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %10, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #5
  br label %388

388:                                              ; preds = %384, %380
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #5
  %389 = load i1, ptr %43, align 1
  br i1 %389, label %390, label %391

390:                                              ; preds = %388
  call void @__cxa_free_exception(ptr %377) #5
  br label %391

391:                                              ; preds = %390, %388
  br label %416

392:                                              ; preds = %368
  br label %393

393:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %394 = getelementptr inbounds %"class.aat::core::PriceLevel", ptr %48, i32 0, i32 5
  store ptr %394, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %395 = load ptr, ptr %44, align 8, !tbaa !5
  %396 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %395) #5
  %397 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %396, ptr %397, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  %399 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %398) #5
  %400 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %399, ptr %400, align 8
  br label %401

401:                                              ; preds = %408, %393
  %402 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #5
  br i1 %402, label %404, label %403

403:                                              ; preds = %401
  store i32 10, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %414

404:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #5
  %405 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 8 dereferenceable(16) %405) #5
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %406, ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %407 unwind label %410

407:                                              ; preds = %404
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  br label %408

408:                                              ; preds = %407
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #5
  br label %401

410:                                              ; preds = %404
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %10, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %11, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  br label %416

414:                                              ; preds = %403
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  br label %415

415:                                              ; preds = %414, %367, %323, %88, %54
  ret void

416:                                              ; preds = %410, %391, %363, %353, %327, %112, %84, %55
  %417 = load ptr, ptr %10, align 8
  %418 = load i32, ptr %11, align 4
  %419 = insertvalue { ptr, i32 } poison, ptr %417, 0
  %420 = insertvalue { ptr, i32 } %419, i32 %418, 1
  resume { ptr, i32 } %420

421:                                              ; preds = %379, %323, %100
  unreachable
}

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

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

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

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

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

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

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

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

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

declare void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) #3

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

declare void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, double noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { nounwind }
attributes #6 = { noreturn }

!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, !27, i64 188}
!10 = !{!"_ZTSN3aat4core5OrderE", !11, i64 0, !12, i64 8, !15, i64 40, !17, i64 48, !18, i64 56, !24, i64 128, !25, i64 168, !25, i64 176, !26, i64 184, !27, i64 188, !28, i64 192, !29, i64 200, !25, i64 216, !25, i64 224, !32, i64 232}
!11 = !{!"_ZTSN3aat4core12_EventTargetE"}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !16, i64 0}
!16 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !14, i64 0}
!17 = !{!"_ZTSN3aat6config8DataTypeE", !7, i64 0}
!18 = !{!"_ZTSN3aat4core10InstrumentE", !12, i64 8, !19, i64 40, !20, i64 48}
!19 = !{!"_ZTSN3aat6config14InstrumentTypeE", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIN3aat4core12ExchangeTypeESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSN3aat4core12ExchangeTypeE", !12, i64 8}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTSN3aat6config4SideE", !7, i64 0}
!27 = !{!"_ZTSN3aat6config9OrderTypeE", !7, i64 0}
!28 = !{!"_ZTSN3aat6config9OrderFlagE", !7, i64 0}
!29 = !{!"_ZTSSt10shared_ptrIN3aat4core5OrderEE", !30, i64 0}
!30 = !{!"_ZTSSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0, !31, i64 8}
!31 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !6, i64 0}
!32 = !{!"bool", !7, i64 0}
!33 = !{!10, !25, i64 224}
!34 = !{!10, !25, i64 168}
!35 = !{!25, !25, i64 0}
!36 = !{!10, !28, i64 192}
!37 = !{!38, !6, i64 8}
!38 = !{!"_ZTSN3aat4core10PriceLevelE", !25, i64 0, !6, i64 8, !39, i64 16, !39, i64 96, !44, i64 176, !49, i64 256, !49, i64 280}
!39 = !{!"_ZTSSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !40, i64 0}
!40 = !{!"_ZTSSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !41, i64 0}
!41 = !{!"_ZTSNSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE11_Deque_implE", !42, i64 0}
!42 = !{!"_ZTSNSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE16_Deque_impl_dataE", !6, i64 0, !14, i64 8, !43, i64 16, !43, i64 48}
!43 = !{!"_ZTSSt15_Deque_iteratorISt10shared_ptrIN3aat4core5OrderEERS4_PS4_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!44 = !{!"_ZTSSt5dequeIdSaIdEE", !45, i64 0}
!45 = !{!"_ZTSSt11_Deque_baseIdSaIdEE", !46, i64 0}
!46 = !{!"_ZTSNSt11_Deque_baseIdSaIdEE11_Deque_implE", !47, i64 0}
!47 = !{!"_ZTSNSt11_Deque_baseIdSaIdEE16_Deque_impl_dataE", !6, i64 0, !14, i64 8, !48, i64 16, !48, i64 48}
!48 = !{!"_ZTSSt15_Deque_iteratorIdRdPdE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!49 = !{!"_ZTSSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.mustprogress"}


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

%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.0" = type { i8 }

@_ZTIN3aat6common15AATCPPExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.67 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) local_unnamed_addr #3

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(304) %1, ptr noundef nonnull %2, ptr noundef nonnull align 8 dereferenceable(24) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::shared_ptr", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.std::shared_ptr", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.0", align 1
  %11 = alloca double, align 8
  %12 = alloca %"class.std::shared_ptr", align 8
  %13 = alloca %"class.std::shared_ptr", align 8
  %14 = alloca double, align 8
  %15 = alloca %"class.std::shared_ptr", align 8
  %16 = alloca %"class.std::shared_ptr", align 8
  %17 = alloca %"class.std::shared_ptr", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.std::shared_ptr", align 8
  %21 = alloca %"class.std::shared_ptr", align 8
  %22 = alloca %"class.std::shared_ptr", align 8
  %23 = alloca %"class.std::shared_ptr", align 8
  %24 = alloca %"class.std::shared_ptr", align 8
  %25 = alloca %"class.std::shared_ptr", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.std::shared_ptr", align 8
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator.0", align 1
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.std::shared_ptr", align 8
  %34 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %35 = getelementptr inbounds i8, ptr %34, i64 188
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %37 = icmp eq i32 %36, 2
  br i1 %37, label %38, label %42

38:                                               ; preds = %4
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %1, ptr noundef nonnull %5)
          to label %39 unwind label %40

39:                                               ; preds = %38
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %281

40:                                               ; preds = %38
  %41 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #5
  br label %282

42:                                               ; preds = %4
  %43 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %44 = getelementptr inbounds i8, ptr %43, i64 224
  %45 = load double, ptr %44, align 8, !tbaa !32
  %46 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %47 = getelementptr inbounds i8, ptr %46, i64 168
  %48 = load double, ptr %47, align 8, !tbaa !33
  %49 = fcmp oeq double %45, %48
  br i1 %49, label %50, label %61

50:                                               ; preds = %42
  %51 = getelementptr inbounds i8, ptr %1, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  %52 = tail call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #5
  store ptr %52, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %53 = tail call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #5
  store ptr %53, ptr %7, align 8
  %54 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  br i1 %54, label %.lr.ph71, label %._crit_edge72

._crit_edge72:                                    ; preds = %56, %50
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %281

.lr.ph71:                                         ; preds = %50, %56
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #5
  %55 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %55) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %56 unwind label %59

56:                                               ; preds = %.lr.ph71
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %58 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #5
  br i1 %58, label %.lr.ph71, label %._crit_edge72

59:                                               ; preds = %.lr.ph71
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  br label %282

61:                                               ; preds = %42
  %62 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %63 = getelementptr inbounds i8, ptr %62, i64 224
  %64 = load double, ptr %63, align 8, !tbaa !32
  %65 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %66 = getelementptr inbounds i8, ptr %65, i64 168
  %67 = load double, ptr %66, align 8, !tbaa !33
  %68 = fcmp ogt double %64, %67
  br i1 %68, label %80, label %.preheader

.preheader:                                       ; preds = %61
  %69 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %70 = getelementptr inbounds i8, ptr %69, i64 224
  %71 = load double, ptr %70, align 8, !tbaa !32
  %72 = tail call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %73 = getelementptr inbounds i8, ptr %72, i64 168
  %74 = load double, ptr %73, align 8, !tbaa !33
  %75 = fcmp olt double %71, %74
  br i1 %75, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %.preheader
  %76 = getelementptr inbounds i8, ptr %1, i64 16
  %77 = getelementptr inbounds i8, ptr %1, i64 96
  %78 = getelementptr inbounds i8, ptr %1, i64 176
  %79 = getelementptr inbounds i8, ptr %1, i64 8
  br label %88

80:                                               ; preds = %61
  %81 = tail call ptr @__cxa_allocate_exception(i64 40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %82 unwind label %.thread

82:                                               ; preds = %80
  invoke void @_ZN3aat6common15AATCPPExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %81, ptr noundef nonnull %9)
          to label %83 unwind label %85

83:                                               ; preds = %82
  invoke void @__cxa_throw(ptr nonnull %81, ptr nonnull @_ZTIN3aat6common15AATCPPExceptionE, ptr nonnull @_ZN3aat6common15AATCPPExceptionD2Ev) #6
          to label %283 unwind label %85

.thread:                                          ; preds = %80
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #5
  br label %87

85:                                               ; preds = %82, %83
  %.029 = phi i1 [ false, %83 ], [ true, %82 ]
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #5
  br i1 %.029, label %87, label %282

87:                                               ; preds = %.thread, %85
  %.pn3844 = phi { ptr, i32 } [ %84, %.thread ], [ %86, %85 ]
  call void @__cxa_free_exception(ptr %81) #5
  br label %282

88:                                               ; preds = %.lr.ph, %219
  %89 = call noundef i64 @_ZNKSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(80) %76) #5
  %.not = icmp eq i64 %89, 0
  br i1 %.not, label %.critedge, label %90

90:                                               ; preds = %88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  %91 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %92 = getelementptr inbounds i8, ptr %91, i64 168
  %93 = load double, ptr %92, align 8, !tbaa !33
  %94 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %95 = getelementptr inbounds i8, ptr %94, i64 224
  %96 = load double, ptr %95, align 8, !tbaa !32
  %97 = fsub double %93, %96
  store double %97, ptr %11, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  %98 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(80) %76) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %98) #5
  call void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9pop_frontEv(ptr noundef nonnull align 8 dereferenceable(80) %76) #5
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %77, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %99 unwind label %123

99:                                               ; preds = %90
  %100 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %101 = getelementptr inbounds i8, ptr %100, i64 168
  %102 = load double, ptr %101, align 8, !tbaa !33
  %103 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %104 = getelementptr inbounds i8, ptr %103, i64 224
  %105 = load double, ptr %104, align 8, !tbaa !32
  %106 = fsub double %102, %105
  %107 = load double, ptr %11, align 8, !tbaa !34
  %108 = fcmp ogt double %106, %107
  br i1 %108, label %109, label %160

109:                                              ; preds = %99
  %110 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %111 = getelementptr inbounds i8, ptr %110, i64 192
  %112 = load i32, ptr %111, align 8, !tbaa !35
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %119, label %114

114:                                              ; preds = %109
  %115 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %116 = getelementptr inbounds i8, ptr %115, i64 192
  %117 = load i32, ptr %116, align 8, !tbaa !35
  %118 = icmp eq i32 %117, 2
  br i1 %118, label %119, label %129

119:                                              ; preds = %114, %109
  %120 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %120, ptr noundef nonnull %13, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %121 unwind label %125

121:                                              ; preds = %119
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  store double 0.000000e+00, ptr %14, align 8, !tbaa !34
  invoke void @_ZNSt5dequeIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(80) %78, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %122 unwind label %127

122:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  br label %219, !llvm.loop !52

123:                                              ; preds = %90
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %227

125:                                              ; preds = %119
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #5
  br label %227

127:                                              ; preds = %121
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  br label %227

129:                                              ; preds = %114
  %130 = load double, ptr %11, align 8, !tbaa !34
  %131 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %132 = getelementptr inbounds i8, ptr %131, i64 224
  %133 = load double, ptr %132, align 8, !tbaa !32
  %134 = fadd double %130, %133
  store double %134, ptr %132, align 8, !tbaa !32
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %78, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %135 unwind label %.loopexit

135:                                              ; preds = %129
  %136 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %137 = getelementptr inbounds i8, ptr %136, i64 168
  %138 = load double, ptr %137, align 8, !tbaa !33
  %139 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %140 = getelementptr inbounds i8, ptr %139, i64 224
  store double %138, ptr %140, align 8, !tbaa !32
  %141 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %141, ptr noundef nonnull %15, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %142 unwind label %153

142:                                              ; preds = %135
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  %143 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  %144 = load double, ptr %11, align 8, !tbaa !34
  invoke void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %143, ptr noundef nonnull %16, i1 noundef zeroext true, double noundef %144)
          to label %145 unwind label %155

145:                                              ; preds = %142
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  %146 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %147 = getelementptr inbounds i8, ptr %146, i64 192
  %148 = load i32, ptr %147, align 8, !tbaa !35
  %149 = icmp eq i32 %148, 3
  br i1 %149, label %150, label %159

150:                                              ; preds = %145
  %151 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %151, ptr noundef nonnull %17, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %152 unwind label %157

152:                                              ; preds = %150
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  br label %219

.loopexit:                                        ; preds = %129, %159, %183, %200
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %227

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

153:                                              ; preds = %135
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  br label %227

155:                                              ; preds = %142
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #5
  br label %227

157:                                              ; preds = %150
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #5
  br label %227

159:                                              ; preds = %145
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE10push_frontERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %76, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %219 unwind label %.loopexit

160:                                              ; preds = %99
  %161 = fcmp olt double %106, %107
  br i1 %161, label %162, label %200

162:                                              ; preds = %160
  %163 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %164 = getelementptr inbounds i8, ptr %163, i64 224
  %165 = load double, ptr %164, align 8, !tbaa !32
  %166 = fadd double %106, %165
  store double %166, ptr %164, align 8, !tbaa !32
  %167 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %168 = getelementptr inbounds i8, ptr %167, i64 192
  %169 = load i32, ptr %168, align 8, !tbaa !35
  %170 = icmp eq i32 %169, 2
  br i1 %170, label %171, label %183

171:                                              ; preds = %162
  invoke void @_ZNSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE10push_frontERKS4_(ptr noundef nonnull align 8 dereferenceable(80) %76, ptr noundef nonnull align 8 dereferenceable(16) %12)
          to label %172 unwind label %.loopexit.split-lp

172:                                              ; preds = %171
  %173 = getelementptr inbounds i8, ptr %1, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  %174 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #5
  store ptr %174, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  %175 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #5
  store ptr %175, ptr %19, align 8
  %176 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #5
  br i1 %176, label %.lr.ph65, label %.thread45

.thread45:                                        ; preds = %178, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %281

.lr.ph65:                                         ; preds = %172, %178
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #5
  %177 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %177) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %178 unwind label %181

178:                                              ; preds = %.lr.ph65
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #5
  %180 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #5
  br i1 %180, label %.lr.ph65, label %.thread45

181:                                              ; preds = %.lr.ph65
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  br label %227

183:                                              ; preds = %162
  %184 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %185 = getelementptr inbounds i8, ptr %184, i64 168
  %186 = load double, ptr %185, align 8, !tbaa !33
  %187 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %188 = getelementptr inbounds i8, ptr %187, i64 224
  store double %186, ptr %188, align 8, !tbaa !32
  %189 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %190 = getelementptr inbounds i8, ptr %189, i64 168
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %78, ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %191 unwind label %.loopexit

191:                                              ; preds = %183
  %192 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector10pushChangeESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %192, ptr noundef nonnull %21, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %193 unwind label %196

193:                                              ; preds = %191
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  %194 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %194, ptr noundef nonnull %22, i1 noundef zeroext true, double noundef %106)
          to label %195 unwind label %198

195:                                              ; preds = %193
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %219

196:                                              ; preds = %191
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #5
  br label %227

198:                                              ; preds = %193
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #5
  br label %227

200:                                              ; preds = %160
  %201 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %12) #5
  %202 = getelementptr inbounds i8, ptr %201, i64 224
  %203 = load double, ptr %202, align 8, !tbaa !32
  %204 = fadd double %107, %203
  store double %204, ptr %202, align 8, !tbaa !32
  %205 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %206 = getelementptr inbounds i8, ptr %205, i64 224
  %207 = load double, ptr %206, align 8, !tbaa !32
  %208 = fadd double %106, %207
  store double %208, ptr %206, align 8, !tbaa !32
  invoke void @_ZNSt5dequeIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(80) %78, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %209 unwind label %.loopexit

209:                                              ; preds = %200
  %210 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %210, ptr noundef nonnull %23, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %211 unwind label %215

211:                                              ; preds = %209
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  %212 = load ptr, ptr %79, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  %213 = load double, ptr %11, align 8, !tbaa !34
  invoke void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %212, ptr noundef nonnull %24, i1 noundef zeroext true, double noundef %213)
          to label %214 unwind label %217

214:                                              ; preds = %211
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %219

215:                                              ; preds = %209
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #5
  br label %227

217:                                              ; preds = %211
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #5
  br label %227

219:                                              ; preds = %152, %159, %214, %195, %122
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  %220 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %221 = getelementptr inbounds i8, ptr %220, i64 224
  %222 = load double, ptr %221, align 8, !tbaa !32
  %223 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %224 = getelementptr inbounds i8, ptr %223, i64 168
  %225 = load double, ptr %224, align 8, !tbaa !33
  %226 = fcmp olt double %222, %225
  br i1 %226, label %88, label %.critedge

227:                                              ; preds = %.loopexit, %.loopexit.split-lp, %125, %127, %153, %155, %157, %181, %196, %198, %215, %217, %123
  %.pn35.pn = phi { ptr, i32 } [ %124, %123 ], [ %128, %127 ], [ %126, %125 ], [ %158, %157 ], [ %156, %155 ], [ %154, %153 ], [ %182, %181 ], [ %199, %198 ], [ %197, %196 ], [ %218, %217 ], [ %216, %215 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %282

.critedge:                                        ; preds = %88, %219, %.preheader
  %228 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %229 = getelementptr inbounds i8, ptr %228, i64 224
  %230 = load double, ptr %229, align 8, !tbaa !32
  %231 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %232 = getelementptr inbounds i8, ptr %231, i64 168
  %233 = load double, ptr %232, align 8, !tbaa !33
  %234 = fcmp oeq double %230, %233
  br i1 %234, label %235, label %254

235:                                              ; preds = %.critedge
  %236 = getelementptr inbounds i8, ptr %1, i64 8
  %237 = load ptr, ptr %236, align 8, !tbaa !36
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  %238 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %239 = getelementptr inbounds i8, ptr %238, i64 224
  %240 = load double, ptr %239, align 8, !tbaa !32
  invoke void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304) %237, ptr noundef nonnull %25, double noundef %240)
          to label %241 unwind label %246

241:                                              ; preds = %235
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  %242 = getelementptr inbounds i8, ptr %1, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  %243 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #5
  store ptr %243, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  %244 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #5
  store ptr %244, ptr %27, align 8
  %245 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #5
  br i1 %245, label %.lr.ph68, label %._crit_edge69

._crit_edge69:                                    ; preds = %249, %241
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EDn(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr null) #5
  br label %281

246:                                              ; preds = %235
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  br label %282

.lr.ph68:                                         ; preds = %241, %249
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #5
  %248 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %248) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %249 unwind label %252

249:                                              ; preds = %.lr.ph68
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #5
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #5
  %251 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #5
  br i1 %251, label %.lr.ph68, label %._crit_edge69

252:                                              ; preds = %.lr.ph68
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  br label %282

254:                                              ; preds = %.critedge
  %255 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %256 = getelementptr inbounds i8, ptr %255, i64 224
  %257 = load double, ptr %256, align 8, !tbaa !32
  %258 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %2) #5
  %259 = getelementptr inbounds i8, ptr %258, i64 168
  %260 = load double, ptr %259, align 8, !tbaa !33
  %261 = fcmp ogt double %257, %260
  br i1 %261, label %262, label %270

262:                                              ; preds = %254
  %263 = call ptr @__cxa_allocate_exception(i64 40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull @.str.67, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %264 unwind label %.thread49

264:                                              ; preds = %262
  invoke void @_ZN3aat6common15AATCPPExceptionC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %263, ptr noundef nonnull %29)
          to label %265 unwind label %267

265:                                              ; preds = %264
  invoke void @__cxa_throw(ptr nonnull %263, ptr nonnull @_ZTIN3aat6common15AATCPPExceptionE, ptr nonnull @_ZN3aat6common15AATCPPExceptionD2Ev) #6
          to label %283 unwind label %267

.thread49:                                        ; preds = %262
  %266 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #5
  br label %269

267:                                              ; preds = %264, %265
  %.022 = phi i1 [ false, %265 ], [ true, %264 ]
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #5
  br i1 %.022, label %269, label %282

269:                                              ; preds = %.thread49, %267
  %.pn52 = phi { ptr, i32 } [ %266, %.thread49 ], [ %268, %267 ]
  call void @__cxa_free_exception(ptr %263) #5
  br label %282

270:                                              ; preds = %254
  %271 = getelementptr inbounds i8, ptr %1, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  %272 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #5
  store ptr %272, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  %273 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #5
  store ptr %273, ptr %32, align 8
  %274 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #5
  br i1 %274, label %.lr.ph66, label %._crit_edge

._crit_edge:                                      ; preds = %276, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(16) %0, ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  br label %281

.lr.ph66:                                         ; preds = %270, %276
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #5
  %275 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #5
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %275) #5
  invoke void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %276 unwind label %279

276:                                              ; preds = %.lr.ph66
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #5
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #5
  %278 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #5
  br i1 %278, label %.lr.ph66, label %._crit_edge

279:                                              ; preds = %.lr.ph66
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  br label %282

281:                                              ; preds = %.thread45, %._crit_edge, %._crit_edge69, %._crit_edge72, %39
  ret void

282:                                              ; preds = %267, %269, %85, %87, %279, %252, %246, %227, %59, %40
  %.pn40 = phi { ptr, i32 } [ %41, %40 ], [ %60, %59 ], [ %.pn3844, %87 ], [ %86, %85 ], [ %.pn35.pn, %227 ], [ %253, %252 ], [ %247, %246 ], [ %.pn52, %269 ], [ %268, %267 ], [ %280, %279 ]
  resume { ptr, i32 } %.pn40

283:                                              ; preds = %265, %83
  unreachable
}

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

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

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

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

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

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

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

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

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

declare void @_ZN3aat4core9Collector8pushFillESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, i1 noundef zeroext, double noundef) local_unnamed_addr #3

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

declare void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, double noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = { nounwind }
attributes #6 = { noreturn }

!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, !26, i64 188}
!6 = !{!"_ZTSN3aat4core5OrderE", !7, i64 0, !8, i64 8, !14, i64 40, !16, i64 48, !17, i64 56, !23, i64 128, !24, i64 168, !24, i64 176, !25, i64 184, !26, i64 188, !27, i64 192, !28, i64 200, !24, i64 216, !24, i64 224, !31, i64 232}
!7 = !{!"_ZTSN3aat4core12_EventTargetE"}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !9, i64 0, !13, i64 8, !11, i64 16}
!9 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"long", !11, i64 0}
!14 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !15, i64 0}
!15 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !13, i64 0}
!16 = !{!"_ZTSN3aat6config8DataTypeE", !11, i64 0}
!17 = !{!"_ZTSN3aat4core10InstrumentE", !8, i64 8, !18, i64 40, !19, i64 48}
!18 = !{!"_ZTSN3aat6config14InstrumentTypeE", !11, i64 0}
!19 = !{!"_ZTSSt6vectorIN3aat4core12ExchangeTypeESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3aat4core12ExchangeTypeESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!23 = !{!"_ZTSN3aat4core12ExchangeTypeE", !8, i64 8}
!24 = !{!"double", !11, i64 0}
!25 = !{!"_ZTSN3aat6config4SideE", !11, i64 0}
!26 = !{!"_ZTSN3aat6config9OrderTypeE", !11, i64 0}
!27 = !{!"_ZTSN3aat6config9OrderFlagE", !11, i64 0}
!28 = !{!"_ZTSSt10shared_ptrIN3aat4core5OrderEE", !29, i64 0}
!29 = !{!"_ZTSSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0, !30, i64 8}
!30 = !{!"_ZTSSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EE", !10, i64 0}
!31 = !{!"bool", !11, i64 0}
!32 = !{!6, !24, i64 224}
!33 = !{!6, !24, i64 168}
!34 = !{!24, !24, i64 0}
!35 = !{!6, !27, i64 192}
!36 = !{!37, !10, i64 8}
!37 = !{!"_ZTSN3aat4core10PriceLevelE", !24, i64 0, !10, i64 8, !38, i64 16, !38, i64 96, !43, i64 176, !48, i64 256, !48, i64 280}
!38 = !{!"_ZTSSt5dequeISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !39, i64 0}
!39 = !{!"_ZTSSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !40, i64 0}
!40 = !{!"_ZTSNSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE11_Deque_implE", !41, i64 0}
!41 = !{!"_ZTSNSt11_Deque_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE16_Deque_impl_dataE", !10, i64 0, !13, i64 8, !42, i64 16, !42, i64 48}
!42 = !{!"_ZTSSt15_Deque_iteratorISt10shared_ptrIN3aat4core5OrderEERS4_PS4_E", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!43 = !{!"_ZTSSt5dequeIdSaIdEE", !44, i64 0}
!44 = !{!"_ZTSSt11_Deque_baseIdSaIdEE", !45, i64 0}
!45 = !{!"_ZTSNSt11_Deque_baseIdSaIdEE11_Deque_implE", !46, i64 0}
!46 = !{!"_ZTSNSt11_Deque_baseIdSaIdEE16_Deque_impl_dataE", !10, i64 0, !13, i64 8, !47, i64 16, !47, i64 48}
!47 = !{!"_ZTSSt15_Deque_iteratorIdRdPdE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!48 = !{!"_ZTSSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN3aat4core5OrderEESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass