; LLVM IR from opset/openset :: src/attributes.ll (ZN7openset2db10Attributes10clearDirtyEv)

; 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.openset::db::IndexBits" = type <{ ptr, i32, i8, [3 x i8] }>
%"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter" = type { ptr, ptr }
%"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter" = type { ptr, ptr }
%"struct.openset::db::attr_key_s" = type <{ i32, i64 }>
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.openset::db::Attributes" = type <{ %"class.robin_hood::detail::unordered_map", %"class.robin_hood::detail::unordered_map.292", ptr, ptr, ptr, i32, [4 x i8] }>
%"class.robin_hood::detail::unordered_map" = type { ptr, ptr, i64, i64, i64, i32, i32 }
%"class.robin_hood::detail::unordered_map.292" = type { ptr, ptr, i64, i64, i64, i32, i32 }
%"struct.robin_hood::pair.302" = type { %"struct.openset::db::attr_key_s", %"class.std::vector.303" }
%"class.std::vector.303" = type { %"struct.std::_Vector_base.304" }
%"struct.std::_Vector_base.304" = type { %"struct.std::_Vector_base<openset::db::Attr_changes_s, std::allocator<openset::db::Attr_changes_s>>::_Vector_impl" }
%"struct.std::_Vector_base<openset::db::Attr_changes_s, std::allocator<openset::db::Attr_changes_s>>::_Vector_impl" = type { %"struct.std::_Vector_base<openset::db::Attr_changes_s, std::allocator<openset::db::Attr_changes_s>>::_Vector_impl_data" }
%"struct.std::_Vector_base<openset::db::Attr_changes_s, std::allocator<openset::db::Attr_changes_s>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.robin_hood::pair" = type { %"struct.openset::db::attr_key_s", ptr }
%"struct.openset::db::Attr_s" = type <{ ptr, i32, i32, i32, i32, i32, [1 x i8] }>
%"struct.openset::db::Attr_changes_s" = type { i32, i32 }
%"class.openset::db::Table" = type { %"class.std::__cxx11::basic_string", %class.CriticalSection, ptr, %class.CriticalSection, %"class.std::unordered_map.318", %"class.std::unordered_map.332", %class.CriticalSection, %class.cvar, %"class.openset::db::Properties", %"class.openset::db::PropertyMapping", %"class.openset::revent::MessageBroker", %"class.std::unordered_map.395", %"class.std::unordered_map.409", %"class.openset::db::AttributeBlob", %"class.std::unordered_map.423", %"class.std::queue", i64, i8, i8, i32, i64, i64, i64, i64, i64, i32, i32, i64 }
%"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::unordered_map.318" = type { %"class.std::_Hashtable.319" }
%"class.std::_Hashtable.319" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.332" = type { %"class.std::_Hashtable.333" }
%"class.std::_Hashtable.333" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%class.CriticalSection = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i8 }
%class.cvar = type { i8, %"union.cvar::dataUnion", %"union.cvar::dataUnion", %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr }
%"union.cvar::dataUnion" = type { i64 }
%"class.openset::db::Properties" = type <{ %class.CriticalSection, [7 x i8], [4096 x %"struct.openset::db::Properties::Property_s"], %"class.robin_hood::detail::unordered_map.346", %"class.robin_hood::detail::unordered_map.346", i32, [4 x i8] }>
%"struct.openset::db::Properties::Property_s" = type <{ %"class.std::__cxx11::basic_string", i32, i32, i8, i8, i8, [5 x i8] }>
%"class.robin_hood::detail::unordered_map.346" = type { ptr, ptr, i64, i64, i64, i32, i32 }
%"class.openset::db::PropertyMapping" = type { %class.CriticalSection, ptr, %"class.robin_hood::detail::unordered_map.351" }
%"class.robin_hood::detail::unordered_map.351" = type { ptr, ptr, i64, i64, i64, i32, i32 }
%"class.openset::revent::MessageBroker" = type { %class.CriticalSection, %"class.std::unordered_map.358", %"class.std::unordered_map.376" }
%"class.std::unordered_map.358" = type { %"class.std::_Hashtable.359" }
%"class.std::_Hashtable.359" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.376" = type { %"class.std::_Hashtable.377" }
%"class.std::_Hashtable.377" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.395" = type { %"class.std::_Hashtable.396" }
%"class.std::_Hashtable.396" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.409" = type { %"class.std::_Hashtable.410" }
%"class.std::_Hashtable.410" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.openset::db::AttributeBlob" = type <{ %"class.robin_hood::detail::unordered_map.315", %class.HeapStack, %class.CriticalSection, [7 x i8] }>
%"class.robin_hood::detail::unordered_map.315" = type { ptr, ptr, i64, i64, i64, i32, i32 }
%class.HeapStack = type { i64, i64, i64, i64, i64, ptr, ptr }
%"class.std::unordered_map.423" = type { %"class.std::_Hashtable.424" }
%"class.std::_Hashtable.424" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::queue" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<openset::db::TablePartitioned *, std::allocator<openset::db::TablePartitioned *>>::_Deque_impl" }
%"struct.std::_Deque_base<openset::db::TablePartitioned *, std::allocator<openset::db::TablePartitioned *>>::_Deque_impl" = type { %"struct.std::_Deque_base<openset::db::TablePartitioned *, std::allocator<openset::db::TablePartitioned *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<openset::db::TablePartitioned *, std::allocator<openset::db::TablePartitioned *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }

; 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: 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) #1

declare void @_ZN7openset2db9IndexBitsC1Ev(ptr noundef nonnull align 8 dereferenceable(13)) unnamed_addr #2

declare void @_ZN7openset2db9IndexBits5mountEPciiii(ptr noundef nonnull align 8 dereferenceable(13), ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv() #4 align 2

declare void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4findERKS4_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(12)) #4 align 2

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

declare noundef ptr @_ZN7PoolMem6getPtrEl(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7openset2db10Attributes10clearDirtyEv(ptr noundef nonnull align 8 dereferenceable(124) %0) #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.openset::db::IndexBits", align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %12 = alloca %"struct.openset::db::attr_key_s", align 1
  %13 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %25 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #7
  call void @_ZN7openset2db9IndexBitsC1Ev(ptr noundef nonnull align 8 dereferenceable(13) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %26 = getelementptr inbounds %"class.openset::db::Attributes", ptr %25, i32 0, i32 1
  store ptr %26, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #7
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  %28 = invoke { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %29 unwind label %44

29:                                               ; preds = %1
  %30 = getelementptr inbounds { ptr, ptr }, ptr %5, i32 0, i32 0
  %31 = extractvalue { ptr, ptr } %28, 0
  store ptr %31, ptr %30, align 8
  %32 = getelementptr inbounds { ptr, ptr }, ptr %5, i32 0, i32 1
  %33 = extractvalue { ptr, ptr } %28, 1
  store ptr %33, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #7
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  %35 = invoke { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %34)
          to label %36 unwind label %48

36:                                               ; preds = %29
  %37 = getelementptr inbounds { ptr, ptr }, ptr %8, i32 0, i32 0
  %38 = extractvalue { ptr, ptr } %35, 0
  store ptr %38, ptr %37, align 8
  %39 = getelementptr inbounds { ptr, ptr }, ptr %8, i32 0, i32 1
  %40 = extractvalue { ptr, ptr } %35, 1
  store ptr %40, ptr %39, align 8
  br label %41

41:                                               ; preds = %253, %36
  %42 = call noundef zeroext i1 @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEneILb0EEEbRKNSE_IXT_EEE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  br i1 %42, label %52, label %43

43:                                               ; preds = %41
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  br label %260

44:                                               ; preds = %1
  %45 = landingpad { ptr, i32 }
          cleanup
  %46 = extractvalue { ptr, i32 } %45, 0
  store ptr %46, ptr %6, align 8
  %47 = extractvalue { ptr, i32 } %45, 1
  store i32 %47, ptr %7, align 4
  br label %259

48:                                               ; preds = %29
  %49 = landingpad { ptr, i32 }
          cleanup
  %50 = extractvalue { ptr, i32 } %49, 0
  store ptr %50, ptr %6, align 8
  %51 = extractvalue { ptr, i32 } %49, 1
  store i32 %51, ptr %7, align 4
  br label %258

52:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %53 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %54 unwind label %89

54:                                               ; preds = %52
  store ptr %53, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #7
  %55 = getelementptr inbounds %"class.openset::db::Attributes", ptr %25, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 12, ptr %12) #7
  %56 = load ptr, ptr %10, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.robin_hood::pair.302", ptr %56, i32 0, i32 0
  %58 = getelementptr inbounds %"struct.openset::db::attr_key_s", ptr %57, i32 0, i32 0
  %59 = load i32, ptr %58, align 8, !tbaa !9
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  %61 = getelementptr inbounds %"struct.robin_hood::pair.302", ptr %60, i32 0, i32 0
  %62 = getelementptr inbounds %"struct.openset::db::attr_key_s", ptr %61, i32 0, i32 1
  %63 = load i64, ptr %62, align 4, !tbaa !18
  invoke void @_ZN7openset2db10attr_key_sC2Eil(ptr noundef nonnull align 1 dereferenceable(12) %12, i32 noundef %59, i64 noundef %63)
          to label %64 unwind label %93

64:                                               ; preds = %54
  %65 = invoke { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4findERKS4_(ptr noundef nonnull align 8 dereferenceable(48) %55, ptr noundef nonnull align 1 dereferenceable(12) %12)
          to label %66 unwind label %93

66:                                               ; preds = %64
  %67 = getelementptr inbounds { ptr, ptr }, ptr %11, i32 0, i32 0
  %68 = extractvalue { ptr, ptr } %65, 0
  store ptr %68, ptr %67, align 8
  %69 = getelementptr inbounds { ptr, ptr }, ptr %11, i32 0, i32 1
  %70 = extractvalue { ptr, ptr } %65, 1
  store ptr %70, ptr %69, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #7
  %71 = getelementptr inbounds %"class.openset::db::Attributes", ptr %25, i32 0, i32 0
  %72 = invoke { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %71)
          to label %73 unwind label %97

73:                                               ; preds = %66
  %74 = getelementptr inbounds { ptr, ptr }, ptr %13, i32 0, i32 0
  %75 = extractvalue { ptr, ptr } %72, 0
  store ptr %75, ptr %74, align 8
  %76 = getelementptr inbounds { ptr, ptr }, ptr %13, i32 0, i32 1
  %77 = extractvalue { ptr, ptr } %72, 1
  store ptr %77, ptr %76, align 8
  %78 = call noundef zeroext i1 @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEeqILb0EEEbRKNSC_IXT_EEE(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  br i1 %78, label %86, label %79

79:                                               ; preds = %73
  %80 = invoke noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %81 unwind label %97

81:                                               ; preds = %79
  %82 = getelementptr inbounds %"struct.robin_hood::pair", ptr %80, i32 0, i32 1
  %83 = load ptr, ptr %82, align 8, !tbaa !19
  %84 = icmp ne ptr %83, null
  %85 = xor i1 %84, true
  br label %86

86:                                               ; preds = %81, %73
  %87 = phi i1 [ true, %73 ], [ %85, %81 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  br i1 %87, label %88, label %101

88:                                               ; preds = %86
  store i32 3, ptr %9, align 4
  br label %247

89:                                               ; preds = %52
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %6, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %7, align 4
  br label %257

93:                                               ; preds = %64, %54
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %6, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #7
  br label %256

97:                                               ; preds = %79, %66
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %6, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  br label %256

101:                                              ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %102 = invoke noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %103 unwind label %133

103:                                              ; preds = %101
  %104 = getelementptr inbounds %"struct.robin_hood::pair", ptr %102, i32 0, i32 1
  %105 = load ptr, ptr %104, align 8, !tbaa !19
  store ptr %105, ptr %14, align 8, !tbaa !5
  %106 = load ptr, ptr %14, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %106, i32 0, i32 6
  %108 = getelementptr inbounds [1 x i8], ptr %107, i64 0, i64 0
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %109, i32 0, i32 1
  %111 = load i32, ptr %110, align 1, !tbaa !21
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %112, i32 0, i32 2
  %114 = load i32, ptr %113, align 1, !tbaa !23
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %115, i32 0, i32 3
  %117 = load i32, ptr %116, align 1, !tbaa !24
  %118 = load ptr, ptr %14, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %118, i32 0, i32 5
  %120 = load i32, ptr %119, align 1, !tbaa !25
  invoke void @_ZN7openset2db9IndexBits5mountEPciiii(ptr noundef nonnull align 8 dereferenceable(13) %3, ptr noundef %108, i32 noundef %111, i32 noundef %114, i32 noundef %117, i32 noundef %120)
          to label %121 unwind label %133

121:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.robin_hood::pair.302", ptr %122, i32 0, i32 1
  store ptr %123, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = call ptr @_ZNSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #7
  %126 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %125, ptr %126, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %127 = load ptr, ptr %15, align 8, !tbaa !5
  %128 = call ptr @_ZNSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %127) #7
  %129 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  store ptr %128, ptr %129, align 8
  br label %130

130:                                              ; preds = %160, %121
  %131 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  br i1 %131, label %137, label %132

132:                                              ; preds = %130
  store i32 4, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %162

133:                                              ; preds = %180, %178, %169, %162, %103, %101
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %6, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %7, align 4
  br label %255

137:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %138 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  store ptr %138, ptr %18, align 8, !tbaa !5
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.openset::db::Attr_changes_s", ptr %139, i32 0, i32 1
  %141 = load i32, ptr %140, align 1, !tbaa !26
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %153

143:                                              ; preds = %137
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.openset::db::Attr_changes_s", ptr %144, i32 0, i32 0
  %146 = load i32, ptr %145, align 1, !tbaa !28
  %147 = sext i32 %146 to i64
  invoke void @_ZN7openset2db9IndexBits6bitSetEl(ptr noundef nonnull align 8 dereferenceable(13) %3, i64 noundef %147)
          to label %148 unwind label %149

148:                                              ; preds = %143
  br label %159

149:                                              ; preds = %153, %143
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %6, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %255

153:                                              ; preds = %137
  %154 = load ptr, ptr %18, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.openset::db::Attr_changes_s", ptr %154, i32 0, i32 0
  %156 = load i32, ptr %155, align 1, !tbaa !28
  %157 = sext i32 %156 to i64
  invoke void @_ZN7openset2db9IndexBits8bitClearEl(ptr noundef nonnull align 8 dereferenceable(13) %3, i64 noundef %157)
          to label %158 unwind label %149

158:                                              ; preds = %153
  br label %159

159:                                              ; preds = %158, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %160

160:                                              ; preds = %159
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  br label %130

162:                                              ; preds = %132
  %163 = getelementptr inbounds %"class.openset::db::IndexBits", ptr %3, i32 0, i32 1
  %164 = load i32, ptr %163, align 8, !tbaa !29
  %165 = mul nsw i32 %164, 64
  %166 = invoke noundef i64 @_ZNK7openset2db9IndexBits10populationEi(ptr noundef nonnull align 8 dereferenceable(13) %3, i32 noundef %165)
          to label %167 unwind label %133

167:                                              ; preds = %162
  %168 = icmp ne i64 %166, 0
  br i1 %168, label %183, label %169

169:                                              ; preds = %167
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.robin_hood::pair.302", ptr %170, i32 0, i32 0
  %172 = getelementptr inbounds %"struct.openset::db::attr_key_s", ptr %171, i32 0, i32 0
  %173 = load i32, ptr %172, align 8, !tbaa !9
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = getelementptr inbounds %"struct.robin_hood::pair.302", ptr %174, i32 0, i32 0
  %176 = getelementptr inbounds %"struct.openset::db::attr_key_s", ptr %175, i32 0, i32 1
  %177 = load i64, ptr %176, align 4, !tbaa !18
  invoke void @_ZN7openset2db10Attributes4dropEil(ptr noundef nonnull align 8 dereferenceable(124) %25, i32 noundef %173, i64 noundef %177)
          to label %178 unwind label %133

178:                                              ; preds = %169
  %179 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %180 unwind label %133

180:                                              ; preds = %178
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %179, ptr noundef %181)
          to label %182 unwind label %133

182:                                              ; preds = %180
  br label %246

183:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store i64 0, ptr %19, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %184 = getelementptr inbounds %"class.openset::db::Attributes", ptr %25, i32 0, i32 2
  %185 = load ptr, ptr %184, align 8, !tbaa !33
  %186 = getelementptr inbounds %"class.openset::db::Table", ptr %185, i32 0, i32 25
  %187 = load i32, ptr %186, align 8, !tbaa !37
  %188 = invoke noundef ptr @_ZN7openset2db9IndexBits5storeERlS2_RiS3_i(ptr noundef nonnull align 8 dereferenceable(13) %3, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22, i32 noundef %187)
          to label %189 unwind label %210

189:                                              ; preds = %183
  store ptr %188, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %190 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %191 unwind label %214

191:                                              ; preds = %189
  %192 = load i64, ptr %19, align 8, !tbaa !32
  %193 = add i64 29, %192
  %194 = invoke noundef ptr @_ZN7PoolMem6getPtrEl(ptr noundef nonnull align 8 dereferenceable(48) %190, i64 noundef %193)
          to label %195 unwind label %214

195:                                              ; preds = %191
  store ptr %194, ptr %24, align 8, !tbaa !5
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %196, ptr align 1 %197, i64 29, i1 false)
  %198 = load ptr, ptr %23, align 8, !tbaa !5
  %199 = icmp ne ptr %198, null
  br i1 %199, label %200, label %218

200:                                              ; preds = %195
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %201, i32 0, i32 6
  %203 = getelementptr inbounds [1 x i8], ptr %202, i64 0, i64 0
  %204 = load ptr, ptr %23, align 8, !tbaa !5
  %205 = load i64, ptr %19, align 8, !tbaa !32
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %203, ptr align 1 %204, i64 %205, i1 false)
  %206 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %207 unwind label %214

207:                                              ; preds = %200
  %208 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %206, ptr noundef %208)
          to label %209 unwind label %214

209:                                              ; preds = %207
  br label %218

210:                                              ; preds = %183
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %6, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %7, align 4
  br label %245

214:                                              ; preds = %242, %239, %218, %207, %200, %191, %189
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %6, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %245

218:                                              ; preds = %209, %195
  %219 = getelementptr inbounds %"class.openset::db::IndexBits", ptr %3, i32 0, i32 1
  %220 = load i32, ptr %219, align 8, !tbaa !29
  %221 = load ptr, ptr %24, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %221, i32 0, i32 1
  store i32 %220, ptr %222, align 1, !tbaa !21
  %223 = load i64, ptr %19, align 8, !tbaa !32
  %224 = trunc i64 %223 to i32
  %225 = load ptr, ptr %24, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %225, i32 0, i32 4
  store i32 %224, ptr %226, align 1, !tbaa !77
  %227 = load i64, ptr %20, align 8, !tbaa !32
  %228 = trunc i64 %227 to i32
  %229 = load ptr, ptr %24, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %229, i32 0, i32 5
  store i32 %228, ptr %230, align 1, !tbaa !25
  %231 = load i32, ptr %21, align 4, !tbaa !78
  %232 = load ptr, ptr %24, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %232, i32 0, i32 2
  store i32 %231, ptr %233, align 1, !tbaa !23
  %234 = load i32, ptr %22, align 4, !tbaa !78
  %235 = load ptr, ptr %24, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.openset::db::Attr_s", ptr %235, i32 0, i32 3
  store i32 %234, ptr %236, align 1, !tbaa !24
  %237 = load ptr, ptr %24, align 8, !tbaa !5
  %238 = invoke noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %239 unwind label %214

239:                                              ; preds = %218
  %240 = getelementptr inbounds %"struct.robin_hood::pair", ptr %238, i32 0, i32 1
  store ptr %237, ptr %240, align 8, !tbaa !19
  %241 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %242 unwind label %214

242:                                              ; preds = %239
  %243 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %241, ptr noundef %243)
          to label %244 unwind label %214

244:                                              ; preds = %242
  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 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %246

245:                                              ; preds = %214, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %255

246:                                              ; preds = %244, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  store i32 0, ptr %9, align 4
  br label %247

247:                                              ; preds = %246, %88
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #7
  %248 = load i32, ptr %9, align 4
  switch i32 %248, label %250 [
    i32 0, label %249
  ]

249:                                              ; preds = %247
  store i32 0, ptr %9, align 4
  br label %250

250:                                              ; preds = %249, %247
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  %251 = load i32, ptr %9, align 4
  switch i32 %251, label %273 [
    i32 0, label %252
    i32 3, label %253
  ]

252:                                              ; preds = %250
  br label %253

253:                                              ; preds = %252, %250
  %254 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(16) %5) #7
  br label %41

255:                                              ; preds = %245, %149, %133
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %256

256:                                              ; preds = %255, %97, %93
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #7
  br label %257

257:                                              ; preds = %256, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %258

258:                                              ; preds = %257, %48
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #7
  br label %259

259:                                              ; preds = %258, %44
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  br label %267

260:                                              ; preds = %43
  %261 = getelementptr inbounds %"class.openset::db::Attributes", ptr %25, i32 0, i32 1
  invoke void @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %261)
          to label %262 unwind label %263

262:                                              ; preds = %260
  call void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  ret void

263:                                              ; preds = %260
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %6, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %7, align 4
  br label %267

267:                                              ; preds = %263, %259
  call void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #7
  br label %268

268:                                              ; preds = %267
  %269 = load ptr, ptr %6, align 8
  %270 = load i32, ptr %7, align 4
  %271 = insertvalue { ptr, i32 } poison, ptr %269, 0
  %272 = insertvalue { ptr, i32 } %271, i32 %270, 1
  resume { ptr, i32 } %272

273:                                              ; preds = %250
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

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

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

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

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

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

declare void @_ZN7openset2db9IndexBits6bitSetEl(ptr noundef nonnull align 8 dereferenceable(13), i64 noundef) #2

declare void @_ZN7openset2db9IndexBits8bitClearEl(ptr noundef nonnull align 8 dereferenceable(13), i64 noundef) #2

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

declare noundef i64 @_ZNK7openset2db9IndexBits10populationEi(ptr noundef nonnull align 8 dereferenceable(13), i32 noundef) #2

declare noundef ptr @_ZN7openset2db9IndexBits5storeERlS2_RiS3_i(ptr noundef nonnull align 8 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #2

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

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

; Function Attrs: nounwind
declare void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13)) unnamed_addr #6

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #4 = { 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 #5 = { 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 #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !12, i64 0}
!10 = !{!"_ZTSN10robin_hood4pairIN7openset2db10attr_key_sESt6vectorINS2_14Attr_changes_sESaIS5_EEEE", !11, i64 0, !14, i64 16}
!11 = !{!"_ZTSN7openset2db10attr_key_sE", !12, i64 0, !13, i64 4}
!12 = !{!"int", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!10, !13, i64 4}
!19 = !{!20, !6, i64 16}
!20 = !{!"_ZTSN10robin_hood4pairIN7openset2db10attr_key_sEPNS2_6Attr_sEEE", !11, i64 0, !6, i64 16}
!21 = !{!22, !12, i64 8}
!22 = !{!"_ZTSN7openset2db6Attr_sE", !6, i64 0, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !7, i64 28}
!23 = !{!22, !12, i64 12}
!24 = !{!22, !12, i64 16}
!25 = !{!22, !12, i64 24}
!26 = !{!27, !12, i64 4}
!27 = !{!"_ZTSN7openset2db14Attr_changes_sE", !12, i64 0, !12, i64 4}
!28 = !{!27, !12, i64 0}
!29 = !{!30, !12, i64 8}
!30 = !{!"_ZTSN7openset2db9IndexBitsE", !6, i64 0, !12, i64 8, !31, i64 12}
!31 = !{!"bool", !7, i64 0}
!32 = !{!13, !13, i64 0}
!33 = !{!34, !6, i64 96}
!34 = !{!"_ZTSN7openset2db10AttributesE", !35, i64 0, !36, i64 48, !6, i64 96, !6, i64 104, !6, i64 112, !12, i64 120}
!35 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EEE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !12, i64 40, !12, i64 44}
!36 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EEE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !12, i64 40, !12, i64 44}
!37 = !{!38, !12, i64 197584}
!38 = !{!"_ZTSN7openset2db5TableE", !39, i64 0, !41, i64 32, !6, i64 40, !41, i64 48, !44, i64 56, !49, i64 112, !41, i64 168, !51, i64 176, !53, i64 264, !55, i64 196984, !57, i64 197048, !62, i64 197168, !64, i64 197224, !66, i64 197280, !69, i64 197392, !71, i64 197448, !13, i64 197528, !31, i64 197536, !31, i64 197537, !12, i64 197540, !13, i64 197544, !13, i64 197552, !13, i64 197560, !13, i64 197568, !13, i64 197576, !12, i64 197584, !12, i64 197588, !13, i64 197592}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !40, i64 0, !13, i64 8, !7, i64 16}
!40 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!41 = !{!"_ZTS15CriticalSection", !42, i64 0}
!42 = !{!"_ZTSSt6atomicIbE", !43, i64 0}
!43 = !{!"_ZTSSt13__atomic_baseIbE", !31, i64 0}
!44 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db12SegmentTtl_sESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S8_EEE", !45, i64 0}
!45 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7openset2db12SegmentTtl_sEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!46 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!47 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !48, i64 0, !13, i64 8}
!48 = !{!"float", !7, i64 0}
!49 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db16SegmentRefresh_sESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S8_EEE", !50, i64 0}
!50 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7openset2db16SegmentRefresh_sEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!51 = !{!"_ZTS4cvar", !52, i64 0, !7, i64 8, !7, i64 16, !39, i64 24, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80}
!52 = !{!"_ZTSN4cvar9valueTypeE", !7, i64 0}
!53 = !{!"_ZTSN7openset2db10PropertiesE", !41, i64 0, !7, i64 8, !54, i64 196616, !54, i64 196664, !12, i64 196712}
!54 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN7openset2db10Properties10Property_sENS_4hashIS7_EESt8equal_toIS7_EEE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !12, i64 40, !12, i64 44}
!55 = !{!"_ZTSN7openset2db15PropertyMappingE", !41, i64 0, !6, i64 8, !56, i64 16}
!56 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80ElPN7openset2db13PropertyMap_sENS_4hashIlEESt8equal_toIlEEE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !12, i64 40, !12, i64 44}
!57 = !{!"_ZTSN7openset6revent13MessageBrokerE", !41, i64 0, !58, i64 8, !60, i64 64}
!58 = !{!"_ZTSSt13unordered_mapIlS_IlSt5queueIN7openset6revent16TriggerMessage_sESt5dequeIS3_SaIS3_EEESt4hashIlESt8equal_toIlESaISt4pairIKlS7_EEES9_SB_SaISC_ISD_SG_EEE", !59, i64 0}
!59 = !{!"_ZTSSt10_HashtableIlSt4pairIKlSt13unordered_mapIlSt5queueIN7openset6revent16TriggerMessage_sESt5dequeIS6_SaIS6_EEESt4hashIlESt8equal_toIlESaIS0_IS1_SA_EEEESaISI_ENSt8__detail10_Select1stESE_SC_NSK_18_Mod_range_hashingENSK_20_Default_ranged_hashENSK_20_Prime_rehash_policyENSK_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!60 = !{!"_ZTSSt13unordered_mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EN7openset6revent8Broker_sESt4hashIS7_ESt8equal_toIS7_ESaIS0_IKS7_SA_EEE", !61, i64 0}
!61 = !{!"_ZTSSt10_HashtableISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES0_IKS7_N7openset6revent8Broker_sEESaISC_ENSt8__detail10_Select1stESt8equal_toIS7_ESt4hashIS7_ENSE_18_Mod_range_hashingENSE_20_Default_ranged_hashENSE_20_Prime_rehash_policyENSE_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!62 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !63, i64 0}
!63 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!64 = !{!"_ZTSSt13unordered_mapIliSt4hashIlESt8equal_toIlESaISt4pairIKliEEE", !65, i64 0}
!65 = !{!"_ZTSSt10_HashtableIlSt4pairIKliESaIS2_ENSt8__detail10_Select1stESt8equal_toIlESt4hashIlENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!66 = !{!"_ZTSN7openset2db13AttributeBlobE", !67, i64 0, !68, i64 48, !41, i64 104}
!67 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPcNS_4hashIS4_EESt8equal_toIS4_EEE", !6, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !12, i64 40, !12, i64 44}
!68 = !{!"_ZTS9HeapStack", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !6, i64 40, !6, i64 48}
!69 = !{!"_ZTSSt13unordered_mapIiPN7openset2db16TablePartitionedESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEE", !70, i64 0}
!70 = !{!"_ZTSSt10_HashtableIiSt4pairIKiPN7openset2db16TablePartitionedEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !13, i64 8, !46, i64 16, !13, i64 24, !47, i64 32, !6, i64 48}
!71 = !{!"_ZTSSt5queueIPN7openset2db16TablePartitionedESt5dequeIS3_SaIS3_EEE", !72, i64 0}
!72 = !{!"_ZTSSt5dequeIPN7openset2db16TablePartitionedESaIS3_EE", !73, i64 0}
!73 = !{!"_ZTSSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE", !74, i64 0}
!74 = !{!"_ZTSNSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE11_Deque_implE", !75, i64 0}
!75 = !{!"_ZTSNSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE16_Deque_impl_dataE", !6, i64 0, !13, i64 8, !76, i64 16, !76, i64 48}
!76 = !{!"_ZTSSt15_Deque_iteratorIPN7openset2db16TablePartitionedERS3_PS3_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!77 = !{!22, !12, i64 20}
!78 = !{!12, !12, 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.openset::db::IndexBits" = type <{ ptr, i32, i8, [3 x i8] }>
%"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter" = type { ptr, ptr }
%"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter" = type { ptr, ptr }
%"struct.openset::db::attr_key_s" = type <{ i32, i64 }>
%"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 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) #1

declare void @_ZN7openset2db9IndexBitsC1Ev(ptr noundef nonnull align 8 dereferenceable(13)) unnamed_addr #2

declare void @_ZN7openset2db9IndexBits5mountEPciiii(ptr noundef nonnull align 8 dereferenceable(13), ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv() local_unnamed_addr #4 align 2

declare void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4findERKS4_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(12)) local_unnamed_addr #4 align 2

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

declare noundef ptr @_ZN7PoolMem6getPtrEl(ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7openset2db10Attributes10clearDirtyEv(ptr noundef nonnull align 8 dereferenceable(124) %0) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.openset::db::IndexBits", align 8
  %3 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %4 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, std::vector<openset::db::Attr_changes_s>, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %5 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %6 = alloca %"struct.openset::db::attr_key_s", align 1
  %7 = alloca %"class.robin_hood::detail::unordered_map<true, 80, openset::db::attr_key_s, openset::db::Attr_s *, robin_hood::hash<openset::db::attr_key_s>, std::equal_to<openset::db::attr_key_s>>::Iter", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  call void @_ZN7openset2db9IndexBitsC1Ev(ptr noundef nonnull align 8 dereferenceable(13) %2)
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  %15 = call { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %14)
  %16 = extractvalue { ptr, ptr } %15, 0
  store ptr %16, ptr %3, align 8
  %17 = getelementptr inbounds i8, ptr %3, i64 8
  %18 = extractvalue { ptr, ptr } %15, 1
  store ptr %18, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  %19 = call { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %14)
  %20 = extractvalue { ptr, ptr } %19, 0
  store ptr %20, ptr %4, align 8
  %21 = getelementptr inbounds i8, ptr %4, i64 8
  %22 = extractvalue { ptr, ptr } %19, 1
  store ptr %22, ptr %21, align 8
  %23 = call noundef zeroext i1 @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEneILb0EEEbRKNSE_IXT_EEE(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  br i1 %23, label %.lr.ph49, label %._crit_edge50

.lr.ph49:                                         ; preds = %1
  %24 = getelementptr inbounds i8, ptr %5, i64 8
  %25 = getelementptr inbounds i8, ptr %7, i64 8
  %26 = getelementptr inbounds i8, ptr %2, i64 8
  %27 = getelementptr inbounds i8, ptr %0, i64 96
  br label %28

._crit_edge50:                                    ; preds = %129, %1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  invoke void @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %14)
          to label %133 unwind label %134

28:                                               ; preds = %.lr.ph49, %129
  %29 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #7
  %30 = load i32, ptr %29, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %29, i64 4
  %32 = load i64, ptr %31, align 4, !tbaa !17
  call void @_ZN7openset2db10attr_key_sC2Eil(ptr noundef nonnull align 1 dereferenceable(12) %6, i32 noundef %30, i64 noundef %32)
  %33 = invoke { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4findERKS4_(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 1 dereferenceable(12) %6)
          to label %34 unwind label %45

34:                                               ; preds = %28
  %35 = extractvalue { ptr, ptr } %33, 0
  store ptr %35, ptr %5, align 8
  %36 = extractvalue { ptr, ptr } %33, 1
  store ptr %36, ptr %24, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  %37 = call { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %0)
  %38 = extractvalue { ptr, ptr } %37, 0
  store ptr %38, ptr %7, align 8
  %39 = extractvalue { ptr, ptr } %37, 1
  store ptr %39, ptr %25, align 8
  %40 = call noundef zeroext i1 @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEeqILb0EEEbRKNSC_IXT_EEE(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  br i1 %40, label %.critedge, label %41

41:                                               ; preds = %34
  %42 = call noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %43 = getelementptr inbounds i8, ptr %42, i64 16
  %44 = load ptr, ptr %43, align 8, !tbaa !18
  %.not = icmp eq ptr %44, null
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br i1 %.not, label %129, label %47

.critedge:                                        ; preds = %34
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %129

45:                                               ; preds = %28
  %46 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #7
  br label %132

47:                                               ; preds = %41
  %48 = call noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %49 = getelementptr inbounds i8, ptr %48, i64 16
  %50 = load ptr, ptr %49, align 8, !tbaa !18
  %51 = getelementptr inbounds i8, ptr %50, i64 28
  %52 = getelementptr inbounds i8, ptr %50, i64 8
  %53 = load i32, ptr %52, align 1, !tbaa !20
  %54 = getelementptr inbounds i8, ptr %50, i64 12
  %55 = load i32, ptr %54, align 1, !tbaa !22
  %56 = getelementptr inbounds i8, ptr %50, i64 16
  %57 = load i32, ptr %56, align 1, !tbaa !23
  %58 = getelementptr inbounds i8, ptr %50, i64 24
  %59 = load i32, ptr %58, align 1, !tbaa !24
  invoke void @_ZN7openset2db9IndexBits5mountEPciiii(ptr noundef nonnull align 8 dereferenceable(13) %2, ptr noundef nonnull %51, i32 noundef %53, i32 noundef %55, i32 noundef %57, i32 noundef %59)
          to label %60 unwind label %68

60:                                               ; preds = %47
  %61 = getelementptr inbounds i8, ptr %29, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %62 = call ptr @_ZNSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #7
  store ptr %62, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %63 = call ptr @_ZNSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #7
  store ptr %63, ptr %9, align 8
  %64 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br i1 %64, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %79, %60
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  %65 = load i32, ptr %26, align 8, !tbaa !25
  %66 = shl nsw i32 %65, 6
  %67 = invoke noundef i64 @_ZNK7openset2db9IndexBits10populationEi(ptr noundef nonnull align 8 dereferenceable(13) %2, i32 noundef %66)
          to label %82 unwind label %68

68:                                               ; preds = %88, %86, %83, %._crit_edge, %47
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %132

.lr.ph:                                           ; preds = %60, %79
  %70 = call noundef nonnull align 1 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  %71 = getelementptr inbounds i8, ptr %70, i64 4
  %72 = load i32, ptr %71, align 1, !tbaa !28
  %.not43 = icmp eq i32 %72, 0
  %73 = load i32, ptr %70, align 1, !tbaa !30
  %74 = sext i32 %73 to i64
  br i1 %.not43, label %78, label %75

75:                                               ; preds = %.lr.ph
  invoke void @_ZN7openset2db9IndexBits6bitSetEl(ptr noundef nonnull align 8 dereferenceable(13) %2, i64 noundef %74)
          to label %79 unwind label %76

76:                                               ; preds = %78, %75
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %132

78:                                               ; preds = %.lr.ph
  invoke void @_ZN7openset2db9IndexBits8bitClearEl(ptr noundef nonnull align 8 dereferenceable(13) %2, i64 noundef %74)
          to label %79 unwind label %76

79:                                               ; preds = %78, %75
  %80 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #7
  %81 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7openset2db14Attr_changes_sESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  br i1 %81, label %.lr.ph, label %._crit_edge

82:                                               ; preds = %._crit_edge
  %.not40 = icmp eq i64 %67, 0
  br i1 %.not40, label %83, label %89

83:                                               ; preds = %82
  %84 = load i32, ptr %29, align 8, !tbaa !5
  %85 = load i64, ptr %31, align 4, !tbaa !17
  invoke void @_ZN7openset2db10Attributes4dropEil(ptr noundef nonnull align 8 dereferenceable(124) %0, i32 noundef %84, i64 noundef %85)
          to label %86 unwind label %68

86:                                               ; preds = %83
  %87 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %88 unwind label %68

88:                                               ; preds = %86
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %87, ptr noundef %50)
          to label %129 unwind label %68

89:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  store i64 0, ptr %10, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  %90 = load ptr, ptr %27, align 8, !tbaa !32
  %91 = getelementptr inbounds i8, ptr %90, i64 197584
  %92 = load i32, ptr %91, align 8, !tbaa !36
  %93 = invoke noundef ptr @_ZN7openset2db9IndexBits5storeERlS2_RiS3_i(ptr noundef nonnull align 8 dereferenceable(13) %2, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(4) %12, ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef %92)
          to label %94 unwind label %106

94:                                               ; preds = %89
  %95 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %96 unwind label %108

96:                                               ; preds = %94
  %97 = load i64, ptr %10, align 8, !tbaa !31
  %98 = add i64 %97, 29
  %99 = invoke noundef ptr @_ZN7PoolMem6getPtrEl(ptr noundef nonnull align 8 dereferenceable(48) %95, i64 noundef %98)
          to label %100 unwind label %108

100:                                              ; preds = %96
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(29) %99, ptr noundef nonnull align 1 dereferenceable(29) %50, i64 29, i1 false)
  %.not41 = icmp eq ptr %93, null
  br i1 %.not41, label %110, label %101

101:                                              ; preds = %100
  %102 = getelementptr inbounds i8, ptr %99, i64 28
  %103 = load i64, ptr %10, align 8, !tbaa !31
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %102, ptr nonnull align 1 %93, i64 %103, i1 false)
  %104 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %105 unwind label %108

105:                                              ; preds = %101
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %104, ptr noundef nonnull %93)
          to label %110 unwind label %108

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

108:                                              ; preds = %126, %110, %105, %101, %96, %94
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %128

110:                                              ; preds = %105, %100
  %111 = load i32, ptr %26, align 8, !tbaa !25
  %112 = getelementptr inbounds i8, ptr %99, i64 8
  store i32 %111, ptr %112, align 1, !tbaa !20
  %113 = load i64, ptr %10, align 8, !tbaa !31
  %114 = trunc i64 %113 to i32
  %115 = getelementptr inbounds i8, ptr %99, i64 20
  store i32 %114, ptr %115, align 1, !tbaa !76
  %116 = load i64, ptr %11, align 8, !tbaa !31
  %117 = trunc i64 %116 to i32
  %118 = getelementptr inbounds i8, ptr %99, i64 24
  store i32 %117, ptr %118, align 1, !tbaa !24
  %119 = load i32, ptr %12, align 4, !tbaa !77
  %120 = getelementptr inbounds i8, ptr %99, i64 12
  store i32 %119, ptr %120, align 1, !tbaa !22
  %121 = load i32, ptr %13, align 4, !tbaa !77
  %122 = getelementptr inbounds i8, ptr %99, i64 16
  store i32 %121, ptr %122, align 1, !tbaa !23
  %123 = call noundef ptr @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEptEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %124 = getelementptr inbounds i8, ptr %123, i64 16
  store ptr %99, ptr %124, align 8, !tbaa !18
  %125 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN7PoolMem7getPoolEv()
          to label %126 unwind label %108

126:                                              ; preds = %110
  invoke void @_ZN7PoolMem7freePtrEPv(ptr noundef nonnull align 8 dereferenceable(48) %125, ptr noundef nonnull %50)
          to label %127 unwind label %108

127:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %129

128:                                              ; preds = %108, %106
  %.pn = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %132

129:                                              ; preds = %127, %88, %41, %.critedge
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  %130 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEppEv(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  %131 = call noundef zeroext i1 @_ZNK10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE4IterILb0EEneILb0EEEbRKNSE_IXT_EEE(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  br i1 %131, label %28, label %._crit_edge50

132:                                              ; preds = %68, %76, %128, %45
  %.pn44.pn = phi { ptr, i32 } [ %46, %45 ], [ %77, %76 ], [ %.pn, %128 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  br label %136

133:                                              ; preds = %._crit_edge50
  call void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  ret void

134:                                              ; preds = %._crit_edge50
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %136

136:                                              ; preds = %134, %132
  %.pn44.pn.pn = phi { ptr, i32 } [ %.pn44.pn, %132 ], [ %135, %134 ]
  call void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn44.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

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

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

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

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

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

declare void @_ZN7openset2db9IndexBits6bitSetEl(ptr noundef nonnull align 8 dereferenceable(13), i64 noundef) local_unnamed_addr #2

declare void @_ZN7openset2db9IndexBits8bitClearEl(ptr noundef nonnull align 8 dereferenceable(13), i64 noundef) local_unnamed_addr #2

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

declare noundef i64 @_ZNK7openset2db9IndexBits10populationEi(ptr noundef nonnull align 8 dereferenceable(13), i32 noundef) local_unnamed_addr #2

declare noundef ptr @_ZN7openset2db9IndexBits5storeERlS2_RiS3_i(ptr noundef nonnull align 8 dereferenceable(13), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind
declare void @_ZN7openset2db9IndexBitsD1Ev(ptr noundef nonnull align 8 dereferenceable(13)) unnamed_addr #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #4 = { 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 #5 = { 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 #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !8, i64 0}
!6 = !{!"_ZTSN10robin_hood4pairIN7openset2db10attr_key_sESt6vectorINS2_14Attr_changes_sESaIS5_EEEE", !7, i64 0, !12, i64 16}
!7 = !{!"_ZTSN7openset2db10attr_key_sE", !8, i64 0, !11, i64 4}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"long", !9, i64 0}
!12 = !{!"_ZTSSt6vectorIN7openset2db14Attr_changes_sESaIS2_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN7openset2db14Attr_changes_sESaIS2_EE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !9, i64 0}
!17 = !{!6, !11, i64 4}
!18 = !{!19, !16, i64 16}
!19 = !{!"_ZTSN10robin_hood4pairIN7openset2db10attr_key_sEPNS2_6Attr_sEEE", !7, i64 0, !16, i64 16}
!20 = !{!21, !8, i64 8}
!21 = !{!"_ZTSN7openset2db6Attr_sE", !16, i64 0, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24, !9, i64 28}
!22 = !{!21, !8, i64 12}
!23 = !{!21, !8, i64 16}
!24 = !{!21, !8, i64 24}
!25 = !{!26, !8, i64 8}
!26 = !{!"_ZTSN7openset2db9IndexBitsE", !16, i64 0, !8, i64 8, !27, i64 12}
!27 = !{!"bool", !9, i64 0}
!28 = !{!29, !8, i64 4}
!29 = !{!"_ZTSN7openset2db14Attr_changes_sE", !8, i64 0, !8, i64 4}
!30 = !{!29, !8, i64 0}
!31 = !{!11, !11, i64 0}
!32 = !{!33, !16, i64 96}
!33 = !{!"_ZTSN7openset2db10AttributesE", !34, i64 0, !35, i64 48, !16, i64 96, !16, i64 104, !16, i64 112, !8, i64 120}
!34 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPNS3_6Attr_sENS_4hashIS4_EESt8equal_toIS4_EEE", !16, i64 0, !16, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 44}
!35 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sESt6vectorINS3_14Attr_changes_sESaIS6_EENS_4hashIS4_EESt8equal_toIS4_EEE", !16, i64 0, !16, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 44}
!36 = !{!37, !8, i64 197584}
!37 = !{!"_ZTSN7openset2db5TableE", !38, i64 0, !40, i64 32, !16, i64 40, !40, i64 48, !43, i64 56, !48, i64 112, !40, i64 168, !50, i64 176, !52, i64 264, !54, i64 196984, !56, i64 197048, !61, i64 197168, !63, i64 197224, !65, i64 197280, !68, i64 197392, !70, i64 197448, !11, i64 197528, !27, i64 197536, !27, i64 197537, !8, i64 197540, !11, i64 197544, !11, i64 197552, !11, i64 197560, !11, i64 197568, !11, i64 197576, !8, i64 197584, !8, i64 197588, !11, i64 197592}
!38 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !39, i64 0, !11, i64 8, !9, i64 16}
!39 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !16, i64 0}
!40 = !{!"_ZTS15CriticalSection", !41, i64 0}
!41 = !{!"_ZTSSt6atomicIbE", !42, i64 0}
!42 = !{!"_ZTSSt13__atomic_baseIbE", !27, i64 0}
!43 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db12SegmentTtl_sESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S8_EEE", !44, i64 0}
!44 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7openset2db12SegmentTtl_sEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!45 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!46 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !47, i64 0, !11, i64 8}
!47 = !{!"float", !9, i64 0}
!48 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN7openset2db16SegmentRefresh_sESt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S8_EEE", !49, i64 0}
!49 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N7openset2db16SegmentRefresh_sEESaISB_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!50 = !{!"_ZTS4cvar", !51, i64 0, !9, i64 8, !9, i64 16, !38, i64 24, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80}
!51 = !{!"_ZTSN4cvar9valueTypeE", !9, i64 0}
!52 = !{!"_ZTSN7openset2db10PropertiesE", !40, i64 0, !9, i64 8, !53, i64 196616, !53, i64 196664, !8, i64 196712}
!53 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN7openset2db10Properties10Property_sENS_4hashIS7_EESt8equal_toIS7_EEE", !16, i64 0, !16, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 44}
!54 = !{!"_ZTSN7openset2db15PropertyMappingE", !40, i64 0, !16, i64 8, !55, i64 16}
!55 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80ElPN7openset2db13PropertyMap_sENS_4hashIlEESt8equal_toIlEEE", !16, i64 0, !16, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 44}
!56 = !{!"_ZTSN7openset6revent13MessageBrokerE", !40, i64 0, !57, i64 8, !59, i64 64}
!57 = !{!"_ZTSSt13unordered_mapIlS_IlSt5queueIN7openset6revent16TriggerMessage_sESt5dequeIS3_SaIS3_EEESt4hashIlESt8equal_toIlESaISt4pairIKlS7_EEES9_SB_SaISC_ISD_SG_EEE", !58, i64 0}
!58 = !{!"_ZTSSt10_HashtableIlSt4pairIKlSt13unordered_mapIlSt5queueIN7openset6revent16TriggerMessage_sESt5dequeIS6_SaIS6_EEESt4hashIlESt8equal_toIlESaIS0_IS1_SA_EEEESaISI_ENSt8__detail10_Select1stESE_SC_NSK_18_Mod_range_hashingENSK_20_Default_ranged_hashENSK_20_Prime_rehash_policyENSK_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!59 = !{!"_ZTSSt13unordered_mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_EN7openset6revent8Broker_sESt4hashIS7_ESt8equal_toIS7_ESaIS0_IKS7_SA_EEE", !60, i64 0}
!60 = !{!"_ZTSSt10_HashtableISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ES0_IKS7_N7openset6revent8Broker_sEESaISC_ENSt8__detail10_Select1stESt8equal_toIS7_ESt4hashIS7_ENSE_18_Mod_range_hashingENSE_20_Default_ranged_hashENSE_20_Prime_rehash_policyENSE_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!61 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_iEEE", !62, i64 0}
!62 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!63 = !{!"_ZTSSt13unordered_mapIliSt4hashIlESt8equal_toIlESaISt4pairIKliEEE", !64, i64 0}
!64 = !{!"_ZTSSt10_HashtableIlSt4pairIKliESaIS2_ENSt8__detail10_Select1stESt8equal_toIlESt4hashIlENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!65 = !{!"_ZTSN7openset2db13AttributeBlobE", !66, i64 0, !67, i64 48, !40, i64 104}
!66 = !{!"_ZTSN10robin_hood6detail13unordered_mapILb1ELm80EN7openset2db10attr_key_sEPcNS_4hashIS4_EESt8equal_toIS4_EEE", !16, i64 0, !16, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !8, i64 40, !8, i64 44}
!67 = !{!"_ZTS9HeapStack", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !16, i64 40, !16, i64 48}
!68 = !{!"_ZTSSt13unordered_mapIiPN7openset2db16TablePartitionedESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEE", !69, i64 0}
!69 = !{!"_ZTSSt10_HashtableIiSt4pairIKiPN7openset2db16TablePartitionedEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE", !16, i64 0, !11, i64 8, !45, i64 16, !11, i64 24, !46, i64 32, !16, i64 48}
!70 = !{!"_ZTSSt5queueIPN7openset2db16TablePartitionedESt5dequeIS3_SaIS3_EEE", !71, i64 0}
!71 = !{!"_ZTSSt5dequeIPN7openset2db16TablePartitionedESaIS3_EE", !72, i64 0}
!72 = !{!"_ZTSSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE", !73, i64 0}
!73 = !{!"_ZTSNSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE11_Deque_implE", !74, i64 0}
!74 = !{!"_ZTSNSt11_Deque_baseIPN7openset2db16TablePartitionedESaIS3_EE16_Deque_impl_dataE", !16, i64 0, !11, i64 8, !75, i64 16, !75, i64 48}
!75 = !{!"_ZTSSt15_Deque_iteratorIPN7openset2db16TablePartitionedERS3_PS3_E", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24}
!76 = !{!21, !8, i64 20}
!77 = !{!8, !8, i64 0}


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