; LLVM IR from yangfengzzz/DigitalVox4 :: editor (imgui_node_editor)

; 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.__gnu_cxx::__normal_iterator.86" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.139" = type { ptr }
%class.anon.150 = type { i8 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.152 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.69" = type { ptr }
%class.anon.153 = type { ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vox::NodeEditor::Detail::ObjectWrapper.70" = type { %"struct.vox::NodeEditor::NodeId", ptr }
%"struct.vox::NodeEditor::NodeId" = type { %"struct.vox::NodeEditor::Details::SafePointerType.6" }
%"struct.vox::NodeEditor::Details::SafePointerType.6" = type { %"struct.vox::NodeEditor::Details::SafeType.7" }
%"struct.vox::NodeEditor::Details::SafeType.7" = type { i64 }
%"class.__gnu_cxx::__normal_iterator.143" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%class.anon.155 = type { ptr }
%"struct.vox::NodeEditor::Detail::EditorAction" = type { ptr, ptr }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [641 x i32], [512 x i8], %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [20 x float], i32, i32, [641 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x float], [20 x float], [20 x float], float, i8, i8, i8, i16, %struct.ImVector.0 }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVec2 = type { float, float }
%struct.ImVector.0 = type { i32, i32, ptr }
%"struct.vox::NodeEditor::Detail::ShortcutAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, i32, %"class.std::vector.28" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Object *, std::allocator<vox::NodeEditor::Detail::Object *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Object *, std::allocator<vox::NodeEditor::Detail::Object *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Object *, std::allocator<vox::NodeEditor::Detail::Object *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Object *, std::allocator<vox::NodeEditor::Detail::Object *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vox::NodeEditor::Detail::Control" = type <{ ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, [4 x i8] }>

; 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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #3 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(14080) ptr @_ZN5ImGui5GetIOEv() #5

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext16FindLinksForNodeENS0_6NodeIdERSt6vectorIPNS1_4LinkESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(2040), i64, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #3 align 2

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef, i1 noundef zeroext) #5

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr, ptr) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr, ptr) #6

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3vox10NodeEditor6Detail14ShortcutAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(132) %1) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %11 = alloca %"class.std::vector.62", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.139", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.139", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %33 = alloca i32, align 4
  %34 = alloca i8, align 1
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %37 = alloca %class.anon.150, align 1
  %38 = alloca %"class.std::vector.13", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %41 = alloca %class.anon.152, align 8
  %42 = alloca %class.anon.152, align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %45 = alloca %class.anon.153, align 8
  %46 = alloca %"class.std::vector.87", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %50 = alloca %"struct.vox::NodeEditor::Detail::ObjectWrapper.70", align 8
  %51 = alloca %"struct.vox::NodeEditor::NodeId", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %65 = alloca %class.anon.155, align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %74 = load ptr, ptr %4, align 8
  %75 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorAction", ptr %74, i32 0, i32 1
  %76 = load ptr, ptr %75, align 8, !tbaa !9
  %77 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(2040) %76)
  br i1 %77, label %78, label %82

78:                                               ; preds = %2
  %79 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorAction", ptr %74, i32 0, i32 1
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext19AreShortcutsEnabledEv(ptr noundef nonnull align 8 dereferenceable(2040) %80)
  br i1 %81, label %83, label %82

82:                                               ; preds = %78, %2
  store i32 0, ptr %3, align 4
  br label %532

83:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 0, ptr %6, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %84 = call noundef nonnull align 8 dereferenceable(14080) ptr @_ZN5ImGui5GetIOEv()
  store ptr %84, ptr %7, align 8, !tbaa !5
  %85 = load ptr, ptr %7, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.ImGuiIO, ptr %85, i32 0, i32 56
  %87 = load i8, ptr %86, align 4, !tbaa !13, !range !21, !noundef !22
  %88 = trunc i8 %87 to i1
  br i1 %88, label %89, label %103

89:                                               ; preds = %83
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ImGuiIO, ptr %90, i32 0, i32 57
  %92 = load i8, ptr %91, align 1, !tbaa !23, !range !21, !noundef !22
  %93 = trunc i8 %92 to i1
  br i1 %93, label %103, label %94

94:                                               ; preds = %89
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.ImGuiIO, ptr %95, i32 0, i32 58
  %97 = load i8, ptr %96, align 2, !tbaa !24, !range !21, !noundef !22
  %98 = trunc i8 %97 to i1
  br i1 %98, label %103, label %99

99:                                               ; preds = %94
  %100 = call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 569)
  %101 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %100, i1 noundef zeroext true)
  br i1 %101, label %102, label %103

102:                                              ; preds = %99
  store i32 1, ptr %6, align 4, !tbaa !11
  br label %103

103:                                              ; preds = %102, %99, %94, %89, %83
  %104 = load ptr, ptr %7, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.ImGuiIO, ptr %104, i32 0, i32 56
  %106 = load i8, ptr %105, align 4, !tbaa !13, !range !21, !noundef !22
  %107 = trunc i8 %106 to i1
  br i1 %107, label %108, label %122

108:                                              ; preds = %103
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.ImGuiIO, ptr %109, i32 0, i32 57
  %111 = load i8, ptr %110, align 1, !tbaa !23, !range !21, !noundef !22
  %112 = trunc i8 %111 to i1
  br i1 %112, label %122, label %113

113:                                              ; preds = %108
  %114 = load ptr, ptr %7, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.ImGuiIO, ptr %114, i32 0, i32 58
  %116 = load i8, ptr %115, align 2, !tbaa !24, !range !21, !noundef !22
  %117 = trunc i8 %116 to i1
  br i1 %117, label %122, label %118

118:                                              ; preds = %113
  %119 = call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 548)
  %120 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %119, i1 noundef zeroext true)
  br i1 %120, label %121, label %122

121:                                              ; preds = %118
  store i32 2, ptr %6, align 4, !tbaa !11
  br label %122

122:                                              ; preds = %121, %118, %113, %108, %103
  %123 = load ptr, ptr %7, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.ImGuiIO, ptr %123, i32 0, i32 56
  %125 = load i8, ptr %124, align 4, !tbaa !13, !range !21, !noundef !22
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %141

127:                                              ; preds = %122
  %128 = load ptr, ptr %7, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ImGuiIO, ptr %128, i32 0, i32 57
  %130 = load i8, ptr %129, align 1, !tbaa !23, !range !21, !noundef !22
  %131 = trunc i8 %130 to i1
  br i1 %131, label %141, label %132

132:                                              ; preds = %127
  %133 = load ptr, ptr %7, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.ImGuiIO, ptr %133, i32 0, i32 58
  %135 = load i8, ptr %134, align 2, !tbaa !24, !range !21, !noundef !22
  %136 = trunc i8 %135 to i1
  br i1 %136, label %141, label %137

137:                                              ; preds = %132
  %138 = call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 567)
  %139 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %138, i1 noundef zeroext true)
  br i1 %139, label %140, label %141

140:                                              ; preds = %137
  store i32 3, ptr %6, align 4, !tbaa !11
  br label %141

141:                                              ; preds = %140, %137, %132, %127, %122
  %142 = load ptr, ptr %7, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.ImGuiIO, ptr %142, i32 0, i32 56
  %144 = load i8, ptr %143, align 4, !tbaa !13, !range !21, !noundef !22
  %145 = trunc i8 %144 to i1
  br i1 %145, label %146, label %160

146:                                              ; preds = %141
  %147 = load ptr, ptr %7, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.ImGuiIO, ptr %147, i32 0, i32 57
  %149 = load i8, ptr %148, align 1, !tbaa !23, !range !21, !noundef !22
  %150 = trunc i8 %149 to i1
  br i1 %150, label %160, label %151

151:                                              ; preds = %146
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImGuiIO, ptr %152, i32 0, i32 58
  %154 = load i8, ptr %153, align 2, !tbaa !24, !range !21, !noundef !22
  %155 = trunc i8 %154 to i1
  br i1 %155, label %160, label %156

156:                                              ; preds = %151
  %157 = call noundef i32 @_ZN3vox10NodeEditor6DetailL15GetKeyIndexForDEv()
  %158 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %157, i1 noundef zeroext true)
  br i1 %158, label %159, label %160

159:                                              ; preds = %156
  store i32 4, ptr %6, align 4, !tbaa !11
  br label %160

160:                                              ; preds = %159, %156, %151, %146, %141
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.ImGuiIO, ptr %161, i32 0, i32 56
  %163 = load i8, ptr %162, align 4, !tbaa !13, !range !21, !noundef !22
  %164 = trunc i8 %163 to i1
  br i1 %164, label %179, label %165

165:                                              ; preds = %160
  %166 = load ptr, ptr %7, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.ImGuiIO, ptr %166, i32 0, i32 57
  %168 = load i8, ptr %167, align 1, !tbaa !23, !range !21, !noundef !22
  %169 = trunc i8 %168 to i1
  br i1 %169, label %179, label %170

170:                                              ; preds = %165
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.ImGuiIO, ptr %171, i32 0, i32 58
  %173 = load i8, ptr %172, align 2, !tbaa !24, !range !21, !noundef !22
  %174 = trunc i8 %173 to i1
  br i1 %174, label %179, label %175

175:                                              ; preds = %170
  %176 = call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 524)
  %177 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %176, i1 noundef zeroext true)
  br i1 %177, label %178, label %179

178:                                              ; preds = %175
  store i32 5, ptr %6, align 4, !tbaa !11
  br label %179

179:                                              ; preds = %178, %175, %170, %165, %160
  %180 = load i32, ptr %6, align 4, !tbaa !11
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %530

182:                                              ; preds = %179
  %183 = load i32, ptr %6, align 4, !tbaa !11
  %184 = icmp ne i32 %183, 3
  br i1 %184, label %185, label %524

185:                                              ; preds = %182
  %186 = load i32, ptr %6, align 4, !tbaa !11
  %187 = icmp ne i32 %186, 5
  br i1 %187, label %188, label %524

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %189 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorAction", ptr %74, i32 0, i32 1
  %190 = load ptr, ptr %189, align 8, !tbaa !9
  %191 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3vox10NodeEditor6Detail13EditorContext18GetSelectedObjectsEv(ptr noundef nonnull align 8 dereferenceable(2040) %190)
  store ptr %191, ptr %8, align 8, !tbaa !5
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  %193 = call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %192) #7
  br i1 %193, label %312, label %194

194:                                              ; preds = %188
  %195 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  %197 = call ptr @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %196) #7
  %198 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %9, i32 0, i32 0
  store ptr %197, ptr %198, align 8
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = call ptr @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #7
  %201 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %10, i32 0, i32 0
  store ptr %200, ptr %201, align 8
  %202 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %9, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8
  %204 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %10, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6assignIN9__gnu_cxx17__normal_iteratorIPKS4_S6_EEvEEvT_SD_(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr %203, ptr %205)
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #7
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %206 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  store ptr %206, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %207 = load ptr, ptr %12, align 8, !tbaa !5
  %208 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %207) #7
  %209 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %13, i32 0, i32 0
  store ptr %208, ptr %209, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  %211 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #7
  %212 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %14, i32 0, i32 0
  store ptr %211, ptr %212, align 8
  br label %213

213:                                              ; preds = %236, %194
  %214 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #7
  br i1 %214, label %216, label %215

215:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %238

216:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  store ptr %218, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %219 = load ptr, ptr %15, align 8, !tbaa !5
  %220 = load ptr, ptr %219, align 8, !tbaa !25
  %221 = getelementptr inbounds ptr, ptr %220, i64 14
  %222 = load ptr, ptr %221, align 8
  %223 = invoke noundef ptr %222(ptr noundef nonnull align 8 dereferenceable(17) %219)
          to label %224 unwind label %231

224:                                              ; preds = %216
  store ptr %223, ptr %16, align 8, !tbaa !5
  %225 = load ptr, ptr %16, align 8, !tbaa !5
  %226 = invoke noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef %225)
          to label %227 unwind label %231

227:                                              ; preds = %224
  br i1 %226, label %228, label %235

228:                                              ; preds = %227
  %229 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128) %229, ptr noundef nonnull align 8 dereferenceable(24) %11, i1 noundef zeroext true)
          to label %230 unwind label %231

230:                                              ; preds = %228
  br label %235

231:                                              ; preds = %228, %224, %216
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %17, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %311

235:                                              ; preds = %230, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %236

236:                                              ; preds = %235
  %237 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  br label %213

238:                                              ; preds = %215
  %239 = call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br i1 %239, label %310, label %240

240:                                              ; preds = %238
  %241 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %242 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %243 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #7
  %244 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %20, i32 0, i32 0
  store ptr %243, ptr %244, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %245 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %246 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.139", ptr %21, i32 0, i32 0
  store ptr %245, ptr %246, align 8
  %247 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %248 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.139", ptr %22, i32 0, i32 0
  store ptr %247, ptr %248, align 8
  %249 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %19, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8
  %251 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.139", ptr %21, i32 0, i32 0
  %252 = load ptr, ptr %251, align 8
  %253 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.139", ptr %22, i32 0, i32 0
  %254 = load ptr, ptr %253, align 8
  %255 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPPNS2_4NodeES_ISB_SaISB_EEEEvEENS9_IPS4_S6_EENS9_IPKS4_S6_EET_SL_(ptr noundef nonnull align 8 dereferenceable(24) %241, ptr %250, ptr %252, ptr %254)
          to label %256 unwind label %293

256:                                              ; preds = %240
  %257 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %23, i32 0, i32 0
  store ptr %255, ptr %257, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  %258 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %259 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %258) #7
  %260 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %24, i32 0, i32 0
  store ptr %259, ptr %260, align 8
  %261 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %262 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %261) #7
  %263 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %25, i32 0, i32 0
  store ptr %262, ptr %263, align 8
  %264 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %24, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8
  %266 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %25, i32 0, i32 0
  %267 = load ptr, ptr %266, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr %265, ptr %267)
          to label %268 unwind label %297

268:                                              ; preds = %256
  %269 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %270 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %271 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #7
  %272 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %28, i32 0, i32 0
  store ptr %271, ptr %272, align 8
  %273 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %274 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %273) #7
  %275 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %29, i32 0, i32 0
  store ptr %274, ptr %275, align 8
  %276 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %28, i32 0, i32 0
  %277 = load ptr, ptr %276, align 8
  %278 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %29, i32 0, i32 0
  %279 = load ptr, ptr %278, align 8
  %280 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr %277, ptr %279)
          to label %281 unwind label %301

281:                                              ; preds = %268
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %27, i32 0, i32 0
  store ptr %280, ptr %282, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %283 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %284 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #7
  %285 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %31, i32 0, i32 0
  store ptr %284, ptr %285, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #7
  %286 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %26, i32 0, i32 0
  %287 = load ptr, ptr %286, align 8
  %288 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %30, i32 0, i32 0
  %289 = load ptr, ptr %288, align 8
  %290 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %269, ptr %287, ptr %289)
          to label %291 unwind label %305

291:                                              ; preds = %281
  %292 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %32, i32 0, i32 0
  store ptr %290, ptr %292, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %310

293:                                              ; preds = %240
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %17, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %311

297:                                              ; preds = %256
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %17, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %18, align 4
  br label %311

301:                                              ; preds = %268
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %17, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %18, align 4
  br label %309

305:                                              ; preds = %281
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %17, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %309

309:                                              ; preds = %305, %301
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %311

310:                                              ; preds = %291, %238
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  br label %339

311:                                              ; preds = %309, %297, %293, %231
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  br label %523

312:                                              ; preds = %188
  %313 = load ptr, ptr %5, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %313, i32 0, i32 0
  %315 = load ptr, ptr %314, align 8, !tbaa !27
  %316 = icmp ne ptr %315, null
  br i1 %316, label %317, label %338

317:                                              ; preds = %312
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %318, i32 0, i32 0
  %320 = load ptr, ptr %319, align 8, !tbaa !27
  %321 = load ptr, ptr %320, align 8, !tbaa !25
  %322 = getelementptr inbounds ptr, ptr %321, i64 10
  %323 = load ptr, ptr %322, align 8
  %324 = call noundef zeroext i1 %323(ptr noundef nonnull align 8 dereferenceable(17) %320)
  br i1 %324, label %325, label %338

325:                                              ; preds = %317
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %326, i32 0, i32 0
  %328 = load ptr, ptr %327, align 8, !tbaa !27
  %329 = load ptr, ptr %328, align 8, !tbaa !25
  %330 = getelementptr inbounds ptr, ptr %329, i64 14
  %331 = load ptr, ptr %330, align 8
  %332 = call noundef ptr %331(ptr noundef nonnull align 8 dereferenceable(17) %328)
  %333 = call noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef %332)
  br i1 %333, label %338, label %334

334:                                              ; preds = %325
  %335 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %336, i32 0, i32 0
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %335, ptr noundef nonnull align 8 dereferenceable(8) %337)
  br label %338

338:                                              ; preds = %334, %325, %317, %312
  br label %339

339:                                              ; preds = %338, %310
  %340 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %341 = call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %340) #7
  br i1 %341, label %342, label %343

342:                                              ; preds = %339
  store i32 0, ptr %3, align 4
  store i32 1, ptr %33, align 4
  br label %520

343:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  %344 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %345 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #7
  %346 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %35, i32 0, i32 0
  store ptr %345, ptr %346, align 8
  %347 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %348 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %347) #7
  %349 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %36, i32 0, i32 0
  store ptr %348, ptr %349, align 8
  %350 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %35, i32 0, i32 0
  %351 = load ptr, ptr %350, align 8
  %352 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %36, i32 0, i32 0
  %353 = load ptr, ptr %352, align 8
  %354 = call noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_0EbT_SH_T0_"(ptr %351, ptr %353)
  %355 = zext i1 %354 to i8
  store i8 %355, ptr %34, align 1, !tbaa !29
  %356 = load i8, ptr %34, align 1, !tbaa !29, !range !21, !noundef !22
  %357 = trunc i8 %356 to i1
  br i1 %357, label %519, label %358

358:                                              ; preds = %343
  %359 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %360 = call noundef i64 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %359) #7
  %361 = icmp ugt i64 %360, 1
  br i1 %361, label %362, label %519

362:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #7
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  %363 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %364 = call noundef i64 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %363) #7
  invoke void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %364)
          to label %365 unwind label %401

365:                                              ; preds = %362
  %366 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %367 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %366) #7
  %368 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %39, i32 0, i32 0
  store ptr %367, ptr %368, align 8
  %369 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %370 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %369) #7
  %371 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %40, i32 0, i32 0
  store ptr %370, ptr %371, align 8
  %372 = getelementptr inbounds %class.anon.152, ptr %41, i32 0, i32 0
  store ptr %38, ptr %372, align 8, !tbaa !5
  %373 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %39, i32 0, i32 0
  %374 = load ptr, ptr %373, align 8
  %375 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %40, i32 0, i32 0
  %376 = load ptr, ptr %375, align 8
  %377 = getelementptr inbounds %class.anon.152, ptr %41, i32 0, i32 0
  %378 = load ptr, ptr %377, align 8
  %379 = invoke ptr @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_1ET0_T_SI_SH_"(ptr %374, ptr %376, ptr %378)
          to label %380 unwind label %401

380:                                              ; preds = %365
  %381 = getelementptr inbounds %class.anon.152, ptr %42, i32 0, i32 0
  store ptr %379, ptr %381, align 8
  %382 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  %383 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %43, i32 0, i32 0
  store ptr %382, ptr %383, align 8
  %384 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  %385 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %44, i32 0, i32 0
  store ptr %384, ptr %385, align 8
  %386 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %43, i32 0, i32 0
  %387 = load ptr, ptr %386, align 8
  %388 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %44, i32 0, i32 0
  %389 = load ptr, ptr %388, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEEvT_SE_(ptr %387, ptr %389)
          to label %390 unwind label %401

390:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %391 = getelementptr inbounds %class.anon.153, ptr %45, i32 0, i32 0
  store ptr %38, ptr %391, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #7
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store ptr %38, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %392 = load ptr, ptr %47, align 8, !tbaa !5
  %393 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %392) #7
  %394 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %48, i32 0, i32 0
  store ptr %393, ptr %394, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %395 = load ptr, ptr %47, align 8, !tbaa !5
  %396 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %395) #7
  %397 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %49, i32 0, i32 0
  store ptr %396, ptr %397, align 8
  br label %398

398:                                              ; preds = %415, %390
  %399 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %399, label %405, label %400

400:                                              ; preds = %398
  store i32 4, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %421

401:                                              ; preds = %380, %365, %362
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %17, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %18, align 4
  br label %518

405:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  %406 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %50, ptr align 8 %406, i64 16, i1 false)
  %407 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorAction", ptr %74, i32 0, i32 1
  %408 = load ptr, ptr %407, align 8, !tbaa !9
  %409 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ObjectWrapper.70", ptr %50, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %51, ptr align 8 %409, i64 8, i1 false)
  %410 = getelementptr inbounds %"struct.vox::NodeEditor::NodeId", ptr %51, i32 0, i32 0
  %411 = getelementptr inbounds %"struct.vox::NodeEditor::Details::SafePointerType.6", ptr %410, i32 0, i32 0
  %412 = getelementptr inbounds %"struct.vox::NodeEditor::Details::SafeType.7", ptr %411, i32 0, i32 0
  %413 = load i64, ptr %412, align 8
  invoke void @_ZN3vox10NodeEditor6Detail13EditorContext16FindLinksForNodeENS0_6NodeIdERSt6vectorIPNS1_4LinkESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(2040) %408, i64 %413, ptr noundef nonnull align 8 dereferenceable(24) %46, i1 noundef zeroext true)
          to label %414 unwind label %417

414:                                              ; preds = %405
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %415

415:                                              ; preds = %414
  %416 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br label %398

417:                                              ; preds = %405
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %17, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %517

421:                                              ; preds = %400
  %422 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %423 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %52, i32 0, i32 0
  store ptr %422, ptr %423, align 8
  %424 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %425 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %53, i32 0, i32 0
  store ptr %424, ptr %425, align 8
  %426 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %52, i32 0, i32 0
  %427 = load ptr, ptr %426, align 8
  %428 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %53, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr %427, ptr %429)
          to label %430 unwind label %491

430:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %431 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %432 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %56, i32 0, i32 0
  store ptr %431, ptr %432, align 8
  %433 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %434 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %57, i32 0, i32 0
  store ptr %433, ptr %434, align 8
  %435 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %56, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8
  %437 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %57, i32 0, i32 0
  %438 = load ptr, ptr %437, align 8
  %439 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr %436, ptr %438)
          to label %440 unwind label %495

440:                                              ; preds = %430
  %441 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %55, i32 0, i32 0
  store ptr %439, ptr %441, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %442 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %443 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %59, i32 0, i32 0
  store ptr %442, ptr %443, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  %444 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %54, i32 0, i32 0
  %445 = load ptr, ptr %444, align 8
  %446 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %58, i32 0, i32 0
  %447 = load ptr, ptr %446, align 8
  %448 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr %445, ptr %447)
          to label %449 unwind label %499

449:                                              ; preds = %440
  %450 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %60, i32 0, i32 0
  store ptr %448, ptr %450, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %451 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %452 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %63, i32 0, i32 0
  store ptr %451, ptr %452, align 8
  %453 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %454 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %64, i32 0, i32 0
  store ptr %453, ptr %454, align 8
  %455 = getelementptr inbounds %class.anon.155, ptr %65, i32 0, i32 0
  store ptr %45, ptr %455, align 8, !tbaa !5
  %456 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %63, i32 0, i32 0
  %457 = load ptr, ptr %456, align 8
  %458 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %64, i32 0, i32 0
  %459 = load ptr, ptr %458, align 8
  %460 = getelementptr inbounds %class.anon.155, ptr %65, i32 0, i32 0
  %461 = load ptr, ptr %460, align 8
  %462 = invoke ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_3ET_SH_SH_T0_"(ptr %457, ptr %459, ptr %461)
          to label %463 unwind label %504

463:                                              ; preds = %449
  %464 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %62, i32 0, i32 0
  store ptr %462, ptr %464, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %465 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %466 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %67, i32 0, i32 0
  store ptr %465, ptr %466, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  %467 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %61, i32 0, i32 0
  %468 = load ptr, ptr %467, align 8
  %469 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %66, i32 0, i32 0
  %470 = load ptr, ptr %469, align 8
  %471 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr %468, ptr %470)
          to label %472 unwind label %508

472:                                              ; preds = %463
  %473 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %68, i32 0, i32 0
  store ptr %471, ptr %473, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %474 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %475 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  %476 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %475) #7
  %477 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %70, i32 0, i32 0
  store ptr %476, ptr %477, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #7
  %478 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %479 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %71, i32 0, i32 0
  store ptr %478, ptr %479, align 8
  %480 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  %481 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %72, i32 0, i32 0
  store ptr %480, ptr %481, align 8
  %482 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.86", ptr %69, i32 0, i32 0
  %483 = load ptr, ptr %482, align 8
  %484 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %71, i32 0, i32 0
  %485 = load ptr, ptr %484, align 8
  %486 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.143", ptr %72, i32 0, i32 0
  %487 = load ptr, ptr %486, align 8
  %488 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPPNS2_4LinkES_ISB_SaISB_EEEEvEENS9_IPS4_S6_EENS9_IPKS4_S6_EET_SL_(ptr noundef nonnull align 8 dereferenceable(24) %474, ptr %483, ptr %485, ptr %487)
          to label %489 unwind label %513

489:                                              ; preds = %472
  %490 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %73, i32 0, i32 0
  store ptr %488, ptr %490, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  br label %519

491:                                              ; preds = %421
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %17, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %18, align 4
  br label %517

495:                                              ; preds = %430
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %17, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %18, align 4
  br label %503

499:                                              ; preds = %440
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %17, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  br label %503

503:                                              ; preds = %499, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  br label %517

504:                                              ; preds = %449
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %17, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %18, align 4
  br label %512

508:                                              ; preds = %463
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %17, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %512

512:                                              ; preds = %508, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %517

513:                                              ; preds = %472
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %17, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  br label %517

517:                                              ; preds = %513, %512, %503, %491, %417
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %518

518:                                              ; preds = %517, %401
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  br label %523

519:                                              ; preds = %489, %358, %343
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  store i32 0, ptr %33, align 4
  br label %520

520:                                              ; preds = %519, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  %521 = load i32, ptr %33, align 4
  switch i32 %521, label %531 [
    i32 0, label %522
  ]

522:                                              ; preds = %520
  br label %526

523:                                              ; preds = %518, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %534

524:                                              ; preds = %185, %182
  %525 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 4
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %525, i64 noundef 0)
  br label %526

526:                                              ; preds = %524, %522
  %527 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 1
  store i8 1, ptr %527, align 8, !tbaa !30
  %528 = load i32, ptr %6, align 4, !tbaa !11
  %529 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::ShortcutAction", ptr %74, i32 0, i32 3
  store i32 %528, ptr %529, align 4, !tbaa !36
  store i32 1, ptr %3, align 4
  store i32 1, ptr %33, align 4
  br label %531

530:                                              ; preds = %179
  store i32 0, ptr %3, align 4
  store i32 1, ptr %33, align 4
  br label %531

531:                                              ; preds = %530, %526, %520
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %532

532:                                              ; preds = %531, %82
  %533 = load i32, ptr %3, align 4
  ret i32 %533

534:                                              ; preds = %523
  %535 = load ptr, ptr %17, align 8
  %536 = load i32, ptr %18, align 4
  %537 = insertvalue { ptr, i32 } poison, ptr %535, 0
  %538 = insertvalue { ptr, i32 } %537, i32 %536, 1
  resume { ptr, i32 } %538
}

declare noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN3vox10NodeEditor6DetailL15GetKeyIndexForDEv() #6

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_0EbT_SH_T0_"(ptr, ptr) #6

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_1ET0_T_SI_SH_"(ptr, ptr, ptr) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEEvT_SE_(ptr, ptr) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr, ptr) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr, ptr) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_3ET_SH_SH_T0_"(ptr, ptr, ptr) #6

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #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 = { "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 = { 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, !6, i64 8}
!10 = !{!"_ZTSN3vox10NodeEditor6Detail12EditorActionE", !6, i64 8}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutAction6ActionE", !7, i64 0}
!13 = !{!14, !18, i64 3340}
!14 = !{!"_ZTS7ImGuiIO", !15, i64 0, !15, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !6, i64 24, !6, i64 32, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !18, i64 84, !6, i64 88, !16, i64 96, !18, i64 104, !18, i64 105, !18, i64 106, !18, i64 107, !18, i64 108, !18, i64 109, !18, i64 110, !17, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !18, i64 200, !18, i64 201, !18, i64 202, !18, i64 203, !18, i64 204, !18, i64 205, !18, i64 206, !17, i64 208, !15, i64 212, !15, i64 216, !15, i64 220, !15, i64 224, !15, i64 228, !16, i64 232, !7, i64 240, !7, i64 2804, !16, i64 3316, !7, i64 3324, !17, i64 3332, !17, i64 3336, !18, i64 3340, !18, i64 3341, !18, i64 3342, !18, i64 3343, !7, i64 3344, !15, i64 3424, !15, i64 3428, !7, i64 3432, !18, i64 13688, !16, i64 13692, !7, i64 13700, !7, i64 13744, !7, i64 13784, !7, i64 13789, !7, i64 13794, !7, i64 13804, !7, i64 13814, !7, i64 13819, !7, i64 13824, !7, i64 13832, !7, i64 13852, !7, i64 13872, !7, i64 13892, !7, i64 13972, !17, i64 14052, !18, i64 14056, !7, i64 14057, !18, i64 14058, !19, i64 14060, !20, i64 14064}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !15, i64 0, !15, i64 4, !6, i64 8}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!14, !18, i64 3341}
!24 = !{!14, !18, i64 3342}
!25 = !{!26, !26, i64 0}
!26 = !{!"vtable pointer", !8, i64 0}
!27 = !{!28, !6, i64 0}
!28 = !{!"_ZTSN3vox10NodeEditor6Detail7ControlE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !18, i64 128, !18, i64 129, !18, i64 130, !18, i64 131}
!29 = !{!18, !18, i64 0}
!30 = !{!31, !18, i64 16}
!31 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutActionE", !10, i64 0, !18, i64 16, !18, i64 17, !12, i64 20, !32, i64 24}
!32 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!31, !12, i64 20}


; 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.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Node *, std::allocator<vox::NodeEditor::Detail::Node *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.86" = type { ptr }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Node>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.153 = type { ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Link *, std::allocator<vox::NodeEditor::Detail::Link *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.69" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.143" = 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 nounwind uwtable
declare hidden noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(14080) ptr @_ZN5ImGui5GetIOEv() local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext16FindLinksForNodeENS0_6NodeIdERSt6vectorIPNS1_4LinkESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(2040), i64, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2 align 2

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr, ptr) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN3vox10NodeEditor6Detail14ShortcutAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(132) %1) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.62", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %12 = alloca %"class.std::vector.13", align 8
  %13 = alloca %class.anon.153, align 8
  %14 = alloca %"class.std::vector.87", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.143", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.86", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %27 = getelementptr inbounds i8, ptr %0, i64 8
  %28 = load ptr, ptr %27, align 8, !tbaa !5
  %29 = tail call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(2040) %28)
  br i1 %29, label %30, label %.critedge

30:                                               ; preds = %2
  %31 = load ptr, ptr %27, align 8, !tbaa !5
  %32 = tail call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext19AreShortcutsEnabledEv(ptr noundef nonnull align 8 dereferenceable(2040) %31)
  br i1 %32, label %33, label %.critedge

33:                                               ; preds = %30
  %34 = tail call noundef nonnull align 8 dereferenceable(14080) ptr @_ZN5ImGui5GetIOEv()
  %35 = getelementptr inbounds i8, ptr %34, i64 3340
  %36 = load i8, ptr %35, align 4, !tbaa !10, !range !18, !noundef !19
  %37 = trunc nuw i8 %36 to i1
  br i1 %37, label %38, label %49

38:                                               ; preds = %33
  %39 = getelementptr inbounds i8, ptr %34, i64 3341
  %40 = load i8, ptr %39, align 1, !tbaa !20, !range !18, !noundef !19
  %41 = trunc nuw i8 %40 to i1
  br i1 %41, label %49, label %42

42:                                               ; preds = %38
  %43 = getelementptr inbounds i8, ptr %34, i64 3342
  %44 = load i8, ptr %43, align 2, !tbaa !21, !range !18, !noundef !19
  %45 = trunc nuw i8 %44 to i1
  br i1 %45, label %49, label %46

46:                                               ; preds = %42
  %47 = tail call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 569)
  %48 = tail call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %47, i1 noundef zeroext true)
  %spec.select = zext i1 %48 to i32
  %.pre = load i8, ptr %35, align 4, !tbaa !10, !range !18
  br label %49

49:                                               ; preds = %46, %42, %38, %33
  %50 = phi i8 [ %36, %38 ], [ %36, %42 ], [ %36, %33 ], [ %.pre, %46 ]
  %.070 = phi i32 [ 0, %38 ], [ 0, %42 ], [ 0, %33 ], [ %spec.select, %46 ]
  %51 = trunc nuw i8 %50 to i1
  br i1 %51, label %52, label %63

52:                                               ; preds = %49
  %53 = getelementptr inbounds i8, ptr %34, i64 3341
  %54 = load i8, ptr %53, align 1, !tbaa !20, !range !18, !noundef !19
  %55 = trunc nuw i8 %54 to i1
  br i1 %55, label %63, label %56

56:                                               ; preds = %52
  %57 = getelementptr inbounds i8, ptr %34, i64 3342
  %58 = load i8, ptr %57, align 2, !tbaa !21, !range !18, !noundef !19
  %59 = trunc nuw i8 %58 to i1
  br i1 %59, label %63, label %60

60:                                               ; preds = %56
  %61 = tail call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 548)
  %62 = tail call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %61, i1 noundef zeroext true)
  %spec.select98 = select i1 %62, i32 2, i32 %.070
  %.pre109 = load i8, ptr %35, align 4, !tbaa !10, !range !18
  br label %63

63:                                               ; preds = %60, %56, %52, %49
  %64 = phi i8 [ %50, %52 ], [ %50, %56 ], [ %50, %49 ], [ %.pre109, %60 ]
  %.171 = phi i32 [ %.070, %52 ], [ %.070, %56 ], [ %.070, %49 ], [ %spec.select98, %60 ]
  %65 = trunc nuw i8 %64 to i1
  br i1 %65, label %66, label %77

66:                                               ; preds = %63
  %67 = getelementptr inbounds i8, ptr %34, i64 3341
  %68 = load i8, ptr %67, align 1, !tbaa !20, !range !18, !noundef !19
  %69 = trunc nuw i8 %68 to i1
  br i1 %69, label %77, label %70

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %34, i64 3342
  %72 = load i8, ptr %71, align 2, !tbaa !21, !range !18, !noundef !19
  %73 = trunc nuw i8 %72 to i1
  br i1 %73, label %77, label %74

74:                                               ; preds = %70
  %75 = tail call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 567)
  %76 = tail call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %75, i1 noundef zeroext true)
  %spec.select99 = select i1 %76, i32 3, i32 %.171
  %.pre110 = load i8, ptr %35, align 4, !tbaa !10, !range !18
  br label %77

77:                                               ; preds = %74, %70, %66, %63
  %78 = phi i8 [ %64, %66 ], [ %64, %70 ], [ %64, %63 ], [ %.pre110, %74 ]
  %.272 = phi i32 [ %.171, %66 ], [ %.171, %70 ], [ %.171, %63 ], [ %spec.select99, %74 ]
  %79 = trunc nuw i8 %78 to i1
  br i1 %79, label %80, label %91

80:                                               ; preds = %77
  %81 = getelementptr inbounds i8, ptr %34, i64 3341
  %82 = load i8, ptr %81, align 1, !tbaa !20, !range !18, !noundef !19
  %83 = trunc nuw i8 %82 to i1
  br i1 %83, label %91, label %84

84:                                               ; preds = %80
  %85 = getelementptr inbounds i8, ptr %34, i64 3342
  %86 = load i8, ptr %85, align 2, !tbaa !21, !range !18, !noundef !19
  %87 = trunc nuw i8 %86 to i1
  br i1 %87, label %91, label %88

88:                                               ; preds = %84
  %89 = tail call noundef i32 @_ZN3vox10NodeEditor6DetailL15GetKeyIndexForDEv()
  %90 = tail call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %89, i1 noundef zeroext true)
  %spec.select100 = select i1 %90, i32 4, i32 %.272
  %.pre111 = load i8, ptr %35, align 4, !tbaa !10, !range !18
  br label %91

91:                                               ; preds = %88, %84, %80, %77
  %92 = phi i8 [ %78, %80 ], [ %78, %84 ], [ %78, %77 ], [ %.pre111, %88 ]
  %.3 = phi i32 [ %.272, %80 ], [ %.272, %84 ], [ %.272, %77 ], [ %spec.select100, %88 ]
  %93 = trunc nuw i8 %92 to i1
  br i1 %93, label %105, label %94

94:                                               ; preds = %91
  %95 = getelementptr inbounds i8, ptr %34, i64 3341
  %96 = load i8, ptr %95, align 1, !tbaa !20, !range !18, !noundef !19
  %97 = trunc nuw i8 %96 to i1
  br i1 %97, label %105, label %98

98:                                               ; preds = %94
  %99 = getelementptr inbounds i8, ptr %34, i64 3342
  %100 = load i8, ptr %99, align 2, !tbaa !21, !range !18, !noundef !19
  %101 = trunc nuw i8 %100 to i1
  br i1 %101, label %105, label %102

102:                                              ; preds = %98
  %103 = tail call noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef 524)
  %104 = tail call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef %103, i1 noundef zeroext true)
  br i1 %104, label %.thread, label %105

105:                                              ; preds = %102, %98, %94, %91
  switch i32 %.3, label %106 [
    i32 0, label %.critedge
    i32 3, label %.thread
  ]

106:                                              ; preds = %105
  %107 = load ptr, ptr %27, align 8, !tbaa !5
  %108 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3vox10NodeEditor6Detail13EditorContext18GetSelectedObjectsEv(ptr noundef nonnull align 8 dereferenceable(2040) %107)
  %109 = tail call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  br i1 %109, label %162, label %110

110:                                              ; preds = %106
  %111 = getelementptr inbounds i8, ptr %0, i64 24
  %112 = tail call ptr @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  %113 = tail call ptr @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  tail call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6assignIN9__gnu_cxx17__normal_iteratorIPKS4_S6_EEvEEvT_SD_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr %112, ptr %113)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #6
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  %114 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  store ptr %114, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  %115 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  store ptr %115, ptr %5, align 8
  %116 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  br i1 %116, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %129, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  %117 = call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  br i1 %117, label %160, label %132

.lr.ph:                                           ; preds = %110, %129
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  %119 = load ptr, ptr %118, align 8, !tbaa !22
  %120 = load ptr, ptr %119, align 8, !tbaa !23
  %121 = getelementptr inbounds i8, ptr %120, i64 112
  %122 = load ptr, ptr %121, align 8
  %123 = invoke noundef ptr %122(ptr noundef nonnull align 8 dereferenceable(17) %119)
          to label %124 unwind label %127

124:                                              ; preds = %.lr.ph
  %125 = call noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef %123)
  br i1 %125, label %126, label %129

126:                                              ; preds = %124
  invoke void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128) %123, ptr noundef nonnull align 8 dereferenceable(24) %3, i1 noundef zeroext true)
          to label %129 unwind label %127

127:                                              ; preds = %126, %.lr.ph
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  br label %161

129:                                              ; preds = %126, %124
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  %131 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  br i1 %131, label %.lr.ph, label %._crit_edge

132:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %133 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  store ptr %133, ptr %7, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  %134 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %135 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  %136 = load ptr, ptr %6, align 8
  %137 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPPNS2_4NodeES_ISB_SaISB_EEEEvEENS9_IPS4_S6_EENS9_IPKS4_S6_EET_SL_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr %136, ptr %134, ptr %135)
          to label %138 unwind label %151

138:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  %139 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  %140 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr %139, ptr %140)
          to label %141 unwind label %153

141:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %142 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  %143 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  %144 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr %142, ptr %143)
          to label %145 unwind label %155

145:                                              ; preds = %141
  store ptr %144, ptr %9, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %146 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  store ptr %146, ptr %11, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %147 = load ptr, ptr %8, align 8
  %148 = load ptr, ptr %10, align 8
  %149 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr %147, ptr %148)
          to label %150 unwind label %157

150:                                              ; preds = %145
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  br label %160

151:                                              ; preds = %132
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  br label %161

153:                                              ; preds = %138
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %161

155:                                              ; preds = %141
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %159

157:                                              ; preds = %145
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  br label %159

159:                                              ; preds = %157, %155
  %.pn = phi { ptr, i32 } [ %158, %157 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  br label %161

160:                                              ; preds = %150, %._crit_edge
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  br label %178

161:                                              ; preds = %159, %153, %151, %127
  %.pn87 = phi { ptr, i32 } [ %128, %127 ], [ %.pn, %159 ], [ %154, %153 ], [ %152, %151 ]
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  br label %253

162:                                              ; preds = %106
  %163 = load ptr, ptr %1, align 8, !tbaa !25
  %.not89 = icmp eq ptr %163, null
  br i1 %.not89, label %178, label %164

164:                                              ; preds = %162
  %165 = load ptr, ptr %163, align 8, !tbaa !23
  %166 = getelementptr inbounds i8, ptr %165, i64 80
  %167 = load ptr, ptr %166, align 8
  %168 = tail call noundef zeroext i1 %167(ptr noundef nonnull align 8 dereferenceable(17) %163)
  br i1 %168, label %169, label %178

169:                                              ; preds = %164
  %170 = load ptr, ptr %1, align 8, !tbaa !25
  %171 = load ptr, ptr %170, align 8, !tbaa !23
  %172 = getelementptr inbounds i8, ptr %171, i64 112
  %173 = load ptr, ptr %172, align 8
  %174 = tail call noundef ptr %173(ptr noundef nonnull align 8 dereferenceable(17) %170)
  %175 = tail call noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef %174)
  br i1 %175, label %178, label %176

176:                                              ; preds = %169
  %177 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE9push_backERKS4_(ptr noundef nonnull align 8 dereferenceable(24) %177, ptr noundef nonnull align 8 dereferenceable(8) %1)
  br label %178

178:                                              ; preds = %162, %164, %169, %176, %160
  %179 = getelementptr inbounds i8, ptr %0, i64 24
  %180 = call noundef zeroext i1 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  br i1 %180, label %.critedge, label %181

181:                                              ; preds = %178
  %182 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  %183 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  %184 = call noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_0EbT_SH_T0_"(ptr %182, ptr %183)
  br i1 %184, label %.thread105, label %185

185:                                              ; preds = %181
  %186 = call noundef i64 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  %187 = icmp ugt i64 %186, 1
  br i1 %187, label %188, label %.thread105

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  %189 = call noundef i64 @_ZNKSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  invoke void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %189)
          to label %190 unwind label %203

190:                                              ; preds = %188
  %191 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  %192 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  %193 = invoke ptr @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_1ET0_T_SI_SH_"(ptr %191, ptr %192, ptr nonnull %12)
          to label %194 unwind label %203

194:                                              ; preds = %190
  %195 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  %196 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEEvT_SE_(ptr %195, ptr %196)
          to label %197 unwind label %203

197:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  store ptr %12, ptr %13, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %198 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  store ptr %198, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  %199 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  store ptr %199, ptr %16, align 8
  %200 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br i1 %200, label %.lr.ph107, label %._crit_edge108

._crit_edge108:                                   ; preds = %207, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  %201 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %202 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr %201, ptr %202)
          to label %212 unwind label %236

203:                                              ; preds = %194, %190, %188
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %251

.lr.ph107:                                        ; preds = %197, %207
  %205 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %.sroa.014.0.copyload = load i64, ptr %205, align 8
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZN3vox10NodeEditor6Detail13EditorContext16FindLinksForNodeENS0_6NodeIdERSt6vectorIPNS1_4LinkESaIS6_EEb(ptr noundef nonnull align 8 dereferenceable(2040) %206, i64 %.sroa.014.0.copyload, ptr noundef nonnull align 8 dereferenceable(24) %14, i1 noundef zeroext true)
          to label %207 unwind label %210

207:                                              ; preds = %.lr.ph107
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #6
  %209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #6
  br i1 %209, label %.lr.ph107, label %._crit_edge108

210:                                              ; preds = %.lr.ph107
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %250

212:                                              ; preds = %._crit_edge108
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %213 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %214 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %215 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr %213, ptr %214)
          to label %216 unwind label %238

216:                                              ; preds = %212
  store ptr %215, ptr %18, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  %217 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  store ptr %217, ptr %20, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  %218 = load ptr, ptr %17, align 8
  %219 = load ptr, ptr %19, align 8
  %220 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr %218, ptr %219)
          to label %221 unwind label %240

221:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %222 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %223 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %224 = invoke ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_3ET_SH_SH_T0_"(ptr %222, ptr %223, ptr nonnull %13)
          to label %225 unwind label %243

225:                                              ; preds = %221
  store ptr %224, ptr %22, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  %226 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  store ptr %226, ptr %24, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail4LinkESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #6
  %227 = load ptr, ptr %21, align 8
  %228 = load ptr, ptr %23, align 8
  %229 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS4_S6_EESB_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr %227, ptr %228)
          to label %230 unwind label %245

230:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  %231 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #6
  store ptr %231, ptr %26, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEC2IPS5_vEERKNS0_IT_SA_EE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #6
  %232 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %233 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  %234 = load ptr, ptr %25, align 8
  %235 = invoke ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6insertIN9__gnu_cxx17__normal_iteratorIPPNS2_4LinkES_ISB_SaISB_EEEEvEENS9_IPS4_S6_EENS9_IPKS4_S6_EET_SL_(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr %234, ptr %232, ptr %233)
          to label %252 unwind label %248

236:                                              ; preds = %._crit_edge108
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %250

238:                                              ; preds = %212
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %242

240:                                              ; preds = %216
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  br label %242

242:                                              ; preds = %240, %238
  %.pn90 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  br label %250

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

245:                                              ; preds = %225
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  br label %247

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

248:                                              ; preds = %230
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  br label %250

250:                                              ; preds = %248, %247, %242, %236, %210
  %.pn94 = phi { ptr, i32 } [ %211, %210 ], [ %249, %248 ], [ %.pn92, %247 ], [ %.pn90, %242 ], [ %237, %236 ]
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %251

251:                                              ; preds = %250, %203
  %.pn94.pn = phi { ptr, i32 } [ %.pn94, %250 ], [ %204, %203 ]
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %253

252:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4LinkESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %.thread105

253:                                              ; preds = %251, %161
  %.pn94.pn.pn = phi { ptr, i32 } [ %.pn94.pn, %251 ], [ %.pn87, %161 ]
  resume { ptr, i32 } %.pn94.pn.pn

.thread:                                          ; preds = %105, %102
  %.4104 = phi i32 [ %.3, %105 ], [ 5, %102 ]
  %254 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef 0)
  br label %.thread105

.thread105:                                       ; preds = %252, %185, %181, %.thread
  %.4103 = phi i32 [ %.3, %252 ], [ %.4104, %.thread ], [ %.3, %181 ], [ %.3, %185 ]
  %255 = getelementptr inbounds i8, ptr %0, i64 16
  store i8 1, ptr %255, align 8, !tbaa !27
  %256 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %.4103, ptr %256, align 4, !tbaa !34
  br label %.critedge

.critedge:                                        ; preds = %105, %.thread105, %178, %2, %30
  %.2 = phi i32 [ 0, %30 ], [ 0, %2 ], [ 1, %.thread105 ], [ %.3, %105 ], [ 0, %178 ]
  ret i32 %.2
}

declare noundef i32 @_ZN5ImGui11GetKeyIndexEi(i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZN3vox10NodeEditor6DetailL15GetKeyIndexForDEv() local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZSt6any_ofIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_0EbT_SH_T0_"(ptr, ptr) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_1ET0_T_SI_SH_"(ptr, ptr, ptr) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEEvT_SE_(ptr, ptr) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEEvT_SC_(ptr, ptr) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEET_SC_SC_(ptr, ptr) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail4LinkESt6vectorIS6_SaIS6_EEEEZNS4_14ShortcutAction6AcceptERKNS4_7ControlEE3$_3ET_SH_SH_T0_"(ptr, ptr, ptr) local_unnamed_addr #5

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { "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, !7, i64 8}
!6 = !{!"_ZTSN3vox10NodeEditor6Detail12EditorActionE", !7, i64 8}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !15, i64 3340}
!11 = !{!"_ZTS7ImGuiIO", !12, i64 0, !12, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !7, i64 24, !7, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !15, i64 84, !7, i64 88, !13, i64 96, !15, i64 104, !15, i64 105, !15, i64 106, !15, i64 107, !15, i64 108, !15, i64 109, !15, i64 110, !14, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !15, i64 200, !15, i64 201, !15, i64 202, !15, i64 203, !15, i64 204, !15, i64 205, !15, i64 206, !14, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !13, i64 232, !8, i64 240, !8, i64 2804, !13, i64 3316, !8, i64 3324, !14, i64 3332, !14, i64 3336, !15, i64 3340, !15, i64 3341, !15, i64 3342, !15, i64 3343, !8, i64 3344, !12, i64 3424, !12, i64 3428, !8, i64 3432, !15, i64 13688, !13, i64 13692, !8, i64 13700, !8, i64 13744, !8, i64 13784, !8, i64 13789, !8, i64 13794, !8, i64 13804, !8, i64 13814, !8, i64 13819, !8, i64 13824, !8, i64 13832, !8, i64 13852, !8, i64 13872, !8, i64 13892, !8, i64 13972, !14, i64 14052, !15, i64 14056, !8, i64 14057, !15, i64 14058, !16, i64 14060, !17, i64 14064}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !8, i64 0}
!15 = !{!"bool", !8, i64 0}
!16 = !{!"short", !8, i64 0}
!17 = !{!"_ZTS8ImVectorItE", !12, i64 0, !12, i64 4, !7, i64 8}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!11, !15, i64 3341}
!21 = !{!11, !15, i64 3342}
!22 = !{!7, !7, i64 0}
!23 = !{!24, !24, i64 0}
!24 = !{!"vtable pointer", !9, i64 0}
!25 = !{!26, !7, i64 0}
!26 = !{!"_ZTSN3vox10NodeEditor6Detail7ControlE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !15, i64 128, !15, i64 129, !15, i64 130, !15, i64 131}
!27 = !{!28, !15, i64 16}
!28 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutActionE", !6, i64 0, !15, i64 16, !15, i64 17, !29, i64 20, !30, i64 24}
!29 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutAction6ActionE", !8, i64 0}
!30 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!34 = !{!28, !29, i64 20}


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