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

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

%"class.std::vector.226" = type { %"struct.std::_Vector_base.227" }
%"struct.std::_Vector_base.227" = 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 }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.220" = type { %"class.std::__shared_ptr.221" }
%"class.std::__shared_ptr.221" = type { ptr, %"class.std::__shared_count" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"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::__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::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.228" }
%"class.std::vector.228" = type { %"struct.std::_Vector_base.229" }
%"struct.std::_Vector_base.229" = 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::OrderBook" = type { %"class.aat::core::Collector", ptr, ptr, %"class.std::function", %"class.std::vector.195", %"class.std::vector.195", %"class.std::unordered_map.200", %"class.std::unordered_map.200" }
%"class.aat::core::Collector" = type { %"class.std::function", double, double, %"class.std::deque", %"class.std::shared_ptr", %"class.std::deque.183", %"class.std::deque.189" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::Event>, std::allocator<std::shared_ptr<aat::core::Event>>>::_Deque_impl" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::Event>, std::allocator<std::shared_ptr<aat::core::Event>>>::_Deque_impl" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::Event>, std::allocator<std::shared_ptr<aat::core::Event>>>::_Deque_impl_data" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::Event>, std::allocator<std::shared_ptr<aat::core::Event>>>::_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<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.188", %"struct.std::_Deque_iterator.188" }
%"struct.std::_Deque_iterator.188" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.189" = type { %"class.std::_Deque_base.190" }
%"class.std::_Deque_base.190" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::PriceLevel>, std::allocator<std::shared_ptr<aat::core::PriceLevel>>>::_Deque_impl" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::PriceLevel>, std::allocator<std::shared_ptr<aat::core::PriceLevel>>>::_Deque_impl" = type { %"struct.std::_Deque_base<std::shared_ptr<aat::core::PriceLevel>, std::allocator<std::shared_ptr<aat::core::PriceLevel>>>::_Deque_impl_data" }
%"struct.std::_Deque_base<std::shared_ptr<aat::core::PriceLevel>, std::allocator<std::shared_ptr<aat::core::PriceLevel>>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.194", %"struct.std::_Deque_iterator.194" }
%"struct.std::_Deque_iterator.194" = type { ptr, ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.195" = type { %"struct.std::_Vector_base.196" }
%"struct.std::_Vector_base.196" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.200" = type { %"class.std::_Hashtable.201" }
%"class.std::_Hashtable.201" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef %1) #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::vector.226", align 8
  %6 = alloca double, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca %"class.std::shared_ptr", align 8
  %14 = alloca %"class.std::shared_ptr", align 8
  %15 = alloca %"class.std::shared_ptr.220", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::shared_ptr.220", align 8
  %18 = alloca %"class.std::shared_ptr", align 8
  %19 = alloca %"class.std::shared_ptr", align 8
  %20 = alloca %"class.std::shared_ptr", align 8
  %21 = alloca %"class.std::shared_ptr", align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %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 %"class.std::shared_ptr.220", align 8
  %29 = alloca %"class.std::shared_ptr", align 8
  %30 = alloca ptr, align 8
  %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 = alloca %"class.std::shared_ptr", align 8
  %35 = alloca %"class.std::shared_ptr", align 8
  %36 = alloca %"class.std::shared_ptr.220", align 8
  %37 = alloca %"class.std::shared_ptr", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %41 = alloca %"class.std::shared_ptr", align 8
  %42 = alloca %"class.std::shared_ptr", align 8
  %43 = alloca %"class.std::shared_ptr", align 8
  %44 = alloca %"class.std::shared_ptr", align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.std::shared_ptr", align 8
  %49 = alloca %"class.std::shared_ptr", align 8
  %50 = alloca %"class.std::shared_ptr.220", align 8
  %51 = alloca %"class.std::shared_ptr", align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %55 = alloca %"class.std::shared_ptr", align 8
  %56 = alloca %"class.std::shared_ptr", align 8
  %57 = alloca %"class.std::shared_ptr", align 8
  %58 = alloca %"class.std::shared_ptr.220", align 8
  %59 = alloca %"class.std::shared_ptr", align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %63 = alloca %"class.std::shared_ptr", align 8
  %64 = alloca %"class.std::shared_ptr", align 8
  %65 = alloca %"class.std::shared_ptr", align 8
  %66 = alloca ptr, align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %69 = alloca %"class.std::shared_ptr", align 8
  %70 = alloca %"class.std::shared_ptr", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %71 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #7
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %72 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %73 = getelementptr inbounds %"struct.aat::core::Order", ptr %72, i32 0, i32 9
  %74 = load i32, ptr %73, align 8, !tbaa !9
  %75 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %76 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %75)
          to label %77 unwind label %128

77:                                               ; preds = %2
  %78 = invoke noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512) %71, i32 noundef %74, i64 noundef %76)
          to label %79 unwind label %128

79:                                               ; preds = %77
  store double %78, ptr %6, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %80 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %81 = getelementptr inbounds %"struct.aat::core::Order", ptr %80, i32 0, i32 9
  %82 = load i32, ptr %81, align 8, !tbaa !9
  %83 = icmp eq i32 %82, 1
  br i1 %83, label %84, label %86

84:                                               ; preds = %79
  %85 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 4
  br label %88

86:                                               ; preds = %79
  %87 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 5
  br label %88

88:                                               ; preds = %86, %84
  %89 = phi ptr [ %85, %84 ], [ %87, %86 ]
  store ptr %89, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %90 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %91 = getelementptr inbounds %"struct.aat::core::Order", ptr %90, i32 0, i32 9
  %92 = load i32, ptr %91, align 8, !tbaa !9
  %93 = icmp eq i32 %92, 1
  br i1 %93, label %94, label %96

94:                                               ; preds = %88
  %95 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 6
  br label %98

96:                                               ; preds = %88
  %97 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 7
  br label %98

98:                                               ; preds = %96, %94
  %99 = phi ptr [ %95, %94 ], [ %97, %96 ]
  store ptr %99, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %100 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %101 = getelementptr inbounds %"struct.aat::core::Order", ptr %100, i32 0, i32 9
  %102 = load i32, ptr %101, align 8, !tbaa !9
  %103 = icmp eq i32 %102, 1
  br i1 %103, label %104, label %106

104:                                              ; preds = %98
  %105 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 7
  br label %108

106:                                              ; preds = %98
  %107 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 6
  br label %108

108:                                              ; preds = %106, %104
  %109 = phi ptr [ %105, %104 ], [ %107, %106 ]
  store ptr %109, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %110 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %111 = getelementptr inbounds %"struct.aat::core::Order", ptr %110, i32 0, i32 10
  %112 = load i32, ptr %111, align 4, !tbaa !34
  %113 = icmp eq i32 %112, 1
  br i1 %113, label %114, label %137

114:                                              ; preds = %108
  %115 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %116 = getelementptr inbounds %"struct.aat::core::Order", ptr %115, i32 0, i32 11
  %117 = load i32, ptr %116, align 8, !tbaa !35
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %132

119:                                              ; preds = %114
  %120 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %121 = getelementptr inbounds %"struct.aat::core::Order", ptr %120, i32 0, i32 9
  %122 = load i32, ptr %121, align 8, !tbaa !9
  %123 = icmp eq i32 %122, 1
  %124 = zext i1 %123 to i64
  %125 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #7
  %126 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #7
  %127 = select i1 %123, double %125, double %126
  store double %127, ptr %12, align 8, !tbaa !33
  br label %136

128:                                              ; preds = %77, %2
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %7, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %8, align 4
  br label %716

132:                                              ; preds = %114
  %133 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %134 = getelementptr inbounds %"struct.aat::core::Order", ptr %133, i32 0, i32 8
  %135 = load double, ptr %134, align 8, !tbaa !36
  store double %135, ptr %12, align 8, !tbaa !33
  br label %136

136:                                              ; preds = %132, %119
  br label %141

137:                                              ; preds = %108
  %138 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %139 = getelementptr inbounds %"struct.aat::core::Order", ptr %138, i32 0, i32 8
  %140 = load double, ptr %139, align 8, !tbaa !36
  store double %140, ptr %12, align 8, !tbaa !33
  br label %141

141:                                              ; preds = %137, %136
  br label %142

142:                                              ; preds = %217, %141
  %143 = load double, ptr %6, align 8, !tbaa !33
  %144 = fcmp ogt double %143, 0.000000e+00
  br i1 %144, label %145, label %160

145:                                              ; preds = %142
  %146 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %147 = getelementptr inbounds %"struct.aat::core::Order", ptr %146, i32 0, i32 9
  %148 = load i32, ptr %147, align 8, !tbaa !9
  %149 = icmp eq i32 %148, 1
  br i1 %149, label %150, label %154

150:                                              ; preds = %145
  %151 = load double, ptr %12, align 8, !tbaa !33
  %152 = load double, ptr %6, align 8, !tbaa !33
  %153 = fcmp oge double %151, %152
  br label %158

154:                                              ; preds = %145
  %155 = load double, ptr %12, align 8, !tbaa !33
  %156 = load double, ptr %6, align 8, !tbaa !33
  %157 = fcmp ole double %155, %156
  br label %158

158:                                              ; preds = %154, %150
  %159 = phi i1 [ %153, %150 ], [ %157, %154 ]
  br label %160

160:                                              ; preds = %158, %142
  %161 = phi i1 [ false, %142 ], [ %159, %158 ]
  br i1 %161, label %162, label %221

162:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #7
  %163 = load ptr, ptr %11, align 8, !tbaa !5
  %164 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %163, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %165 unwind label %181

165:                                              ; preds = %162
  %166 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %164) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8 %13, ptr noundef nonnull align 8 dereferenceable(304) %166, ptr noundef %14, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %167 unwind label %185

167:                                              ; preds = %165
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %168 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  br i1 %168, label %169, label %197

169:                                              ; preds = %167
  %170 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %171 = getelementptr inbounds %"struct.aat::core::Order", ptr %170, i32 0, i32 9
  %172 = load i32, ptr %171, align 8, !tbaa !9
  %173 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %174, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %176 unwind label %189

176:                                              ; preds = %169
  call void @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %175) #7
  %177 = invoke noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304) %173, ptr noundef %15)
          to label %178 unwind label %193

178:                                              ; preds = %176
  %179 = invoke noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512) %71, i32 noundef %172, i64 noundef %177)
          to label %180 unwind label %193

180:                                              ; preds = %178
  store double %179, ptr %6, align 8, !tbaa !33
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  store i32 2, ptr %16, align 4
  br label %217, !llvm.loop !37

181:                                              ; preds = %162
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %7, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %8, align 4
  br label %220

185:                                              ; preds = %165
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %7, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  br label %220

189:                                              ; preds = %205, %200, %197, %169
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %7, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %8, align 4
  br label %219

193:                                              ; preds = %178, %176
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %7, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #7
  br label %219

197:                                              ; preds = %167
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  %199 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEE2atERSA_(ptr noundef nonnull align 8 dereferenceable(56) %198, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %200 unwind label %189

200:                                              ; preds = %197
  %201 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %199) #7
  %202 = invoke noundef i64 @_ZNK3aat4core10PriceLevel4sizeEv(ptr noundef nonnull align 8 dereferenceable(304) %201)
          to label %203 unwind label %189

203:                                              ; preds = %200
  %204 = icmp ule i64 %202, 0
  br i1 %204, label %205, label %216

205:                                              ; preds = %203
  %206 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEE2atERSA_(ptr noundef nonnull align 8 dereferenceable(56) %207, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %209 unwind label %189

209:                                              ; preds = %205
  call void @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %208) #7
  %210 = invoke noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304) %206, ptr noundef %17)
          to label %211 unwind label %212

211:                                              ; preds = %209
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %216

212:                                              ; preds = %209
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %7, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #7
  br label %219

216:                                              ; preds = %211, %203
  store i32 3, ptr %16, align 4
  br label %217

217:                                              ; preds = %216, %180
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  %218 = load i32, ptr %16, align 4
  switch i32 %218, label %722 [
    i32 2, label %142
    i32 3, label %221
  ]

219:                                              ; preds = %212, %193, %189
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  br label %220

220:                                              ; preds = %219, %185, %181
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  br label %715

221:                                              ; preds = %217, %160
  %222 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %223 = getelementptr inbounds %"struct.aat::core::Order", ptr %222, i32 0, i32 15
  %224 = load double, ptr %223, align 8, !tbaa !39
  %225 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %226 = getelementptr inbounds %"struct.aat::core::Order", ptr %225, i32 0, i32 7
  %227 = load double, ptr %226, align 8, !tbaa !40
  %228 = fcmp olt double %224, %227
  br i1 %228, label %229, label %678

229:                                              ; preds = %221
  %230 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %231 = getelementptr inbounds %"struct.aat::core::Order", ptr %230, i32 0, i32 10
  %232 = load i32, ptr %231, align 4, !tbaa !34
  %233 = icmp eq i32 %232, 1
  br i1 %233, label %234, label %315

234:                                              ; preds = %229
  %235 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %236 = getelementptr inbounds %"struct.aat::core::Order", ptr %235, i32 0, i32 11
  %237 = load i32, ptr %236, align 8, !tbaa !35
  %238 = icmp eq i32 %237, 2
  br i1 %238, label %244, label %239

239:                                              ; preds = %234
  %240 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %241 = getelementptr inbounds %"struct.aat::core::Order", ptr %240, i32 0, i32 11
  %242 = load i32, ptr %241, align 8, !tbaa !35
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %259

244:                                              ; preds = %239, %234
  %245 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %245)
          to label %246 unwind label %251

246:                                              ; preds = %244
  %247 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %247, ptr noundef %18, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %248 unwind label %255

248:                                              ; preds = %246
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  %249 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %249)
          to label %250 unwind label %251

250:                                              ; preds = %248
  br label %314

251:                                              ; preds = %712, %682, %639, %608, %606, %566, %539, %537, %503, %451, %424, %422, %415, %411, %365, %338, %336, %329, %325, %280, %248, %244
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %7, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %8, align 4
  br label %715

255:                                              ; preds = %246
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %7, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  br label %715

259:                                              ; preds = %239
  %260 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %261 = getelementptr inbounds %"struct.aat::core::Order", ptr %260, i32 0, i32 15
  %262 = load double, ptr %261, align 8, !tbaa !39
  %263 = fcmp ogt double %262, 0.000000e+00
  br i1 %263, label %264, label %274

264:                                              ; preds = %259
  %265 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %266 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %267 = getelementptr inbounds %"struct.aat::core::Order", ptr %266, i32 0, i32 15
  %268 = load double, ptr %267, align 8, !tbaa !39
  invoke void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304) %265, ptr noundef %19, double noundef %268)
          to label %269 unwind label %270

269:                                              ; preds = %264
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %274

270:                                              ; preds = %264
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %7, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %715

274:                                              ; preds = %269, %259
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %275 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %276 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %275)
          to label %277 unwind label %292

277:                                              ; preds = %274
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %20, i64 noundef %276)
          to label %278 unwind label %292

278:                                              ; preds = %277
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  %279 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %279, ptr noundef %21, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %280 unwind label %296

280:                                              ; preds = %278
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  %281 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %281)
          to label %282 unwind label %251

282:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store ptr %5, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %283 = load ptr, ptr %22, align 8, !tbaa !5
  %284 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #7
  %285 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  store ptr %284, ptr %285, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %286) #7
  %288 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %287, ptr %288, align 8
  br label %289

289:                                              ; preds = %307, %282
  %290 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %290, label %300, label %291

291:                                              ; preds = %289
  store i32 4, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %313

292:                                              ; preds = %277, %274
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %7, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  br label %715

296:                                              ; preds = %278
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %7, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br label %715

300:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #7
  %301 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 8 dereferenceable(16) %301) #7
  %302 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %303 = getelementptr inbounds %"struct.aat::core::Order", ptr %302, i32 0, i32 2
  %304 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  %305 = getelementptr inbounds %"struct.aat::core::Order", ptr %304, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %305, ptr align 8 %303, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %26)
          to label %306 unwind label %309

306:                                              ; preds = %300
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  br label %307

307:                                              ; preds = %306
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %289

309:                                              ; preds = %300
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %7, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %715

313:                                              ; preds = %291
  br label %314

314:                                              ; preds = %313, %250
  br label %677

315:                                              ; preds = %229
  %316 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %317 = getelementptr inbounds %"struct.aat::core::Order", ptr %316, i32 0, i32 11
  %318 = load i32, ptr %317, align 8, !tbaa !35
  %319 = icmp eq i32 %318, 1
  br i1 %319, label %320, label %401

320:                                              ; preds = %315
  %321 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %322 = getelementptr inbounds %"struct.aat::core::Order", ptr %321, i32 0, i32 15
  %323 = load double, ptr %322, align 8, !tbaa !39
  %324 = fcmp ogt double %323, 0.000000e+00
  br i1 %324, label %325, label %336

325:                                              ; preds = %320
  %326 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %326)
          to label %327 unwind label %251

327:                                              ; preds = %325
  %328 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %328, ptr noundef %27, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %329 unwind label %332

329:                                              ; preds = %327
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  %330 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %330)
          to label %331 unwind label %251

331:                                              ; preds = %329
  br label %400

332:                                              ; preds = %327
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %7, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #7
  br label %715

336:                                              ; preds = %320
  %337 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %337)
          to label %338 unwind label %251

338:                                              ; preds = %336
  %339 = load ptr, ptr %9, align 8, !tbaa !5
  %340 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %341 = getelementptr inbounds %"struct.aat::core::Order", ptr %340, i32 0, i32 8
  %342 = load double, ptr %341, align 8, !tbaa !36
  %343 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef nonnull align 8 dereferenceable(24) %339, double noundef %342)
          to label %344 unwind label %251

344:                                              ; preds = %338
  br i1 %343, label %345, label %365

345:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #7
  %346 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %347 = getelementptr inbounds %"struct.aat::core::Order", ptr %346, i32 0, i32 8
  %348 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.220") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 8 dereferenceable(304) %348)
          to label %349 unwind label %356

349:                                              ; preds = %345
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %352 = getelementptr inbounds %"struct.aat::core::Order", ptr %351, i32 0, i32 8
  %353 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %350, ptr noundef nonnull align 8 dereferenceable(8) %352)
          to label %354 unwind label %360

354:                                              ; preds = %349
  %355 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #7
  br label %365

356:                                              ; preds = %345
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %7, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %8, align 4
  br label %364

360:                                              ; preds = %349
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %7, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  br label %364

364:                                              ; preds = %360, %356
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #7
  br label %715

365:                                              ; preds = %354, %344
  %366 = load ptr, ptr %10, align 8, !tbaa !5
  %367 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %368 = getelementptr inbounds %"struct.aat::core::Order", ptr %367, i32 0, i32 8
  %369 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %366, ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %370 unwind label %251

370:                                              ; preds = %365
  %371 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %369) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %371, ptr noundef %29)
          to label %372 unwind label %382

372:                                              ; preds = %370
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store ptr %5, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #7
  %375 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  store ptr %374, ptr %375, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %376 = load ptr, ptr %30, align 8, !tbaa !5
  %377 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %376) #7
  %378 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  store ptr %377, ptr %378, align 8
  br label %379

379:                                              ; preds = %393, %372
  %380 = 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) #7
  br i1 %380, label %386, label %381

381:                                              ; preds = %379
  store i32 6, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %399

382:                                              ; preds = %370
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %7, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #7
  br label %715

386:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #7
  %387 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 8 dereferenceable(16) %387) #7
  %388 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %389 = getelementptr inbounds %"struct.aat::core::Order", ptr %388, i32 0, i32 2
  %390 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %33) #7
  %391 = getelementptr inbounds %"struct.aat::core::Order", ptr %390, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %391, ptr align 8 %389, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %34)
          to label %392 unwind label %395

392:                                              ; preds = %386
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  br label %393

393:                                              ; preds = %392
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  br label %379

395:                                              ; preds = %386
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %7, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %715

399:                                              ; preds = %381
  br label %400

400:                                              ; preds = %399, %331
  br label %676

401:                                              ; preds = %315
  %402 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %403 = getelementptr inbounds %"struct.aat::core::Order", ptr %402, i32 0, i32 11
  %404 = load i32, ptr %403, align 8, !tbaa !35
  %405 = icmp eq i32 %404, 2
  br i1 %405, label %406, label %487

406:                                              ; preds = %401
  %407 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %408 = getelementptr inbounds %"struct.aat::core::Order", ptr %407, i32 0, i32 15
  %409 = load double, ptr %408, align 8, !tbaa !39
  %410 = fcmp ogt double %409, 0.000000e+00
  br i1 %410, label %411, label %422

411:                                              ; preds = %406
  %412 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %412)
          to label %413 unwind label %251

413:                                              ; preds = %411
  %414 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %414, ptr noundef %35, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %415 unwind label %418

415:                                              ; preds = %413
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  %416 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %416)
          to label %417 unwind label %251

417:                                              ; preds = %415
  br label %486

418:                                              ; preds = %413
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %7, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  br label %715

422:                                              ; preds = %406
  %423 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %423)
          to label %424 unwind label %251

424:                                              ; preds = %422
  %425 = load ptr, ptr %9, align 8, !tbaa !5
  %426 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %427 = getelementptr inbounds %"struct.aat::core::Order", ptr %426, i32 0, i32 8
  %428 = load double, ptr %427, align 8, !tbaa !36
  %429 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef nonnull align 8 dereferenceable(24) %425, double noundef %428)
          to label %430 unwind label %251

430:                                              ; preds = %424
  br i1 %429, label %431, label %451

431:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  %432 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %433 = getelementptr inbounds %"struct.aat::core::Order", ptr %432, i32 0, i32 8
  %434 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.220") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull align 8 dereferenceable(304) %434)
          to label %435 unwind label %442

435:                                              ; preds = %431
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %438 = getelementptr inbounds %"struct.aat::core::Order", ptr %437, i32 0, i32 8
  %439 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %436, ptr noundef nonnull align 8 dereferenceable(8) %438)
          to label %440 unwind label %446

440:                                              ; preds = %435
  %441 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %439, ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  br label %451

442:                                              ; preds = %431
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %7, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %8, align 4
  br label %450

446:                                              ; preds = %435
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %7, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %450

450:                                              ; preds = %446, %442
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  br label %715

451:                                              ; preds = %440, %430
  %452 = load ptr, ptr %10, align 8, !tbaa !5
  %453 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %454 = getelementptr inbounds %"struct.aat::core::Order", ptr %453, i32 0, i32 8
  %455 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %452, ptr noundef nonnull align 8 dereferenceable(8) %454)
          to label %456 unwind label %251

456:                                              ; preds = %451
  %457 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %455) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %457, ptr noundef %37)
          to label %458 unwind label %468

458:                                              ; preds = %456
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store ptr %5, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %459 = load ptr, ptr %38, align 8, !tbaa !5
  %460 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %459) #7
  %461 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %39, i32 0, i32 0
  store ptr %460, ptr %461, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %462 = load ptr, ptr %38, align 8, !tbaa !5
  %463 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #7
  %464 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %40, i32 0, i32 0
  store ptr %463, ptr %464, align 8
  br label %465

465:                                              ; preds = %479, %458
  %466 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  br i1 %466, label %472, label %467

467:                                              ; preds = %465
  store i32 8, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %485

468:                                              ; preds = %456
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %7, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  br label %715

472:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #7
  %473 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %473) #7
  %474 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %475 = getelementptr inbounds %"struct.aat::core::Order", ptr %474, i32 0, i32 2
  %476 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  %477 = getelementptr inbounds %"struct.aat::core::Order", ptr %476, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %477, ptr align 8 %475, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %42)
          to label %478 unwind label %481

478:                                              ; preds = %472
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  br label %479

479:                                              ; preds = %478
  %480 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %465

481:                                              ; preds = %472
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %7, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %715

485:                                              ; preds = %467
  br label %486

486:                                              ; preds = %485, %417
  br label %675

487:                                              ; preds = %401
  %488 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %489 = getelementptr inbounds %"struct.aat::core::Order", ptr %488, i32 0, i32 11
  %490 = load i32, ptr %489, align 8, !tbaa !35
  %491 = icmp eq i32 %490, 3
  br i1 %491, label %492, label %602

492:                                              ; preds = %487
  %493 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %494 = getelementptr inbounds %"struct.aat::core::Order", ptr %493, i32 0, i32 15
  %495 = load double, ptr %494, align 8, !tbaa !39
  %496 = fcmp ogt double %495, 0.000000e+00
  br i1 %496, label %497, label %537

497:                                              ; preds = %492
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %498 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %499 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %498)
          to label %500 unwind label %515

500:                                              ; preds = %497
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %43, i64 noundef %499)
          to label %501 unwind label %515

501:                                              ; preds = %500
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  %502 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %502, ptr noundef %44, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %503 unwind label %519

503:                                              ; preds = %501
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  %504 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %504)
          to label %505 unwind label %251

505:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store ptr %5, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %506 = load ptr, ptr %45, align 8, !tbaa !5
  %507 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %506) #7
  %508 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %46, i32 0, i32 0
  store ptr %507, ptr %508, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %509 = load ptr, ptr %45, align 8, !tbaa !5
  %510 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %509) #7
  %511 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %47, i32 0, i32 0
  store ptr %510, ptr %511, align 8
  br label %512

512:                                              ; preds = %530, %505
  %513 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #7
  br i1 %513, label %523, label %514

514:                                              ; preds = %512
  store i32 10, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %536

515:                                              ; preds = %500, %497
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %7, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #7
  br label %715

519:                                              ; preds = %501
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %7, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #7
  br label %715

523:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #7
  %524 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %524) #7
  %525 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %526 = getelementptr inbounds %"struct.aat::core::Order", ptr %525, i32 0, i32 2
  %527 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %48) #7
  %528 = getelementptr inbounds %"struct.aat::core::Order", ptr %527, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %528, ptr align 8 %526, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %49)
          to label %529 unwind label %532

529:                                              ; preds = %523
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #7
  br label %530

530:                                              ; preds = %529
  %531 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %512

532:                                              ; preds = %523
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %7, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %715

536:                                              ; preds = %514
  br label %601

537:                                              ; preds = %492
  %538 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %538)
          to label %539 unwind label %251

539:                                              ; preds = %537
  %540 = load ptr, ptr %9, align 8, !tbaa !5
  %541 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %542 = getelementptr inbounds %"struct.aat::core::Order", ptr %541, i32 0, i32 8
  %543 = load double, ptr %542, align 8, !tbaa !36
  %544 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef nonnull align 8 dereferenceable(24) %540, double noundef %543)
          to label %545 unwind label %251

545:                                              ; preds = %539
  br i1 %544, label %546, label %566

546:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  %547 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %548 = getelementptr inbounds %"struct.aat::core::Order", ptr %547, i32 0, i32 8
  %549 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.220") align 8 %50, ptr noundef nonnull align 8 dereferenceable(8) %548, ptr noundef nonnull align 8 dereferenceable(304) %549)
          to label %550 unwind label %557

550:                                              ; preds = %546
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  %552 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %553 = getelementptr inbounds %"struct.aat::core::Order", ptr %552, i32 0, i32 8
  %554 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %551, ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %555 unwind label %561

555:                                              ; preds = %550
  %556 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %554, ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %566

557:                                              ; preds = %546
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %7, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %8, align 4
  br label %565

561:                                              ; preds = %550
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %7, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  br label %565

565:                                              ; preds = %561, %557
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %715

566:                                              ; preds = %555, %545
  %567 = load ptr, ptr %10, align 8, !tbaa !5
  %568 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %569 = getelementptr inbounds %"struct.aat::core::Order", ptr %568, i32 0, i32 8
  %570 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %567, ptr noundef nonnull align 8 dereferenceable(8) %569)
          to label %571 unwind label %251

571:                                              ; preds = %566
  %572 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %570) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %572, ptr noundef %51)
          to label %573 unwind label %583

573:                                              ; preds = %571
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store ptr %5, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %574 = load ptr, ptr %52, align 8, !tbaa !5
  %575 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #7
  %576 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %53, i32 0, i32 0
  store ptr %575, ptr %576, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %577 = load ptr, ptr %52, align 8, !tbaa !5
  %578 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %577) #7
  %579 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %54, i32 0, i32 0
  store ptr %578, ptr %579, align 8
  br label %580

580:                                              ; preds = %594, %573
  %581 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  br i1 %581, label %587, label %582

582:                                              ; preds = %580
  store i32 12, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %600

583:                                              ; preds = %571
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %7, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #7
  br label %715

587:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  %588 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 8 dereferenceable(16) %588) #7
  %589 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %590 = getelementptr inbounds %"struct.aat::core::Order", ptr %589, i32 0, i32 2
  %591 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %55) #7
  %592 = getelementptr inbounds %"struct.aat::core::Order", ptr %591, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %592, ptr align 8 %590, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %56)
          to label %593 unwind label %596

593:                                              ; preds = %587
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  br label %594

594:                                              ; preds = %593
  %595 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %580

596:                                              ; preds = %587
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %7, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %715

600:                                              ; preds = %582
  br label %601

601:                                              ; preds = %600, %536
  br label %674

602:                                              ; preds = %487
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %603 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %604 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %603)
          to label %605 unwind label %626

605:                                              ; preds = %602
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %57, i64 noundef %604)
          to label %606 unwind label %626

606:                                              ; preds = %605
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  %607 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %607)
          to label %608 unwind label %251

608:                                              ; preds = %606
  %609 = load ptr, ptr %9, align 8, !tbaa !5
  %610 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %611 = getelementptr inbounds %"struct.aat::core::Order", ptr %610, i32 0, i32 8
  %612 = load double, ptr %611, align 8, !tbaa !36
  %613 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef nonnull align 8 dereferenceable(24) %609, double noundef %612)
          to label %614 unwind label %251

614:                                              ; preds = %608
  br i1 %613, label %615, label %639

615:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  %616 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %617 = getelementptr inbounds %"struct.aat::core::Order", ptr %616, i32 0, i32 8
  %618 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind writable sret(%"class.std::shared_ptr.220") align 8 %58, ptr noundef nonnull align 8 dereferenceable(8) %617, ptr noundef nonnull align 8 dereferenceable(304) %618)
          to label %619 unwind label %630

619:                                              ; preds = %615
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  %621 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %622 = getelementptr inbounds %"struct.aat::core::Order", ptr %621, i32 0, i32 8
  %623 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %620, ptr noundef nonnull align 8 dereferenceable(8) %622)
          to label %624 unwind label %634

624:                                              ; preds = %619
  %625 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %623, ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %639

626:                                              ; preds = %605, %602
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %7, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #7
  br label %715

630:                                              ; preds = %615
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %7, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %8, align 4
  br label %638

634:                                              ; preds = %619
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %7, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  br label %638

638:                                              ; preds = %634, %630
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %715

639:                                              ; preds = %624, %614
  %640 = load ptr, ptr %10, align 8, !tbaa !5
  %641 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %642 = getelementptr inbounds %"struct.aat::core::Order", ptr %641, i32 0, i32 8
  %643 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %640, ptr noundef nonnull align 8 dereferenceable(8) %642)
          to label %644 unwind label %251

644:                                              ; preds = %639
  %645 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %643) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %59, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %645, ptr noundef %59)
          to label %646 unwind label %656

646:                                              ; preds = %644
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  store ptr %5, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %647 = load ptr, ptr %60, align 8, !tbaa !5
  %648 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %647) #7
  %649 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %61, i32 0, i32 0
  store ptr %648, ptr %649, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %650 = load ptr, ptr %60, align 8, !tbaa !5
  %651 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %650) #7
  %652 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %62, i32 0, i32 0
  store ptr %651, ptr %652, align 8
  br label %653

653:                                              ; preds = %667, %646
  %654 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  br i1 %654, label %660, label %655

655:                                              ; preds = %653
  store i32 14, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %673

656:                                              ; preds = %644
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %7, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #7
  br label %715

660:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #7
  %661 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull align 8 dereferenceable(16) %661) #7
  %662 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %663 = getelementptr inbounds %"struct.aat::core::Order", ptr %662, i32 0, i32 2
  %664 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %63) #7
  %665 = getelementptr inbounds %"struct.aat::core::Order", ptr %664, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %665, ptr align 8 %663, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef nonnull align 8 dereferenceable(16) %63) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %64)
          to label %666 unwind label %669

666:                                              ; preds = %660
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  br label %667

667:                                              ; preds = %666
  %668 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br label %653

669:                                              ; preds = %660
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %7, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %715

673:                                              ; preds = %655
  br label %674

674:                                              ; preds = %673, %601
  br label %675

675:                                              ; preds = %674, %486
  br label %676

676:                                              ; preds = %675, %400
  br label %677

677:                                              ; preds = %676, %314
  br label %712

678:                                              ; preds = %221
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %1) #7
  %679 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  %680 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %679)
          to label %681 unwind label %694

681:                                              ; preds = %678
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %65, i64 noundef %680)
          to label %682 unwind label %694

682:                                              ; preds = %681
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  %683 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %683)
          to label %684 unwind label %251

684:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  store ptr %5, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %685 = load ptr, ptr %66, align 8, !tbaa !5
  %686 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %685) #7
  %687 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %67, i32 0, i32 0
  store ptr %686, ptr %687, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %688 = load ptr, ptr %66, align 8, !tbaa !5
  %689 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %688) #7
  %690 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %68, i32 0, i32 0
  store ptr %689, ptr %690, align 8
  br label %691

691:                                              ; preds = %705, %684
  %692 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #7
  br i1 %692, label %698, label %693

693:                                              ; preds = %691
  store i32 16, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  br label %711

694:                                              ; preds = %681, %678
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %7, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #7
  br label %715

698:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #7
  %699 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(16) %699) #7
  %700 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #7
  %701 = getelementptr inbounds %"struct.aat::core::Order", ptr %700, i32 0, i32 2
  %702 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %69) #7
  %703 = getelementptr inbounds %"struct.aat::core::Order", ptr %702, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %703, ptr align 8 %701, i64 8, i1 false), !tbaa.struct !41
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %71, ptr noundef %70)
          to label %704 unwind label %707

704:                                              ; preds = %698
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #7
  br label %705

705:                                              ; preds = %704
  %706 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br label %691

707:                                              ; preds = %698
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %7, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %8, align 4
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #7
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  br label %715

711:                                              ; preds = %693
  br label %712

712:                                              ; preds = %711, %677
  %713 = getelementptr inbounds %"class.aat::core::OrderBook", ptr %71, i32 0, i32 0
  invoke void @_ZN3aat4core9Collector5clearEv(ptr noundef nonnull align 8 dereferenceable(304) %713)
          to label %714 unwind label %251

714:                                              ; preds = %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #7
  ret void

715:                                              ; preds = %707, %694, %669, %656, %638, %626, %596, %583, %565, %532, %519, %515, %481, %468, %450, %418, %395, %382, %364, %332, %309, %296, %292, %270, %255, %251, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  br label %716

716:                                              ; preds = %715, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #7
  br label %717

717:                                              ; preds = %716
  %718 = load ptr, ptr %7, align 8
  %719 = load i32, ptr %8, align 4
  %720 = insertvalue { ptr, i32 } poison, ptr %718, 0
  %721 = insertvalue { ptr, i32 } %720, i32 %719, 1
  resume { ptr, i32 } %721

722:                                              ; preds = %217
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512), i32 noundef, i64 noundef) #2 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)) #2 align 2

declare noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() #2 align 2

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

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

declare void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3

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

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

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

declare noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef) #3

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

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

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

declare void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304)) #3

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

declare void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304)) #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512), ptr noundef nonnull align 8 dereferenceable(24), double noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.220") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(304)) #6

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

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

declare void @_ZN3aat4core9Collector5clearEv(ptr noundef nonnull align 8 dereferenceable(304)) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !26, i64 184}
!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 = !{!25, !25, i64 0}
!34 = !{!10, !27, i64 188}
!35 = !{!10, !28, i64 192}
!36 = !{!10, !25, i64 176}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!10, !25, i64 224}
!40 = !{!10, !25, i64 168}
!41 = !{i64 0, i64 8, !42}
!42 = !{!14, !14, i64 0}


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

%"class.std::vector.226" = type { %"struct.std::_Vector_base.227" }
%"struct.std::_Vector_base.227" = 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 }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.220" = type { %"class.std::__shared_ptr.221" }
%"class.std::__shared_ptr.221" = type { ptr, %"class.std::__shared_count" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.226", align 8
  %4 = alloca double, align 8
  %5 = alloca %"class.std::shared_ptr", align 8
  %6 = alloca %"class.std::shared_ptr", align 8
  %7 = alloca %"class.std::shared_ptr.220", align 8
  %8 = alloca %"class.std::shared_ptr.220", align 8
  %9 = alloca %"class.std::shared_ptr", align 8
  %10 = alloca %"class.std::shared_ptr", align 8
  %11 = alloca %"class.std::shared_ptr", align 8
  %12 = alloca %"class.std::shared_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::shared_ptr", align 8
  %17 = alloca %"class.std::shared_ptr", align 8
  %18 = alloca %"class.std::shared_ptr.220", align 8
  %19 = alloca %"class.std::shared_ptr", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", 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.220", align 8
  %26 = alloca %"class.std::shared_ptr", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.std::shared_ptr", align 8
  %30 = alloca %"class.std::shared_ptr", align 8
  %31 = alloca %"class.std::shared_ptr", align 8
  %32 = alloca %"class.std::shared_ptr", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %35 = alloca %"class.std::shared_ptr", align 8
  %36 = alloca %"class.std::shared_ptr", align 8
  %37 = alloca %"class.std::shared_ptr.220", align 8
  %38 = alloca %"class.std::shared_ptr", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %41 = alloca %"class.std::shared_ptr", align 8
  %42 = alloca %"class.std::shared_ptr", align 8
  %43 = alloca %"class.std::shared_ptr", align 8
  %44 = alloca %"class.std::shared_ptr.220", align 8
  %45 = alloca %"class.std::shared_ptr", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %48 = alloca %"class.std::shared_ptr", align 8
  %49 = alloca %"class.std::shared_ptr", align 8
  %50 = alloca %"class.std::shared_ptr", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca %"class.std::shared_ptr", align 8
  %54 = alloca %"class.std::shared_ptr", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #6
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %55 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %56 = getelementptr inbounds i8, ptr %55, i64 184
  %57 = load i32, ptr %56, align 8, !tbaa !5
  %58 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %59 unwind label %95

59:                                               ; preds = %2
  %60 = call noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512) %0, i32 noundef %57, i64 noundef %58)
  store double %60, ptr %4, align 8, !tbaa !32
  %61 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %62 = getelementptr inbounds i8, ptr %61, i64 184
  %63 = load i32, ptr %62, align 8, !tbaa !5
  %64 = icmp eq i32 %63, 1
  %.v = select i1 %64, i64 352, i64 376
  %65 = getelementptr inbounds i8, ptr %0, i64 %.v
  %66 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %67 = getelementptr inbounds i8, ptr %66, i64 184
  %68 = load i32, ptr %67, align 8, !tbaa !5
  %69 = icmp eq i32 %68, 1
  %70 = getelementptr inbounds i8, ptr %0, i64 400
  %71 = getelementptr inbounds i8, ptr %0, i64 456
  %72 = select i1 %69, ptr %70, ptr %71
  %73 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %74 = getelementptr inbounds i8, ptr %73, i64 184
  %75 = load i32, ptr %74, align 8, !tbaa !5
  %76 = icmp eq i32 %75, 1
  %77 = select i1 %76, ptr %71, ptr %70
  %78 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %79 = getelementptr inbounds i8, ptr %78, i64 188
  %80 = load i32, ptr %79, align 4, !tbaa !33
  %81 = icmp eq i32 %80, 1
  %82 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  br i1 %81, label %83, label %100

83:                                               ; preds = %59
  %84 = getelementptr inbounds i8, ptr %82, i64 192
  %85 = load i32, ptr %84, align 8, !tbaa !34
  %86 = icmp eq i32 %85, 0
  %87 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  br i1 %86, label %88, label %97

88:                                               ; preds = %83
  %89 = getelementptr inbounds i8, ptr %87, i64 184
  %90 = load i32, ptr %89, align 8, !tbaa !5
  %91 = icmp eq i32 %90, 1
  %92 = call noundef double @_ZNSt14numeric_limitsIdE3maxEv() #6
  %93 = call noundef double @_ZNSt14numeric_limitsIdE3minEv() #6
  %94 = select i1 %91, double %92, double %93
  br label %103

95:                                               ; preds = %2
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %477

97:                                               ; preds = %83
  %98 = getelementptr inbounds i8, ptr %87, i64 176
  %99 = load double, ptr %98, align 8, !tbaa !35
  br label %103

100:                                              ; preds = %59
  %101 = getelementptr inbounds i8, ptr %82, i64 176
  %102 = load double, ptr %101, align 8, !tbaa !35
  br label %103

103:                                              ; preds = %88, %97, %100
  %.043 = phi double [ %94, %88 ], [ %99, %97 ], [ %102, %100 ]
  %.old = load double, ptr %4, align 8, !tbaa !32
  %.old58 = fcmp ogt double %.old, 0.000000e+00
  br i1 %.old58, label %.preheader, label %.critedge

.preheader:                                       ; preds = %103, %147
  %104 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %105 = getelementptr inbounds i8, ptr %104, i64 184
  %106 = load i32, ptr %105, align 8, !tbaa !5
  %107 = icmp eq i32 %106, 1
  %108 = load double, ptr %4, align 8
  %109 = fcmp oge double %.043, %108
  %110 = fcmp ole double %.043, %108
  %111 = select i1 %107, i1 %109, i1 %110
  br i1 %111, label %112, label %.critedge

112:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %113 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %77, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %114 unwind label %127

114:                                              ; preds = %112
  %115 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %113) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr") align 8 %5, ptr noundef nonnull align 8 dereferenceable(304) %115, ptr noundef nonnull %6, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %116 unwind label %129

116:                                              ; preds = %114
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #6
  %117 = call noundef zeroext i1 @_ZNKSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EEcvbEv(ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br i1 %117, label %118, label %135

118:                                              ; preds = %116
  %119 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %120 = getelementptr inbounds i8, ptr %119, i64 184
  %121 = load i32, ptr %120, align 8, !tbaa !5
  %122 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %77, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %123 unwind label %131

123:                                              ; preds = %118
  call void @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %122) #6
  %124 = invoke noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %7)
          to label %125 unwind label %133

125:                                              ; preds = %123
  %126 = call noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512) %0, i32 noundef %121, i64 noundef %124)
  store double %126, ptr %4, align 8, !tbaa !32
  br label %.sink.split, !llvm.loop !36

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

129:                                              ; preds = %114
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #6
  br label %151

131:                                              ; preds = %141, %135, %118
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %150

133:                                              ; preds = %123
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  br label %150

135:                                              ; preds = %116
  %136 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEE2atERSA_(ptr noundef nonnull align 8 dereferenceable(56) %77, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %137 unwind label %131

137:                                              ; preds = %135
  %138 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %136) #6
  %139 = call noundef i64 @_ZNK3aat4core10PriceLevel4sizeEv(ptr noundef nonnull align 8 dereferenceable(304) %138)
  %140 = icmp eq i64 %139, 0
  br i1 %140, label %141, label %147

141:                                              ; preds = %137
  %142 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEE2atERSA_(ptr noundef nonnull align 8 dereferenceable(56) %77, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %143 unwind label %131

143:                                              ; preds = %141
  call void @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %142) #6
  %144 = invoke noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %8)
          to label %.sink.split unwind label %145

145:                                              ; preds = %143
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #6
  br label %150

.sink.split:                                      ; preds = %143, %125
  %.sink = phi ptr [ %7, %125 ], [ %8, %143 ]
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.sink) #6
  br label %147

147:                                              ; preds = %.sink.split, %137
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  %148 = load double, ptr %4, align 8
  %149 = fcmp ogt double %148, 0.000000e+00
  %or.cond = select i1 %117, i1 %149, i1 false
  br i1 %or.cond, label %.preheader, label %.critedge

150:                                              ; preds = %145, %133, %131
  %.pn = phi { ptr, i32 } [ %134, %133 ], [ %132, %131 ], [ %146, %145 ]
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  br label %151

151:                                              ; preds = %150, %129, %127
  %.pn.pn = phi { ptr, i32 } [ %.pn, %150 ], [ %130, %129 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  br label %477

.critedge:                                        ; preds = %147, %.preheader, %103
  %152 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %153 = getelementptr inbounds i8, ptr %152, i64 224
  %154 = load double, ptr %153, align 8, !tbaa !38
  %155 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %156 = getelementptr inbounds i8, ptr %155, i64 168
  %157 = load double, ptr %156, align 8, !tbaa !39
  %158 = fcmp olt double %154, %157
  br i1 %158, label %159, label %454

159:                                              ; preds = %.critedge
  %160 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %161 = getelementptr inbounds i8, ptr %160, i64 188
  %162 = load i32, ptr %161, align 4, !tbaa !33
  %163 = icmp eq i32 %162, 1
  %164 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %165 = getelementptr inbounds i8, ptr %164, i64 192
  %166 = load i32, ptr %165, align 8, !tbaa !34
  br i1 %163, label %167, label %216

167:                                              ; preds = %159
  %168 = icmp eq i32 %166, 2
  br i1 %168, label %174, label %169

169:                                              ; preds = %167
  %170 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %171 = getelementptr inbounds i8, ptr %170, i64 192
  %172 = load i32, ptr %171, align 8, !tbaa !34
  %173 = icmp eq i32 %172, 1
  br i1 %173, label %174, label %180

174:                                              ; preds = %169, %167
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %175 unwind label %176

175:                                              ; preds = %174
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %9, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %.invoke unwind label %178

176:                                              ; preds = %.invoke, %475, %457, %431, %409, %408, %382, %362, %361, %341, %305, %285, %284, %280, %248, %228, %227, %223, %196, %174
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %477

178:                                              ; preds = %175
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  br label %477

180:                                              ; preds = %169
  %181 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %182 = getelementptr inbounds i8, ptr %181, i64 224
  %183 = load double, ptr %182, align 8, !tbaa !38
  %184 = fcmp ogt double %183, 0.000000e+00
  br i1 %184, label %185, label %192

185:                                              ; preds = %180
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %186 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %187 = getelementptr inbounds i8, ptr %186, i64 224
  %188 = load double, ptr %187, align 8, !tbaa !38
  invoke void @_ZN3aat4core9Collector9pushTradeESt10shared_ptrINS0_5OrderEEd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %10, double noundef %188)
          to label %189 unwind label %190

189:                                              ; preds = %185
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  br label %192

190:                                              ; preds = %185
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  br label %477

192:                                              ; preds = %189, %180
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %193 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %194 unwind label %201

194:                                              ; preds = %192
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %11, i64 noundef %193)
          to label %195 unwind label %201

195:                                              ; preds = %194
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %12, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %196 unwind label %203

196:                                              ; preds = %195
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #6
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %197 unwind label %176

197:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %198 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %198, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %199 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %199, ptr %14, align 8
  %200 = 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) #6
  br i1 %200, label %.lr.ph75, label %._crit_edge76

._crit_edge76:                                    ; preds = %211, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %475

201:                                              ; preds = %194, %192
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  br label %477

203:                                              ; preds = %195
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #6
  br label %477

.lr.ph75:                                         ; preds = %197, %211
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  %205 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %205) #6
  %206 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %207 = getelementptr inbounds i8, ptr %206, i64 40
  %208 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  %209 = getelementptr inbounds i8, ptr %208, i64 40
  %210 = load i64, ptr %207, align 8, !tbaa !40
  store i64 %210, ptr %209, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %16)
          to label %211 unwind label %214

211:                                              ; preds = %.lr.ph75
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #6
  %213 = 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) #6
  br i1 %213, label %.lr.ph75, label %._crit_edge76

214:                                              ; preds = %.lr.ph75
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %477

216:                                              ; preds = %159
  %217 = icmp eq i32 %166, 1
  %218 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  br i1 %217, label %219, label %271

219:                                              ; preds = %216
  %220 = getelementptr inbounds i8, ptr %218, i64 224
  %221 = load double, ptr %220, align 8, !tbaa !38
  %222 = fcmp ogt double %221, 0.000000e+00
  br i1 %222, label %223, label %227

223:                                              ; preds = %219
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %224 unwind label %176

224:                                              ; preds = %223
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %17, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %.invoke unwind label %225

225:                                              ; preds = %224
  %226 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #6
  br label %477

227:                                              ; preds = %219
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %228 unwind label %176

228:                                              ; preds = %227
  %229 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %230 = getelementptr inbounds i8, ptr %229, i64 176
  %231 = load double, ptr %230, align 8, !tbaa !35
  %232 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, double noundef %231)
          to label %233 unwind label %176

233:                                              ; preds = %228
  br i1 %232, label %234, label %248

234:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  %235 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %236 = getelementptr inbounds i8, ptr %235, i64 176
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.220") align 8 %18, ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %237 unwind label %243

237:                                              ; preds = %234
  %238 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %239 = getelementptr inbounds i8, ptr %238, i64 176
  %240 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %241 unwind label %245

241:                                              ; preds = %237
  %242 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %240, ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  br label %248

243:                                              ; preds = %234
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %237
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #6
  br label %247

247:                                              ; preds = %245, %243
  %.pn53 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  br label %477

248:                                              ; preds = %241, %233
  %249 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %250 = getelementptr inbounds i8, ptr %249, i64 176
  %251 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %250)
          to label %252 unwind label %176

252:                                              ; preds = %248
  %253 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %251) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %253, ptr noundef nonnull %19)
          to label %254 unwind label %258

254:                                              ; preds = %252
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %255 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %255, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  %256 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %256, ptr %21, align 8
  %257 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br i1 %257, label %.lr.ph72, label %._crit_edge73

._crit_edge73:                                    ; preds = %266, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %475

258:                                              ; preds = %252
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #6
  br label %477

.lr.ph72:                                         ; preds = %254, %266
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  %260 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(16) %260) #6
  %261 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %262 = getelementptr inbounds i8, ptr %261, i64 40
  %263 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  %264 = getelementptr inbounds i8, ptr %263, i64 40
  %265 = load i64, ptr %262, align 8, !tbaa !40
  store i64 %265, ptr %264, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %23)
          to label %266 unwind label %269

266:                                              ; preds = %.lr.ph72
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  %268 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  br i1 %268, label %.lr.ph72, label %._crit_edge73

269:                                              ; preds = %.lr.ph72
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %477

271:                                              ; preds = %216
  %272 = getelementptr inbounds i8, ptr %218, i64 192
  %273 = load i32, ptr %272, align 8, !tbaa !34
  %274 = icmp eq i32 %273, 2
  %275 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  br i1 %274, label %276, label %328

276:                                              ; preds = %271
  %277 = getelementptr inbounds i8, ptr %275, i64 224
  %278 = load double, ptr %277, align 8, !tbaa !38
  %279 = fcmp ogt double %278, 0.000000e+00
  br i1 %279, label %280, label %284

280:                                              ; preds = %276
  invoke void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %281 unwind label %176

281:                                              ; preds = %280
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %24, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %.invoke unwind label %282

.invoke:                                          ; preds = %281, %224, %175
  %.sink77 = phi ptr [ %9, %175 ], [ %17, %224 ], [ %24, %281 ]
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.sink77) #6
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %475 unwind label %176

282:                                              ; preds = %281
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #6
  br label %477

284:                                              ; preds = %276
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %285 unwind label %176

285:                                              ; preds = %284
  %286 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %287 = getelementptr inbounds i8, ptr %286, i64 176
  %288 = load double, ptr %287, align 8, !tbaa !35
  %289 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, double noundef %288)
          to label %290 unwind label %176

290:                                              ; preds = %285
  br i1 %289, label %291, label %305

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  %292 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %293 = getelementptr inbounds i8, ptr %292, i64 176
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.220") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %294 unwind label %300

294:                                              ; preds = %291
  %295 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %296 = getelementptr inbounds i8, ptr %295, i64 176
  %297 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %298 unwind label %302

298:                                              ; preds = %294
  %299 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %297, ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  br label %305

300:                                              ; preds = %291
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %304

302:                                              ; preds = %294
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #6
  br label %304

304:                                              ; preds = %302, %300
  %.pn51 = phi { ptr, i32 } [ %303, %302 ], [ %301, %300 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  br label %477

305:                                              ; preds = %298, %290
  %306 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %307 = getelementptr inbounds i8, ptr %306, i64 176
  %308 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %309 unwind label %176

309:                                              ; preds = %305
  %310 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %308) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %310, ptr noundef nonnull %26)
          to label %311 unwind label %315

311:                                              ; preds = %309
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  %312 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %312, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  %313 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %313, ptr %28, align 8
  %314 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #6
  br i1 %314, label %.lr.ph69, label %._crit_edge70

._crit_edge70:                                    ; preds = %323, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %475

315:                                              ; preds = %309
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #6
  br label %477

.lr.ph69:                                         ; preds = %311, %323
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #6
  %317 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %29, ptr noundef nonnull align 8 dereferenceable(16) %317) #6
  %318 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %319 = getelementptr inbounds i8, ptr %318, i64 40
  %320 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  %321 = getelementptr inbounds i8, ptr %320, i64 40
  %322 = load i64, ptr %319, align 8, !tbaa !40
  store i64 %322, ptr %321, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %30)
          to label %323 unwind label %326

323:                                              ; preds = %.lr.ph69
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  %324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  %325 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #6
  br i1 %325, label %.lr.ph69, label %._crit_edge70

326:                                              ; preds = %.lr.ph69
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %477

328:                                              ; preds = %271
  %329 = getelementptr inbounds i8, ptr %275, i64 192
  %330 = load i32, ptr %329, align 8, !tbaa !34
  %331 = icmp eq i32 %330, 3
  br i1 %331, label %332, label %405

332:                                              ; preds = %328
  %333 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %334 = getelementptr inbounds i8, ptr %333, i64 224
  %335 = load double, ptr %334, align 8, !tbaa !38
  %336 = fcmp ogt double %335, 0.000000e+00
  br i1 %336, label %337, label %361

337:                                              ; preds = %332
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %338 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %339 unwind label %346

339:                                              ; preds = %337
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %31, i64 noundef %338)
          to label %340 unwind label %346

340:                                              ; preds = %339
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core9Collector10pushCancelESt10shared_ptrINS0_5OrderEEbd(ptr noundef nonnull align 8 dereferenceable(304) %0, ptr noundef nonnull %32, i1 noundef zeroext false, double noundef 0.000000e+00)
          to label %341 unwind label %348

341:                                              ; preds = %340
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %342 unwind label %176

342:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  %343 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %343, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %344 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %344, ptr %34, align 8
  %345 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #6
  br i1 %345, label %.lr.ph66, label %._crit_edge67

._crit_edge67:                                    ; preds = %356, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  br label %475

346:                                              ; preds = %339, %337
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #6
  br label %477

348:                                              ; preds = %340
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #6
  br label %477

.lr.ph66:                                         ; preds = %342, %356
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #6
  %350 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %350) #6
  %351 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %352 = getelementptr inbounds i8, ptr %351, i64 40
  %353 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  %354 = getelementptr inbounds i8, ptr %353, i64 40
  %355 = load i64, ptr %352, align 8, !tbaa !40
  store i64 %355, ptr %354, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %36)
          to label %356 unwind label %359

356:                                              ; preds = %.lr.ph66
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #6
  %358 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #6
  br i1 %358, label %.lr.ph66, label %._crit_edge67

359:                                              ; preds = %.lr.ph66
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  br label %477

361:                                              ; preds = %332
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %362 unwind label %176

362:                                              ; preds = %361
  %363 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %364 = getelementptr inbounds i8, ptr %363, i64 176
  %365 = load double, ptr %364, align 8, !tbaa !35
  %366 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, double noundef %365)
          to label %367 unwind label %176

367:                                              ; preds = %362
  br i1 %366, label %368, label %382

368:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #6
  %369 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %370 = getelementptr inbounds i8, ptr %369, i64 176
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.220") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %371 unwind label %377

371:                                              ; preds = %368
  %372 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %373 = getelementptr inbounds i8, ptr %372, i64 176
  %374 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %375 unwind label %379

375:                                              ; preds = %371
  %376 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %374, ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #6
  br label %382

377:                                              ; preds = %368
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %381

379:                                              ; preds = %371
  %380 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #6
  br label %381

381:                                              ; preds = %379, %377
  %.pn49 = phi { ptr, i32 } [ %380, %379 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #6
  br label %477

382:                                              ; preds = %375, %367
  %383 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %384 = getelementptr inbounds i8, ptr %383, i64 176
  %385 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %386 unwind label %176

386:                                              ; preds = %382
  %387 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %385) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %38, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %387, ptr noundef nonnull %38)
          to label %388 unwind label %392

388:                                              ; preds = %386
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %389 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %389, ptr %39, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  %390 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %390, ptr %40, align 8
  %391 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  br i1 %391, label %.lr.ph63, label %._crit_edge64

._crit_edge64:                                    ; preds = %400, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %475

392:                                              ; preds = %386
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %38) #6
  br label %477

.lr.ph63:                                         ; preds = %388, %400
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  %394 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %394) #6
  %395 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %396 = getelementptr inbounds i8, ptr %395, i64 40
  %397 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  %398 = getelementptr inbounds i8, ptr %397, i64 40
  %399 = load i64, ptr %396, align 8, !tbaa !40
  store i64 %399, ptr %398, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %42)
          to label %400 unwind label %403

400:                                              ; preds = %.lr.ph63
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  %402 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #6
  br i1 %402, label %.lr.ph63, label %._crit_edge64

403:                                              ; preds = %.lr.ph63
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  br label %477

405:                                              ; preds = %328
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %406 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %407 unwind label %424

407:                                              ; preds = %405
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %43, i64 noundef %406)
          to label %408 unwind label %424

408:                                              ; preds = %407
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %409 unwind label %176

409:                                              ; preds = %408
  %410 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %411 = getelementptr inbounds i8, ptr %410, i64 176
  %412 = load double, ptr %411, align 8, !tbaa !35
  %413 = invoke noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, double noundef %412)
          to label %414 unwind label %176

414:                                              ; preds = %409
  br i1 %413, label %415, label %431

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #6
  %416 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %417 = getelementptr inbounds i8, ptr %416, i64 176
  invoke void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::shared_ptr.220") align 8 %44, ptr noundef nonnull align 8 dereferenceable(8) %417, ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %418 unwind label %426

418:                                              ; preds = %415
  %419 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %420 = getelementptr inbounds i8, ptr %419, i64 176
  %421 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %420)
          to label %422 unwind label %428

422:                                              ; preds = %418
  %423 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt10shared_ptrIN3aat4core10PriceLevelEEaSEOS3_(ptr noundef nonnull align 8 dereferenceable(16) %421, ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  br label %431

424:                                              ; preds = %407, %405
  %425 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #6
  br label %477

426:                                              ; preds = %415
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %430

428:                                              ; preds = %418
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %44) #6
  br label %430

430:                                              ; preds = %428, %426
  %.pn47 = phi { ptr, i32 } [ %429, %428 ], [ %427, %426 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #6
  br label %477

431:                                              ; preds = %422, %414
  %432 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %433 = getelementptr inbounds i8, ptr %432, i64 176
  %434 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt13unordered_mapIdSt10shared_ptrIN3aat4core10PriceLevelEESt4hashIdESt8equal_toIdESaISt4pairIKdS4_EEEixERSA_(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %435 unwind label %176

435:                                              ; preds = %431
  %436 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core10PriceLevelELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %434) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  invoke void @_ZN3aat4core10PriceLevel3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(304) %436, ptr noundef nonnull %45)
          to label %437 unwind label %441

437:                                              ; preds = %435
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #6
  %438 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %438, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #6
  %439 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %439, ptr %47, align 8
  %440 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #6
  br i1 %440, label %.lr.ph60, label %._crit_edge61

._crit_edge61:                                    ; preds = %449, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  br label %475

441:                                              ; preds = %435
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #6
  br label %477

.lr.ph60:                                         ; preds = %437, %449
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #6
  %443 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(16) %443) #6
  %444 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %445 = getelementptr inbounds i8, ptr %444, i64 40
  %446 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  %447 = getelementptr inbounds i8, ptr %446, i64 40
  %448 = load i64, ptr %445, align 8, !tbaa !40
  store i64 %448, ptr %447, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(16) %48) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %49)
          to label %449 unwind label %452

449:                                              ; preds = %.lr.ph60
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #6
  %450 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #6
  %451 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #6
  br i1 %451, label %.lr.ph60, label %._crit_edge61

452:                                              ; preds = %.lr.ph60
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %49) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  br label %477

454:                                              ; preds = %.critedge
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %1) #6
  %455 = invoke noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %456 unwind label %462

456:                                              ; preds = %454
  invoke void @_ZN3aat4core9OrderBook11clearOrdersESt10shared_ptrINS0_5OrderEEm(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %50, i64 noundef %455)
          to label %457 unwind label %462

457:                                              ; preds = %456
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  invoke void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %458 unwind label %176

458:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  %459 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %459, ptr %51, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #6
  %460 = call ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  store ptr %460, ptr %52, align 8
  %461 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #6
  br i1 %461, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %470, %458
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  br label %475

462:                                              ; preds = %456, %454
  %463 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #6
  br label %477

.lr.ph:                                           ; preds = %458, %470
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #6
  %464 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 8 dereferenceable(16) %464) #6
  %465 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %1) #6
  %466 = getelementptr inbounds i8, ptr %465, i64 40
  %467 = call noundef ptr @_ZNKSt19__shared_ptr_accessIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEptEv(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  %468 = getelementptr inbounds i8, ptr %467, i64 40
  %469 = load i64, ptr %466, align 8, !tbaa !40
  store i64 %469, ptr %468, align 8, !tbaa !40
  call void @_ZNSt10shared_ptrIN3aat4core5OrderEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  invoke void @_ZN3aat4core9OrderBook3addESt10shared_ptrINS0_5OrderEE(ptr noundef nonnull align 8 dereferenceable(512) %0, ptr noundef nonnull %54)
          to label %470 unwind label %473

470:                                              ; preds = %.lr.ph
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  %472 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10shared_ptrIN3aat4core5OrderEESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #6
  br i1 %472, label %.lr.ph, label %._crit_edge

473:                                              ; preds = %.lr.ph
  %474 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #6
  call void @_ZNSt12__shared_ptrIN3aat4core5OrderELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  br label %477

475:                                              ; preds = %.invoke, %._crit_edge76, %._crit_edge70, %._crit_edge67, %._crit_edge64, %._crit_edge61, %._crit_edge73, %._crit_edge
  invoke void @_ZN3aat4core9Collector5clearEv(ptr noundef nonnull align 8 dereferenceable(304) %0)
          to label %476 unwind label %176

476:                                              ; preds = %475
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  ret void

477:                                              ; preds = %151, %176, %178, %190, %201, %203, %214, %225, %247, %258, %269, %282, %304, %315, %326, %346, %348, %359, %381, %392, %403, %424, %430, %441, %452, %462, %473, %95
  %.pn55.pn = phi { ptr, i32 } [ %96, %95 ], [ %177, %176 ], [ %179, %178 ], [ %215, %214 ], [ %204, %203 ], [ %202, %201 ], [ %191, %190 ], [ %226, %225 ], [ %270, %269 ], [ %259, %258 ], [ %.pn53, %247 ], [ %283, %282 ], [ %327, %326 ], [ %316, %315 ], [ %.pn51, %304 ], [ %360, %359 ], [ %349, %348 ], [ %347, %346 ], [ %404, %403 ], [ %393, %392 ], [ %.pn49, %381 ], [ %453, %452 ], [ %442, %441 ], [ %.pn47, %430 ], [ %425, %424 ], [ %474, %473 ], [ %463, %462 ], [ %.pn.pn, %151 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn55.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZN3aat4core9OrderBook6getTopENS_6config4SideEm(ptr noundef nonnull align 8 dereferenceable(512), i32 noundef, i64 noundef) local_unnamed_addr #2 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 #2 align 2

declare noundef i64 @_ZNK3aat4core9Collector16getClearedLevelsEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3maxEv() local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE3minEv() local_unnamed_addr #2 align 2

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

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

declare void @_ZN3aat4core10PriceLevel5crossESt10shared_ptrINS0_5OrderEERSt6vectorIS4_SaIS4_EE(ptr dead_on_unwind writable sret(%"class.std::shared_ptr") align 8, ptr noundef nonnull align 8 dereferenceable(304), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

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

declare noundef i64 @_ZN3aat4core9Collector10clearLevelESt10shared_ptrINS0_10PriceLevelEE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef) local_unnamed_addr #3

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

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

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

declare void @_ZN3aat4core9Collector6revertEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #3

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

declare void @_ZN3aat4core9Collector6commitEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt10shared_ptrIN3aat4core5OrderEESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 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 #2 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 #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3aat4core9OrderBook6insortERSt6vectorIdSaIdEEd(ptr noundef nonnull align 8 dereferenceable(512), ptr noundef nonnull align 8 dereferenceable(24), double noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11make_sharedIN3aat4core10PriceLevelEJRdRNS1_9CollectorEEESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES8_E4typeEEDpOT0_(ptr dead_on_unwind noalias writable sret(%"class.std::shared_ptr.220") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #5

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

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

declare void @_ZN3aat4core9Collector5clearEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !25, i64 184}
!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 = !{!24, !24, i64 0}
!33 = !{!6, !26, i64 188}
!34 = !{!6, !27, i64 192}
!35 = !{!6, !24, i64 176}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!6, !24, i64 224}
!39 = !{!6, !24, i64 168}
!40 = !{!13, !13, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass