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

; 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"

%"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] }>
%"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 }
%"struct.vox::NodeEditor::PinId" = type { %"struct.vox::NodeEditor::Details::SafePointerType" }
%"struct.vox::NodeEditor::Details::SafePointerType" = type { %"struct.vox::NodeEditor::Details::SafeType" }
%"struct.vox::NodeEditor::Details::SafeType" = type { i64 }
%"struct.vox::NodeEditor::LinkId" = type { %"struct.vox::NodeEditor::Details::SafePointerType.50" }
%"struct.vox::NodeEditor::Details::SafePointerType.50" = type { %"struct.vox::NodeEditor::Details::SafeType.51" }
%"struct.vox::NodeEditor::Details::SafeType.51" = type { i64 }
%"class.__gnu_cxx::__normal_iterator.69" = type { ptr }
%"struct.vox::NodeEditor::Detail::ObjectWrapper.70" = type { %"struct.vox::NodeEditor::NodeId", ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.vox::NodeEditor::Detail::ObjectWrapper" = type { %"struct.vox::NodeEditor::LinkId", ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.72" = type { ptr }
%class.anon.73 = type { ptr, 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.anon.74 = type { ptr }
%class.anon.75 = type { ptr }
%class.anon.76 = type { i8 }
%class.anon.78 = type { ptr, ptr }
%class.anon.79 = type { i8 }
%struct.ImVec2 = type { float, float }
%class.anon.81 = type { ptr, ptr }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImColor = type { %struct.ImVec4 }
%"class.__gnu_cxx::__normal_iterator.82" = type { ptr }
%"struct.vox::NodeEditor::Detail::ObjectId" = type <{ %"struct.vox::NodeEditor::Details::SafePointerType.38", i32, [4 x i8] }>
%"struct.vox::NodeEditor::Details::SafePointerType.38" = type { %"struct.vox::NodeEditor::Details::SafeType.39" }
%"struct.vox::NodeEditor::Details::SafeType.39" = type { i64 }
%"struct.vox::NodeEditor::Detail::EditorContext" = type { i8, i8, i8, %"struct.vox::NodeEditor::Detail::Style", %"class.std::vector.13", %"class.std::vector.18", %"class.std::vector.23", %"class.std::vector.28", %"class.std::vector.28", i64, ptr, %"class.std::vector.33", %"class.std::vector.33", %"struct.ImGuiEx::Canvas", i8, %"struct.vox::NodeEditor::Detail::NodeBuilder", %"struct.vox::NodeEditor::Detail::HintBuilder", ptr, %"struct.vox::NodeEditor::Detail::NavigateAction", %"struct.vox::NodeEditor::Detail::SizeAction", %"struct.vox::NodeEditor::Detail::DragAction", %"struct.vox::NodeEditor::Detail::SelectAction", %"struct.vox::NodeEditor::Detail::ContextMenuAction", %"struct.vox::NodeEditor::Detail::ShortcutAction", %"struct.vox::NodeEditor::Detail::CreateItemAction", %"struct.vox::NodeEditor::Detail::DeleteItemsAction", %"class.std::vector.40", %"struct.vox::NodeEditor::Detail::FlowAnimationController", %"struct.vox::NodeEditor::NodeId", %"struct.vox::NodeEditor::PinId", %"struct.vox::NodeEditor::LinkId", i8, i8, i8, [5 x i8], %"struct.vox::NodeEditor::Detail::Settings", %"struct.vox::NodeEditor::Detail::Config", i32, %struct.ImDrawListSplitter }
%"struct.vox::NodeEditor::Detail::Style" = type { %"struct.vox::NodeEditor::Style", %"class.std::vector", %"class.std::vector.8" }
%"struct.vox::NodeEditor::Style" = type { %struct.ImVec4, float, float, float, float, float, float, float, %struct.ImVec2, %struct.ImVec2, float, float, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, [18 x %struct.ImVec4] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::ColorModifier, std::allocator<vox::NodeEditor::Detail::Style::ColorModifier>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::ColorModifier, std::allocator<vox::NodeEditor::Detail::Style::ColorModifier>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::ColorModifier, std::allocator<vox::NodeEditor::Detail::Style::ColorModifier>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::ColorModifier, std::allocator<vox::NodeEditor::Detail::Style::ColorModifier>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::VarModifier, std::allocator<vox::NodeEditor::Detail::Style::VarModifier>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::VarModifier, std::allocator<vox::NodeEditor::Detail::Style::VarModifier>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::VarModifier, std::allocator<vox::NodeEditor::Detail::Style::VarModifier>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Style::VarModifier, std::allocator<vox::NodeEditor::Detail::Style::VarModifier>>::_Vector_impl_data" = type { ptr, ptr, 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.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Pin>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.23" = type { %"struct.std::_Vector_base.24" }
%"struct.std::_Vector_base.24" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>, std::allocator<vox::NodeEditor::Detail::ObjectWrapper<vox::NodeEditor::Detail::Link>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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 }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Animation *, std::allocator<vox::NodeEditor::Detail::Animation *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Animation *, std::allocator<vox::NodeEditor::Detail::Animation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::Animation *, std::allocator<vox::NodeEditor::Detail::Animation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::Animation *, std::allocator<vox::NodeEditor::Detail::Animation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ImGuiEx::Canvas" = type <{ i8, [3 x i8], %struct.ImVec2, %struct.ImVec2, %struct.ImRect, [4 x i8], ptr, i32, i32, i32, %"struct.ImGuiEx::CanvasView", %struct.ImRect, %struct.ImVec2, i32, float, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], %struct.ImVec2, [4 x i8] }>
%"struct.ImGuiEx::CanvasView" = type { %struct.ImVec2, float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%"struct.vox::NodeEditor::Detail::NodeBuilder" = type { ptr, ptr, ptr, %struct.ImRect, %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, %struct.ImRect, i8, %struct.ImDrawListSplitter, %struct.ImDrawListSplitter }
%"struct.vox::NodeEditor::Detail::HintBuilder" = type { ptr, i8, ptr, float, i32 }
%"struct.vox::NodeEditor::Detail::NavigateAction" = type <{ %"struct.vox::NodeEditor::Detail::EditorAction", i8, [3 x i8], float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr, %struct.ImVec2, %struct.ImVec2, %"struct.vox::NodeEditor::Detail::NavigateAnimation", i32, [4 x i8], i64, ptr, i8, [3 x i8], %struct.ImVec2, [4 x i8] }>
%"struct.vox::NodeEditor::Detail::EditorAction" = type { ptr, ptr }
%"struct.vox::NodeEditor::Detail::NavigateAnimation" = type { %"struct.vox::NodeEditor::Detail::Animation.base", ptr, %struct.ImRect, %struct.ImRect }
%"struct.vox::NodeEditor::Detail::Animation.base" = type <{ ptr, ptr, i32, float, float }>
%"struct.vox::NodeEditor::Detail::SizeAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, ptr, %struct.ImRect, %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i32 }
%"struct.vox::NodeEditor::Detail::DragAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, ptr, %"class.std::vector.28" }
%"struct.vox::NodeEditor::Detail::SelectAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, i8, i8, %struct.ImVec2, %struct.ImVec2, %"class.std::vector.28", %"class.std::vector.28", %"struct.vox::NodeEditor::Detail::Animation" }
%"struct.vox::NodeEditor::Detail::Animation" = type <{ ptr, ptr, i32, float, float, [4 x i8] }>
%"struct.vox::NodeEditor::Detail::ContextMenuAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i32, i32, %"struct.vox::NodeEditor::Detail::ObjectId" }
%"struct.vox::NodeEditor::Detail::ShortcutAction" = type { %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, i32, %"class.std::vector.28" }
%"struct.vox::NodeEditor::Detail::CreateItemAction" = type <{ %"struct.vox::NodeEditor::Detail::EditorAction", i8, [3 x i8], i32, i32, i32, i32, i32, float, [4 x i8], ptr, ptr, i8, [7 x i8], ptr, i32, i8, [3 x i8] }>
%"struct.vox::NodeEditor::Detail::DeleteItemsAction" = type <{ %"struct.vox::NodeEditor::Detail::EditorAction", i8, i8, [6 x i8], %"class.std::vector.28", i32, i32, %"class.std::vector.28", i32, [4 x i8] }>
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::AnimationController *, std::allocator<vox::NodeEditor::Detail::AnimationController *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::AnimationController *, std::allocator<vox::NodeEditor::Detail::AnimationController *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::AnimationController *, std::allocator<vox::NodeEditor::Detail::AnimationController *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::AnimationController *, std::allocator<vox::NodeEditor::Detail::AnimationController *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vox::NodeEditor::Detail::FlowAnimationController" = type { %"struct.vox::NodeEditor::Detail::AnimationController", %"class.std::vector.45", %"class.std::vector.45" }
%"struct.vox::NodeEditor::Detail::AnimationController" = type { ptr, ptr }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::FlowAnimation *, std::allocator<vox::NodeEditor::Detail::FlowAnimation *>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::FlowAnimation *, std::allocator<vox::NodeEditor::Detail::FlowAnimation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::FlowAnimation *, std::allocator<vox::NodeEditor::Detail::FlowAnimation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::FlowAnimation *, std::allocator<vox::NodeEditor::Detail::FlowAnimation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vox::NodeEditor::Detail::Settings" = type <{ i8, [3 x i8], i32, %"class.std::vector.52", %"class.std::vector.57", %struct.ImVec2, float, [4 x i8] }>
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::NodeSettings, std::allocator<vox::NodeEditor::Detail::NodeSettings>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::NodeSettings, std::allocator<vox::NodeEditor::Detail::NodeSettings>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::NodeSettings, std::allocator<vox::NodeEditor::Detail::NodeSettings>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::NodeSettings, std::allocator<vox::NodeEditor::Detail::NodeSettings>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectId, std::allocator<vox::NodeEditor::Detail::ObjectId>>::_Vector_impl" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectId, std::allocator<vox::NodeEditor::Detail::ObjectId>>::_Vector_impl" = type { %"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectId, std::allocator<vox::NodeEditor::Detail::ObjectId>>::_Vector_impl_data" }
%"struct.std::_Vector_base<vox::NodeEditor::Detail::ObjectId, std::allocator<vox::NodeEditor::Detail::ObjectId>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.vox::NodeEditor::Detail::Config" = type { %"struct.vox::NodeEditor::Config" }
%"struct.vox::NodeEditor::Config" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.5 }
%struct.ImVector.5 = type { i32, i32, ptr }
%"struct.vox::NodeEditor::Detail::Node" = type <{ %"struct.vox::NodeEditor::Detail::Object.base", [7 x i8], %"struct.vox::NodeEditor::NodeId", i32, %struct.ImRect, i32, ptr, %struct.ImVec2, i32, i32, float, float, i32, i32, float, float, %struct.ImRect, i8, i8, [6 x i8] }>
%"struct.vox::NodeEditor::Detail::Object.base" = type <{ ptr, ptr, i8 }>
%"struct.vox::NodeEditor::Detail::Pin" = type <{ %"struct.vox::NodeEditor::Detail::Object.base", [7 x i8], %"struct.vox::NodeEditor::PinId", i32, [4 x i8], ptr, %struct.ImRect, %struct.ImRect, ptr, i32, i32, float, float, i32, %struct.ImVec2, float, float, float, float, i8, i8, [2 x i8] }>
%"struct.vox::NodeEditor::Detail::Link" = type { %"struct.vox::NodeEditor::Detail::Object.base", %"struct.vox::NodeEditor::LinkId", ptr, ptr, i32, float, %struct.ImVec2, %struct.ImVec2 }
%"struct.vox::NodeEditor::Detail::Object" = type <{ ptr, ptr, i8, [7 x i8] }>
%struct.ImDrawList = type <{ %struct.ImVector, %struct.ImVector.0, %struct.ImVector.1, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.2, %struct.ImVector.3, %struct.ImVector.4, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4] }

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196), i32 noundef) #0 align 2

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #1

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

declare void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef, float noundef) #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Node4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i32 noundef) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorE(ptr noundef nonnull align 8 dereferenceable(2040), i32 noundef) #3 align 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 @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Link4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, i32 noundef) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8), float noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_ZN5ImGui17GetWindowDrawListEv() #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172)) #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef, i32 noundef) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext3EndEv(ptr noundef nonnull align 8 dereferenceable(2040) %0) #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"struct.vox::NodeEditor::Detail::Control", align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.vox::NodeEditor::NodeId", align 8
  %6 = alloca %"struct.vox::NodeEditor::PinId", align 8
  %7 = alloca %"struct.vox::NodeEditor::LinkId", align 8
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %13 = alloca %"struct.vox::NodeEditor::Detail::ObjectWrapper.70", align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"struct.vox::NodeEditor::Detail::ObjectWrapper", align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.72", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.72", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %class.anon.73, align 8
  %33 = alloca i8, align 1
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %41 = alloca %"class.std::vector.62", align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %46 = alloca %class.anon.74, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %53 = alloca %class.anon.75, align 8
  %54 = alloca i32, align 4
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %57 = alloca %class.anon.76, align 1
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca %class.anon.78, align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %64 = alloca %class.anon.79, align 1
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %67 = alloca %class.anon.78, align 8
  %68 = alloca %class.anon.78, align 8
  %69 = alloca i32, align 4
  %70 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %72 = alloca %class.anon.78, align 8
  %73 = alloca %class.anon.78, align 8
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca i32, align 4
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca %struct.ImVec2, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImVec2, align 4
  %81 = alloca float, align 4
  %82 = alloca %struct.ImVec2, align 4
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca float, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImVec2, align 4
  %89 = alloca %struct.ImVec2, align 4
  %90 = alloca %struct.ImVec2, align 4
  %91 = alloca %class.anon.81, align 8
  %92 = alloca i32, align 4
  %93 = alloca ptr, align 8
  %94 = alloca %struct.ImVec4, align 4
  %95 = alloca %struct.ImVec4, align 4
  %96 = alloca %struct.ImVec2, align 4
  %97 = alloca %struct.ImVec2, align 4
  %98 = alloca %struct.ImVec2, align 4
  %99 = alloca %struct.ImVec2, align 4
  %100 = alloca %struct.ImColor, align 4
  %101 = alloca %struct.ImColor, align 4
  %102 = alloca ptr, align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.82", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.82", align 8
  %105 = alloca %"struct.vox::NodeEditor::Detail::ObjectId", align 8
  %106 = alloca ptr, align 8
  %107 = alloca %"struct.vox::NodeEditor::Detail::ObjectId", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %108 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 136, ptr %3) #10
  %109 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = icmp ne ptr %110, null
  br i1 %111, label %112, label %119

112:                                              ; preds = %1
  %113 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = load ptr, ptr %114, align 8, !tbaa !110
  %116 = getelementptr inbounds ptr, ptr %115, i64 7
  %117 = load ptr, ptr %116, align 8
  %118 = call noundef zeroext i1 %117(ptr noundef nonnull align 8 dereferenceable(16) %114)
  br label %119

119:                                              ; preds = %112, %1
  %120 = phi i1 [ false, %1 ], [ %118, %112 ]
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12BuildControlEb(ptr dead_on_unwind writable sret(%"struct.vox::NodeEditor::Detail::Control") align 8 %3, ptr noundef nonnull align 8 dereferenceable(2040) %108, i1 noundef zeroext %120)
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #10
  %121 = call noundef ptr @_ZN5ImGui17GetWindowDrawListEv()
  store ptr %121, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #10
  %122 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 7
  %123 = load ptr, ptr %122, align 8, !tbaa !112
  %124 = icmp ne ptr %123, null
  br i1 %124, label %125, label %129

125:                                              ; preds = %119
  %126 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 7
  %127 = load ptr, ptr %126, align 8, !tbaa !112
  %128 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Node", ptr %127, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %5, ptr align 8 %128, i64 8, i1 false)
  br label %130

129:                                              ; preds = %119
  call void @_ZN3vox10NodeEditor6NodeIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef 0)
  br label %130

130:                                              ; preds = %129, %125
  %131 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %131, ptr align 8 %5, i64 8, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #10
  %132 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 11
  %133 = load ptr, ptr %132, align 8, !tbaa !114
  %134 = icmp ne ptr %133, null
  br i1 %134, label %135, label %139

135:                                              ; preds = %130
  %136 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 11
  %137 = load ptr, ptr %136, align 8, !tbaa !114
  %138 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Pin", ptr %137, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %6, ptr align 8 %138, i64 8, i1 false)
  br label %140

139:                                              ; preds = %130
  call void @_ZN3vox10NodeEditor5PinIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 0)
  br label %140

140:                                              ; preds = %139, %135
  %141 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 29
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %141, ptr align 8 %6, i64 8, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %142 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 15
  %143 = load ptr, ptr %142, align 8, !tbaa !115
  %144 = icmp ne ptr %143, null
  br i1 %144, label %145, label %149

145:                                              ; preds = %140
  %146 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 15
  %147 = load ptr, ptr %146, align 8, !tbaa !115
  %148 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Link", ptr %147, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %148, i64 8, i1 false)
  br label %150

149:                                              ; preds = %140
  call void @_ZN3vox10NodeEditor6LinkIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef 0)
  br label %150

150:                                              ; preds = %149, %145
  %151 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %151, ptr align 8 %7, i64 8, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  %152 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 18
  %153 = load i8, ptr %152, align 2, !tbaa !116, !range !117, !noundef !118
  %154 = trunc i8 %153 to i1
  %155 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 31
  %156 = zext i1 %154 to i8
  store i8 %156, ptr %155, align 8, !tbaa !119
  %157 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 19
  %158 = load i8, ptr %157, align 1, !tbaa !120, !range !117, !noundef !118
  %159 = trunc i8 %158 to i1
  %160 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 32
  %161 = zext i1 %159 to i8
  store i8 %161, ptr %160, align 1, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #10
  %162 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %163 = load ptr, ptr %162, align 8, !tbaa !9
  %164 = icmp ne ptr %163, null
  br i1 %164, label %165, label %173

165:                                              ; preds = %150
  %166 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %167 = load ptr, ptr %166, align 8, !tbaa !9
  %168 = load ptr, ptr %167, align 8, !tbaa !110
  %169 = getelementptr inbounds ptr, ptr %168, i64 12
  %170 = load ptr, ptr %169, align 8
  %171 = call noundef ptr %170(ptr noundef nonnull align 8 dereferenceable(16) %167)
  %172 = icmp ne ptr %171, null
  br label %173

173:                                              ; preds = %165, %150
  %174 = phi i1 [ false, %150 ], [ %172, %165 ]
  %175 = zext i1 %174 to i8
  store i8 %175, ptr %8, align 1, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #10
  %176 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %177 = load ptr, ptr %176, align 8, !tbaa !9
  %178 = icmp ne ptr %177, null
  br i1 %178, label %179, label %187

179:                                              ; preds = %173
  %180 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %181 = load ptr, ptr %180, align 8, !tbaa !9
  %182 = load ptr, ptr %181, align 8, !tbaa !110
  %183 = getelementptr inbounds ptr, ptr %182, i64 11
  %184 = load ptr, ptr %183, align 8
  %185 = call noundef ptr %184(ptr noundef nonnull align 8 dereferenceable(16) %181)
  %186 = icmp ne ptr %185, null
  br label %187

187:                                              ; preds = %179, %173
  %188 = phi i1 [ false, %173 ], [ %186, %179 ]
  %189 = zext i1 %188 to i8
  store i8 %189, ptr %9, align 1, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %190 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  store ptr %190, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #10
  %193 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %11, i32 0, i32 0
  store ptr %192, ptr %193, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %194) #10
  %196 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %12, i32 0, i32 0
  store ptr %195, ptr %196, align 8
  br label %197

197:                                              ; preds = %213, %187
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  br i1 %198, label %200, label %199

199:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %215

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #10
  %201 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %201, i64 16, i1 false)
  %202 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  %203 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Object", ptr %202, i32 0, i32 2
  %204 = load i8, ptr %203, align 8, !tbaa !123, !range !117, !noundef !118
  %205 = trunc i8 %204 to i1
  br i1 %205, label %206, label %212

206:                                              ; preds = %200
  %207 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  %208 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %207)
  br i1 %208, label %209, label %212

209:                                              ; preds = %206
  %210 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %13)
  %211 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3vox10NodeEditor6Detail4Node4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(128) %210, ptr noundef %211, i32 noundef 0)
  br label %212

212:                                              ; preds = %209, %206, %200
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  br label %213

213:                                              ; preds = %212
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br label %197

215:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %216 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 6
  store ptr %216, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %217 = load ptr, ptr %14, align 8, !tbaa !5
  %218 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #10
  %219 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  store ptr %218, ptr %219, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %220 = load ptr, ptr %14, align 8, !tbaa !5
  %221 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %220) #10
  %222 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %221, ptr %222, align 8
  br label %223

223:                                              ; preds = %239, %215
  %224 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %224, label %226, label %225

225:                                              ; preds = %223
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  br label %241

226:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #10
  %227 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %227, i64 16, i1 false)
  %228 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %229 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Object", ptr %228, i32 0, i32 2
  %230 = load i8, ptr %229, align 8, !tbaa !123, !range !117, !noundef !118
  %231 = trunc i8 %230 to i1
  br i1 %231, label %232, label %238

232:                                              ; preds = %226
  %233 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %234 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %233)
  br i1 %234, label %235, label %238

235:                                              ; preds = %232
  %236 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %17)
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3vox10NodeEditor6Detail4Link4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(72) %236, ptr noundef %237, i32 noundef 0)
  br label %238

238:                                              ; preds = %235, %232, %226
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #10
  br label %239

239:                                              ; preds = %238
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  br label %223

241:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %242 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 7
  store ptr %242, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %243 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %244 = load ptr, ptr %243, align 8, !tbaa !9
  %245 = icmp ne ptr %244, null
  br i1 %245, label %246, label %253

246:                                              ; preds = %241
  %247 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %248 = load ptr, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %248, align 8, !tbaa !110
  %250 = getelementptr inbounds ptr, ptr %249, i64 12
  %251 = load ptr, ptr %250, align 8
  %252 = call noundef ptr %251(ptr noundef nonnull align 8 dereferenceable(16) %248)
  br label %254

253:                                              ; preds = %241
  br label %254

254:                                              ; preds = %253, %246
  %255 = phi ptr [ %252, %246 ], [ null, %253 ]
  store ptr %255, ptr %19, align 8, !tbaa !5
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = icmp ne ptr %256, null
  br i1 %257, label %258, label %261

258:                                              ; preds = %254
  %259 = load ptr, ptr %19, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::SelectAction", ptr %259, i32 0, i32 7
  store ptr %260, ptr %18, align 8, !tbaa !5
  br label %261

261:                                              ; preds = %258, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %262 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %262, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %263) #10
  %265 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %21, i32 0, i32 0
  store ptr %264, ptr %265, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  %267 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %266) #10
  %268 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %22, i32 0, i32 0
  store ptr %267, ptr %268, align 8
  br label %269

269:                                              ; preds = %284, %261
  %270 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br i1 %270, label %272, label %271

271:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %286

272:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  store ptr %274, ptr %23, align 8, !tbaa !5
  %275 = load ptr, ptr %23, align 8, !tbaa !5
  %276 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %275)
  br i1 %276, label %277, label %283

277:                                              ; preds = %272
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = load ptr, ptr %278, align 8, !tbaa !110
  %281 = getelementptr inbounds ptr, ptr %280, i64 4
  %282 = load ptr, ptr %281, align 8
  call void %282(ptr noundef nonnull align 8 dereferenceable(17) %278, ptr noundef %279, i32 noundef 2)
  br label %283

283:                                              ; preds = %277, %272
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %284

284:                                              ; preds = %283
  %285 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br label %269

286:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  %287 = load i8, ptr %8, align 1, !tbaa !122, !range !117, !noundef !118
  %288 = trunc i8 %287 to i1
  br i1 %288, label %347, label %289

289:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %290 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 0
  %291 = load ptr, ptr %290, align 8, !tbaa !125
  store ptr %291, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %292 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %293 = load ptr, ptr %292, align 8, !tbaa !9
  %294 = icmp ne ptr %293, null
  br i1 %294, label %295, label %302

295:                                              ; preds = %289
  %296 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %297 = load ptr, ptr %296, align 8, !tbaa !9
  %298 = load ptr, ptr %297, align 8, !tbaa !110
  %299 = getelementptr inbounds ptr, ptr %298, i64 11
  %300 = load ptr, ptr %299, align 8
  %301 = call noundef ptr %300(ptr noundef nonnull align 8 dereferenceable(16) %297)
  br label %303

302:                                              ; preds = %289
  br label %303

303:                                              ; preds = %302, %295
  %304 = phi ptr [ %301, %295 ], [ null, %302 ]
  store ptr %304, ptr %25, align 8, !tbaa !5
  %305 = load ptr, ptr %25, align 8, !tbaa !5
  %306 = icmp ne ptr %305, null
  br i1 %306, label %307, label %311

307:                                              ; preds = %303
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::DragAction", ptr %308, i32 0, i32 3
  %310 = load ptr, ptr %309, align 8, !tbaa !126
  store ptr %310, ptr %24, align 8, !tbaa !5
  br label %311

311:                                              ; preds = %307, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %312 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %313 = load ptr, ptr %312, align 8, !tbaa !9
  %314 = icmp ne ptr %313, null
  br i1 %314, label %315, label %322

315:                                              ; preds = %311
  %316 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %317 = load ptr, ptr %316, align 8, !tbaa !9
  %318 = load ptr, ptr %317, align 8, !tbaa !110
  %319 = getelementptr inbounds ptr, ptr %318, i64 10
  %320 = load ptr, ptr %319, align 8
  %321 = call noundef ptr %320(ptr noundef nonnull align 8 dereferenceable(16) %317)
  br label %323

322:                                              ; preds = %311
  br label %323

323:                                              ; preds = %322, %315
  %324 = phi ptr [ %321, %315 ], [ null, %322 ]
  store ptr %324, ptr %26, align 8, !tbaa !5
  %325 = load ptr, ptr %26, align 8, !tbaa !5
  %326 = icmp ne ptr %325, null
  br i1 %326, label %327, label %331

327:                                              ; preds = %323
  %328 = load ptr, ptr %26, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::SizeAction", ptr %328, i32 0, i32 3
  %330 = load ptr, ptr %329, align 8, !tbaa !127
  store ptr %330, ptr %24, align 8, !tbaa !5
  br label %331

331:                                              ; preds = %327, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  %332 = load ptr, ptr %24, align 8, !tbaa !5
  %333 = icmp ne ptr %332, null
  br i1 %333, label %334, label %346

334:                                              ; preds = %331
  %335 = load ptr, ptr %24, align 8, !tbaa !5
  %336 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext10IsSelectedEPNS1_6ObjectE(ptr noundef nonnull align 8 dereferenceable(2040) %108, ptr noundef %335)
  br i1 %336, label %346, label %337

337:                                              ; preds = %334
  %338 = load ptr, ptr %24, align 8, !tbaa !5
  %339 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %338)
  br i1 %339, label %340, label %346

340:                                              ; preds = %337
  %341 = load ptr, ptr %24, align 8, !tbaa !5
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = load ptr, ptr %341, align 8, !tbaa !110
  %344 = getelementptr inbounds ptr, ptr %343, i64 4
  %345 = load ptr, ptr %344, align 8
  call void %345(ptr noundef nonnull align 8 dereferenceable(17) %341, ptr noundef %342, i32 noundef 1)
  br label %346

346:                                              ; preds = %340, %337, %334, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %347

347:                                              ; preds = %346, %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %348 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 26
  store ptr %348, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %349 = load ptr, ptr %27, align 8, !tbaa !5
  %350 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %349) #10
  %351 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.72", ptr %28, i32 0, i32 0
  store ptr %350, ptr %351, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %352) #10
  %354 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.72", ptr %29, i32 0, i32 0
  store ptr %353, ptr %354, align 8
  br label %355

355:                                              ; preds = %366, %347
  %356 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br i1 %356, label %358, label %357

357:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %368

358:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  %360 = load ptr, ptr %359, align 8, !tbaa !5
  store ptr %360, ptr %30, align 8, !tbaa !5
  %361 = load ptr, ptr %30, align 8, !tbaa !5
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = load ptr, ptr %361, align 8, !tbaa !110
  %364 = getelementptr inbounds ptr, ptr %363, i64 2
  %365 = load ptr, ptr %364, align 8
  call void %365(ptr noundef nonnull align 8 dereferenceable(16) %361, ptr noundef %362)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %366

366:                                              ; preds = %358
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br label %355

368:                                              ; preds = %357
  %369 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %370 = load ptr, ptr %369, align 8, !tbaa !9
  %371 = icmp ne ptr %370, null
  br i1 %371, label %372, label %381

372:                                              ; preds = %368
  %373 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %374 = load ptr, ptr %373, align 8, !tbaa !9
  %375 = load ptr, ptr %374, align 8, !tbaa !110
  %376 = getelementptr inbounds ptr, ptr %375, i64 4
  %377 = load ptr, ptr %376, align 8
  %378 = call noundef zeroext i1 %377(ptr noundef nonnull align 8 dereferenceable(16) %374, ptr noundef nonnull align 8 dereferenceable(132) %3)
  br i1 %378, label %381, label %379

379:                                              ; preds = %372
  %380 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr null, ptr %380, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %379, %372, %368
  %382 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 18
  %383 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::NavigateAction", ptr %382, i32 0, i32 1
  %384 = load i8, ptr %383, align 8, !tbaa !128, !range !117, !noundef !118
  %385 = trunc i8 %384 to i1
  br i1 %385, label %386, label %389

386:                                              ; preds = %381
  %387 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 18
  %388 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail14NavigateAction7ProcessERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184) %387, ptr noundef nonnull align 8 dereferenceable(132) %3)
  br label %392

389:                                              ; preds = %381
  %390 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 18
  %391 = call noundef i32 @_ZN3vox10NodeEditor6Detail14NavigateAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184) %390, ptr noundef nonnull align 8 dereferenceable(132) %3)
  br label %392

392:                                              ; preds = %389, %386
  %393 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %394 = load ptr, ptr %393, align 8, !tbaa !9
  %395 = icmp eq ptr null, %394
  br i1 %395, label %396, label %468

396:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #10
  %397 = getelementptr inbounds %class.anon.73, ptr %32, i32 0, i32 0
  store ptr %31, ptr %397, align 8, !tbaa !5
  %398 = getelementptr inbounds %class.anon.73, ptr %32, i32 0, i32 1
  store ptr %3, ptr %398, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 22
  %400 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %399)
  br i1 %400, label %401, label %404

401:                                              ; preds = %396
  %402 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 22
  %403 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %402, ptr %403, align 8, !tbaa !9
  br label %446

404:                                              ; preds = %396
  %405 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 23
  %406 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %405)
  br i1 %406, label %407, label %410

407:                                              ; preds = %404
  %408 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 23
  %409 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %408, ptr %409, align 8, !tbaa !9
  br label %445

410:                                              ; preds = %404
  %411 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 19
  %412 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %411)
  br i1 %412, label %413, label %416

413:                                              ; preds = %410
  %414 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 19
  %415 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %414, ptr %415, align 8, !tbaa !9
  br label %444

416:                                              ; preds = %410
  %417 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 20
  %418 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %417)
  br i1 %418, label %419, label %422

419:                                              ; preds = %416
  %420 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 20
  %421 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %420, ptr %421, align 8, !tbaa !9
  br label %443

422:                                              ; preds = %416
  %423 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 21
  %424 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %423)
  br i1 %424, label %425, label %428

425:                                              ; preds = %422
  %426 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 21
  %427 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %426, ptr %427, align 8, !tbaa !9
  br label %442

428:                                              ; preds = %422
  %429 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 24
  %430 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %429)
  br i1 %430, label %431, label %434

431:                                              ; preds = %428
  %432 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 24
  %433 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %432, ptr %433, align 8, !tbaa !9
  br label %441

434:                                              ; preds = %428
  %435 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 25
  %436 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(16) %435)
  br i1 %436, label %437, label %440

437:                                              ; preds = %434
  %438 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 25
  %439 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  store ptr %438, ptr %439, align 8, !tbaa !9
  br label %440

440:                                              ; preds = %437, %434
  br label %441

441:                                              ; preds = %440, %431
  br label %442

442:                                              ; preds = %441, %425
  br label %443

443:                                              ; preds = %442, %419
  br label %444

444:                                              ; preds = %443, %413
  br label %445

445:                                              ; preds = %444, %407
  br label %446

446:                                              ; preds = %445, %401
  %447 = load ptr, ptr %31, align 8, !tbaa !5
  %448 = icmp ne ptr %447, null
  br i1 %448, label %449, label %455

449:                                              ; preds = %446
  %450 = load ptr, ptr %31, align 8, !tbaa !5
  %451 = load ptr, ptr %450, align 8, !tbaa !110
  %452 = getelementptr inbounds ptr, ptr %451, i64 6
  %453 = load ptr, ptr %452, align 8
  %454 = call noundef i32 %453(ptr noundef nonnull align 8 dereferenceable(16) %450)
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef %454)
  br label %455

455:                                              ; preds = %449, %446
  %456 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %457 = load ptr, ptr %456, align 8, !tbaa !9
  %458 = icmp ne ptr %457, null
  br i1 %458, label %459, label %467

459:                                              ; preds = %455
  %460 = load ptr, ptr %31, align 8, !tbaa !5
  %461 = icmp ne ptr %460, null
  br i1 %461, label %462, label %467

462:                                              ; preds = %459
  %463 = load ptr, ptr %31, align 8, !tbaa !5
  %464 = load ptr, ptr %463, align 8, !tbaa !110
  %465 = getelementptr inbounds ptr, ptr %464, i64 5
  %466 = load ptr, ptr %465, align 8
  call void %466(ptr noundef nonnull align 8 dereferenceable(16) %463)
  br label %467

467:                                              ; preds = %462, %459, %455
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %468

468:                                              ; preds = %467, %392
  %469 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %470 = load ptr, ptr %469, align 8, !tbaa !9
  %471 = icmp ne ptr %470, null
  br i1 %471, label %472, label %479

472:                                              ; preds = %468
  %473 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %474 = load ptr, ptr %473, align 8, !tbaa !9
  %475 = load ptr, ptr %474, align 8, !tbaa !110
  %476 = getelementptr inbounds ptr, ptr %475, i64 6
  %477 = load ptr, ptr %476, align 8
  %478 = call noundef i32 %477(ptr noundef nonnull align 8 dereferenceable(16) %474)
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef %478)
  br label %479

479:                                              ; preds = %472, %468
  %480 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 21
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3vox10NodeEditor6Detail12SelectAction4DrawEP10ImDrawList(ptr noundef nonnull align 8 dereferenceable(120) %480, ptr noundef %481)
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #10
  store i8 0, ptr %33, align 1, !tbaa !122
  %482 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 5
  %483 = load ptr, ptr %482, align 8, !tbaa !129
  %484 = icmp ne ptr %483, null
  br i1 %484, label %485, label %557

485:                                              ; preds = %479
  %486 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 5
  %487 = load ptr, ptr %486, align 8, !tbaa !129
  %488 = call noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef %487)
  br i1 %488, label %516, label %489

489:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %490 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %491 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %490) #10
  %492 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %35, i32 0, i32 0
  store ptr %491, ptr %492, align 8
  %493 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %494 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %493) #10
  %495 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %36, i32 0, i32 0
  store ptr %494, ptr %495, align 8
  %496 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 5
  %497 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %35, i32 0, i32 0
  %498 = load ptr, ptr %497, align 8
  %499 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %36, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8
  %501 = call ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPS6_ET_SF_SF_RKT0_(ptr %498, ptr %500, ptr noundef nonnull align 8 dereferenceable(8) %496)
  %502 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %34, i32 0, i32 0
  store ptr %501, ptr %502, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %37, ptr align 8 %34, i64 8, i1 false), !tbaa.struct !130
  %503 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %34, i64 noundef 1) #10
  %504 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %38, i32 0, i32 0
  store ptr %503, ptr %504, align 8
  %505 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %506 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %505) #10
  %507 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %39, i32 0, i32 0
  store ptr %506, ptr %507, align 8
  %508 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %37, i32 0, i32 0
  %509 = load ptr, ptr %508, align 8
  %510 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %38, i32 0, i32 0
  %511 = load ptr, ptr %510, align 8
  %512 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %39, i32 0, i32 0
  %513 = load ptr, ptr %512, align 8
  %514 = call ptr @_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS5_4NodeENS4_6NodeIdEEESt6vectorIS9_SaIS9_EEEEEET_SF_SF_SF_(ptr %509, ptr %511, ptr %513)
  %515 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %40, i32 0, i32 0
  store ptr %514, ptr %515, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %556

516:                                              ; preds = %485
  %517 = load i8, ptr %9, align 1, !tbaa !122, !range !117, !noundef !118
  %518 = trunc i8 %517 to i1
  br i1 %518, label %555, label %519

519:                                              ; preds = %516
  %520 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %521 = load ptr, ptr %520, align 8, !tbaa !9
  %522 = icmp ne ptr %521, null
  br i1 %522, label %523, label %555

523:                                              ; preds = %519
  %524 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %525 = load ptr, ptr %524, align 8, !tbaa !9
  %526 = load ptr, ptr %525, align 8, !tbaa !110
  %527 = getelementptr inbounds ptr, ptr %526, i64 11
  %528 = load ptr, ptr %527, align 8
  %529 = call noundef ptr %528(ptr noundef nonnull align 8 dereferenceable(16) %525)
  %530 = icmp ne ptr %529, null
  br i1 %530, label %531, label %555

531:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #10
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  %532 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Control", ptr %3, i32 0, i32 5
  %533 = load ptr, ptr %532, align 8, !tbaa !129
  invoke void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128) %533, ptr noundef nonnull align 8 dereferenceable(24) %41, i1 noundef zeroext false)
          to label %534 unwind label %551

534:                                              ; preds = %531
  %535 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %536 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %535) #10
  %537 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %44, i32 0, i32 0
  store ptr %536, ptr %537, align 8
  %538 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %539 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %538) #10
  %540 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %45, i32 0, i32 0
  store ptr %539, ptr %540, align 8
  %541 = getelementptr inbounds %class.anon.74, ptr %46, i32 0, i32 0
  store ptr %41, ptr %541, align 8, !tbaa !5
  %542 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %44, i32 0, i32 0
  %543 = load ptr, ptr %542, align 8
  %544 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %45, i32 0, i32 0
  %545 = load ptr, ptr %544, align 8
  %546 = getelementptr inbounds %class.anon.74, ptr %46, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8
  %548 = invoke ptr @"_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_1ET_SG_SG_T0_"(ptr %543, ptr %545, ptr %547)
          to label %549 unwind label %551

549:                                              ; preds = %534
  %550 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %47, i32 0, i32 0
  store ptr %548, ptr %550, align 8
  store i8 1, ptr %33, align 1, !tbaa !122
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #10
  br label %555

551:                                              ; preds = %534, %531
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %42, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %43, align 4
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %3) #10
  br label %863

555:                                              ; preds = %549, %523, %519, %516
  br label %556

556:                                              ; preds = %555, %489
  br label %557

557:                                              ; preds = %556, %479
  %558 = load i8, ptr %33, align 1, !tbaa !122, !range !117, !noundef !118
  %559 = trunc i8 %558 to i1
  br i1 %559, label %567, label %560

560:                                              ; preds = %557
  %561 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 35
  %562 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Settings", ptr %561, i32 0, i32 2
  %563 = load i32, ptr %562, align 4, !tbaa !131
  %564 = call noundef i32 @_ZN3vox10NodeEditororENS0_15SaveReasonFlagsES1_(i32 noundef 2, i32 noundef 4)
  %565 = call noundef i32 @_ZN3vox10NodeEditoranENS0_15SaveReasonFlagsES1_(i32 noundef %563, i32 noundef %564)
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %590

567:                                              ; preds = %560, %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %568 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %569 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %568) #10
  %570 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %49, i32 0, i32 0
  store ptr %569, ptr %570, align 8
  %571 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %572 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %571) #10
  %573 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %50, i32 0, i32 0
  store ptr %572, ptr %573, align 8
  %574 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %49, i32 0, i32 0
  %575 = load ptr, ptr %574, align 8
  %576 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %50, i32 0, i32 0
  %577 = load ptr, ptr %576, align 8
  %578 = call ptr @_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPFbPKS6_EET_SI_SI_T0_(ptr %575, ptr %577, ptr noundef @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE)
  %579 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %48, i32 0, i32 0
  store ptr %578, ptr %579, align 8
  %580 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %581 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %580) #10
  %582 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %51, i32 0, i32 0
  store ptr %581, ptr %582, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %48, i64 8, i1 false), !tbaa.struct !130
  %583 = getelementptr inbounds %class.anon.75, ptr %53, i32 0, i32 0
  store ptr %108, ptr %583, align 8, !tbaa !132
  %584 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %51, i32 0, i32 0
  %585 = load ptr, ptr %584, align 8
  %586 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %52, i32 0, i32 0
  %587 = load ptr, ptr %586, align 8
  %588 = getelementptr inbounds %class.anon.75, ptr %53, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_2EvT_SG_T0_"(ptr %585, ptr %587, ptr %589)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %590

590:                                              ; preds = %567, %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #10
  %591 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %592 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %591) #10
  %593 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %55, i32 0, i32 0
  store ptr %592, ptr %593, align 8
  %594 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %595 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %594) #10
  %596 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %56, i32 0, i32 0
  store ptr %595, ptr %596, align 8
  %597 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %55, i32 0, i32 0
  %598 = load ptr, ptr %597, align 8
  %599 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %56, i32 0, i32 0
  %600 = load ptr, ptr %599, align 8
  %601 = call noundef i64 @"_ZSt8count_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_3ENSt15iterator_traitsIT_E15difference_typeESH_SH_T0_"(ptr %598, ptr %600)
  %602 = trunc i64 %601 to i32
  store i32 %602, ptr %54, align 4, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImDrawList, ptr %603, i32 0, i32 13
  %605 = getelementptr inbounds %struct.ImDrawListSplitter, ptr %604, i32 0, i32 1
  %606 = load i32, ptr %605, align 4, !tbaa !135
  store i32 %606, ptr %58, align 4, !tbaa !134
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.ImDrawList, ptr %608, i32 0, i32 13
  %610 = getelementptr inbounds %struct.ImDrawListSplitter, ptr %609, i32 0, i32 1
  %611 = load i32, ptr %610, align 4, !tbaa !135
  %612 = load i32, ptr %54, align 4, !tbaa !134
  %613 = mul nsw i32 5, %612
  %614 = add nsw i32 %611, %613
  %615 = add nsw i32 %614, 4
  call void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef %607, i32 noundef %615)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %616 = load i32, ptr %58, align 4, !tbaa !134
  store i32 %616, ptr %59, align 4, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #10
  %617 = getelementptr inbounds %class.anon.78, ptr %60, i32 0, i32 0
  store ptr %59, ptr %617, align 8, !tbaa !5
  %618 = getelementptr inbounds %class.anon.78, ptr %60, i32 0, i32 1
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %619, ptr %618, align 8, !tbaa !144
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %620 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %621 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %620) #10
  %622 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %62, i32 0, i32 0
  store ptr %621, ptr %622, align 8
  %623 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %624 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %623) #10
  %625 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %63, i32 0, i32 0
  store ptr %624, ptr %625, align 8
  %626 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %62, i32 0, i32 0
  %627 = load ptr, ptr %626, align 8
  %628 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %63, i32 0, i32 0
  %629 = load ptr, ptr %628, align 8
  %630 = call ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_5ET_SG_SG_T0_"(ptr %627, ptr %629)
  %631 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %61, i32 0, i32 0
  store ptr %630, ptr %631, align 8
  %632 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %633 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %632) #10
  %634 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %65, i32 0, i32 0
  store ptr %633, ptr %634, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %66, ptr align 8 %61, i64 8, i1 false), !tbaa.struct !130
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %67, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !146
  %635 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %65, i32 0, i32 0
  %636 = load ptr, ptr %635, align 8
  %637 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %66, i32 0, i32 0
  %638 = load ptr, ptr %637, align 8
  %639 = getelementptr inbounds { ptr, ptr }, ptr %67, i32 0, i32 0
  %640 = load ptr, ptr %639, align 8
  %641 = getelementptr inbounds { ptr, ptr }, ptr %67, i32 0, i32 1
  %642 = load ptr, ptr %641, align 8
  %643 = call { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr %636, ptr %638, ptr %640, ptr %642)
  %644 = getelementptr inbounds { ptr, ptr }, ptr %68, i32 0, i32 0
  %645 = extractvalue { ptr, ptr } %643, 0
  store ptr %645, ptr %644, align 8
  %646 = getelementptr inbounds { ptr, ptr }, ptr %68, i32 0, i32 1
  %647 = extractvalue { ptr, ptr } %643, 1
  store ptr %647, ptr %646, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  store i32 0, ptr %69, align 4, !tbaa !134
  br label %648

648:                                              ; preds = %657, %590
  %649 = load i32, ptr %69, align 4, !tbaa !134
  %650 = icmp slt i32 %649, 4
  br i1 %650, label %652, label %651

651:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  br label %662

652:                                              ; preds = %648
  %653 = load ptr, ptr %4, align 8, !tbaa !5
  %654 = load i32, ptr %69, align 4, !tbaa !134
  %655 = add nsw i32 6, %654
  %656 = load i32, ptr %59, align 4, !tbaa !134
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %653, i32 noundef %655, i32 noundef %656)
  br label %657

657:                                              ; preds = %652
  %658 = load i32, ptr %69, align 4, !tbaa !134
  %659 = add nsw i32 %658, 1
  store i32 %659, ptr %69, align 4, !tbaa !134
  %660 = load i32, ptr %59, align 4, !tbaa !134
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %59, align 4, !tbaa !134
  br label %648, !llvm.loop !147

662:                                              ; preds = %651
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %70, ptr align 8 %61, i64 8, i1 false), !tbaa.struct !130
  %663 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 4
  %664 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %663) #10
  %665 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %71, i32 0, i32 0
  store ptr %664, ptr %665, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %60, i64 16, i1 false), !tbaa.struct !146
  %666 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %70, i32 0, i32 0
  %667 = load ptr, ptr %666, align 8
  %668 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.69", ptr %71, i32 0, i32 0
  %669 = load ptr, ptr %668, align 8
  %670 = getelementptr inbounds { ptr, ptr }, ptr %72, i32 0, i32 0
  %671 = load ptr, ptr %670, align 8
  %672 = getelementptr inbounds { ptr, ptr }, ptr %72, i32 0, i32 1
  %673 = load ptr, ptr %672, align 8
  %674 = call { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr %667, ptr %669, ptr %671, ptr %673)
  %675 = getelementptr inbounds { ptr, ptr }, ptr %73, i32 0, i32 0
  %676 = extractvalue { ptr, ptr } %674, 0
  store ptr %676, ptr %675, align 8
  %677 = getelementptr inbounds { ptr, ptr }, ptr %73, i32 0, i32 1
  %678 = extractvalue { ptr, ptr } %674, 1
  store ptr %678, ptr %677, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  %679 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %679, i32 noundef 2)
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %680 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %681 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK7ImGuiEx6Canvas10ViewOriginEv(ptr noundef nonnull align 8 dereferenceable(172) %680)
  %682 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %683 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %682)
  %684 = fdiv float 1.000000e+00, %683
  %685 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %681, float noundef %684)
  store <2 x float> %685, ptr %74, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #10
  %686 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %687 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %686)
  %688 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %689 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %688)
  %690 = fmul float %687, %689
  %691 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %690, float noundef 0.000000e+00, float noundef 1.000000e+00)
  %692 = call noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorEf(ptr noundef nonnull align 8 dereferenceable(2040) %108, i32 noundef 1, float noundef %691)
  store i32 %692, ptr %75, align 4, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #10
  store float 3.200000e+01, ptr %76, align 4, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  store float 3.200000e+01, ptr %77, align 4, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %693 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %694 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172) %693)
  %695 = getelementptr inbounds %struct.ImRect, ptr %694, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 4 %695, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  %696 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %697 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172) %696)
  %698 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %697)
  store <2 x float> %698, ptr %79, align 4
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %700 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %78, ptr noundef nonnull align 4 dereferenceable(8) %79)
  store <2 x float> %700, ptr %80, align 4
  %701 = call noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorE(ptr noundef nonnull align 8 dereferenceable(2040) %108, i32 noundef 0)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %699, ptr noundef nonnull align 4 dereferenceable(8) %78, ptr noundef nonnull align 4 dereferenceable(8) %80, i32 noundef %701, float noundef 0.000000e+00, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %702 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 0
  %703 = load float, ptr %702, align 4, !tbaa !151
  %704 = load float, ptr %76, align 4, !tbaa !149
  %705 = call float @fmodf(float noundef %703, float noundef %704) #10
  store float %705, ptr %81, align 4, !tbaa !149
  br label %706

706:                                              ; preds = %721, %662
  %707 = load float, ptr %81, align 4, !tbaa !149
  %708 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 0
  %709 = load float, ptr %708, align 4, !tbaa !151
  %710 = fcmp olt float %707, %709
  br i1 %710, label %712, label %711

711:                                              ; preds = %706
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %725

712:                                              ; preds = %706
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  %714 = load float, ptr %81, align 4, !tbaa !149
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %83, float noundef %714, float noundef 0.000000e+00)
  %715 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %715, ptr %82, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  %716 = load float, ptr %81, align 4, !tbaa !149
  %717 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 1
  %718 = load float, ptr %717, align 4, !tbaa !152
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %85, float noundef %716, float noundef %718)
  %719 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %719, ptr %84, align 4
  %720 = load i32, ptr %75, align 4, !tbaa !134
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %713, ptr noundef nonnull align 4 dereferenceable(8) %82, ptr noundef nonnull align 4 dereferenceable(8) %84, i32 noundef %720, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %721

721:                                              ; preds = %712
  %722 = load float, ptr %76, align 4, !tbaa !149
  %723 = load float, ptr %81, align 4, !tbaa !149
  %724 = fadd float %723, %722
  store float %724, ptr %81, align 4, !tbaa !149
  br label %706, !llvm.loop !153

725:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  %726 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !152
  %728 = load float, ptr %77, align 4, !tbaa !149
  %729 = call float @fmodf(float noundef %727, float noundef %728) #10
  store float %729, ptr %86, align 4, !tbaa !149
  br label %730

730:                                              ; preds = %745, %725
  %731 = load float, ptr %86, align 4, !tbaa !149
  %732 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 1
  %733 = load float, ptr %732, align 4, !tbaa !152
  %734 = fcmp olt float %731, %733
  br i1 %734, label %736, label %735

735:                                              ; preds = %730
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  br label %749

736:                                              ; preds = %730
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %738 = load float, ptr %86, align 4, !tbaa !149
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %88, float noundef 0.000000e+00, float noundef %738)
  %739 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %88, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %739, ptr %87, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  %740 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 0
  %741 = load float, ptr %740, align 4, !tbaa !151
  %742 = load float, ptr %86, align 4, !tbaa !149
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %90, float noundef %741, float noundef %742)
  %743 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %90, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %743, ptr %89, align 4
  %744 = load i32, ptr %75, align 4, !tbaa !134
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %737, ptr noundef nonnull align 4 dereferenceable(8) %87, ptr noundef nonnull align 4 dereferenceable(8) %89, i32 noundef %744, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %745

745:                                              ; preds = %736
  %746 = load float, ptr %77, align 4, !tbaa !149
  %747 = load float, ptr %86, align 4, !tbaa !149
  %748 = fadd float %747, %746
  store float %748, ptr %86, align 4, !tbaa !149
  br label %730, !llvm.loop !154

749:                                              ; preds = %735
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #10
  %750 = getelementptr inbounds %class.anon.81, ptr %91, i32 0, i32 0
  store ptr %108, ptr %750, align 8, !tbaa !155
  %751 = getelementptr inbounds %class.anon.81, ptr %91, i32 0, i32 1
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %752, ptr %751, align 8, !tbaa !157
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %753, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.ImDrawList, ptr %754, i32 0, i32 13
  %756 = getelementptr inbounds %struct.ImDrawListSplitter, ptr %755, i32 0, i32 1
  %757 = load i32, ptr %756, align 4, !tbaa !135
  store i32 %757, ptr %92, align 4, !tbaa !134
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = load i32, ptr %92, align 4, !tbaa !134
  %760 = add nsw i32 %759, 3
  call void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef %758, i32 noundef %760)
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = load i32, ptr %92, align 4, !tbaa !134
  %763 = add nsw i32 %762, 0
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %761, i32 noundef 3, i32 noundef %763)
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  %765 = load i32, ptr %92, align 4, !tbaa !134
  %766 = add nsw i32 %765, 1
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %764, i32 noundef 4, i32 noundef %766)
  %767 = load ptr, ptr %4, align 8, !tbaa !5
  %768 = load i32, ptr %92, align 4, !tbaa !134
  %769 = add nsw i32 %768, 2
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %767, i32 noundef 1, i32 noundef %769)
  %770 = load i32, ptr %92, align 4, !tbaa !134
  %771 = add nsw i32 %770, 0
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %91, i32 noundef %771)
  %772 = load i32, ptr %92, align 4, !tbaa !134
  %773 = add nsw i32 %772, 1
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %91, i32 noundef %773)
  %774 = load i32, ptr %92, align 4, !tbaa !134
  %775 = add nsw i32 %774, 2
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %91, i32 noundef %775)
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #10
  call void @_ZN3vox10NodeEditor6Detail13EditorContext16UpdateAnimationsEv(ptr noundef nonnull align 8 dereferenceable(2040) %108)
  %776 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10ImDrawList13ChannelsMergeEv(ptr noundef nonnull align 8 dereferenceable(196) %776)
  %777 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 14
  %778 = load i8, ptr %777, align 8, !tbaa !158, !range !117, !noundef !118
  %779 = trunc i8 %778 to i1
  br i1 %779, label %780, label %782

780:                                              ; preds = %749
  %781 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  call void @_ZN7ImGuiEx6Canvas3EndEv(ptr noundef nonnull align 8 dereferenceable(172) %781)
  br label %782

782:                                              ; preds = %780, %749
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 38
  call void @_ZL23ImDrawList_SwapSplitterP10ImDrawListR18ImDrawListSplitter(ptr noundef %783, ptr noundef nonnull align 8 dereferenceable(24) %784)
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %785 = call noundef nonnull align 4 dereferenceable(1048) ptr @_ZN5ImGui8GetStyleEv()
  store ptr %785, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #10
  %786 = load ptr, ptr %93, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiStyle, ptr %786, i32 0, i32 40
  %788 = getelementptr inbounds [53 x %struct.ImVec4], ptr %787, i64 0, i64 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %94, ptr align 4 %788, i64 16, i1 false), !tbaa.struct !159
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #10
  %789 = load ptr, ptr %93, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiStyle, ptr %789, i32 0, i32 40
  %791 = getelementptr inbounds [53 x %struct.ImVec4], ptr %790, i64 0, i64 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %95, ptr align 4 %791, i64 16, i1 false), !tbaa.struct !159
  %792 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %793 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %794 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %793)
  %795 = getelementptr inbounds %struct.ImRect, ptr %794, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %97, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %796 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %795, ptr noundef nonnull align 4 dereferenceable(8) %97)
  store <2 x float> %796, ptr %96, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  %797 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %798 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %797)
  %799 = getelementptr inbounds %struct.ImRect, ptr %798, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %99, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %800 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %799, ptr noundef nonnull align 4 dereferenceable(8) %99)
  store <2 x float> %800, ptr %98, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %100) #10
  call void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %100, ptr noundef nonnull align 4 dereferenceable(16) %94)
  %801 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %100)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %792, ptr noundef nonnull align 4 dereferenceable(8) %96, ptr noundef nonnull align 4 dereferenceable(8) %98, i32 noundef %801, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %804 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %803)
  %805 = getelementptr inbounds %struct.ImRect, ptr %804, i32 0, i32 0
  %806 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 13
  %807 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %806)
  %808 = getelementptr inbounds %struct.ImRect, ptr %807, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #10
  call void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %101, ptr noundef nonnull align 4 dereferenceable(16) %95)
  %809 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %101)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %802, ptr noundef nonnull align 4 dereferenceable(8) %805, ptr noundef nonnull align 4 dereferenceable(8) %808, i32 noundef %809, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @_ZN5ImGui5PopIDEv()
  %810 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %811 = load ptr, ptr %810, align 8, !tbaa !9
  %812 = icmp ne ptr %811, null
  br i1 %812, label %848, label %813

813:                                              ; preds = %782
  %814 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 0
  %815 = load i8, ptr %814, align 8, !tbaa !160, !range !117, !noundef !118
  %816 = trunc i8 %815 to i1
  br i1 %816, label %817, label %848

817:                                              ; preds = %813
  %818 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 35
  %819 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Settings", ptr %818, i32 0, i32 4
  %820 = call noundef zeroext i1 @_ZNKSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %819) #10
  br i1 %820, label %848, label %821

821:                                              ; preds = %817
  call void @_ZN3vox10NodeEditor6Detail13EditorContext14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(2040) %108)
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %822 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 35
  %823 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Settings", ptr %822, i32 0, i32 4
  store ptr %823, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #10
  %824 = load ptr, ptr %102, align 8, !tbaa !5
  %825 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %824) #10
  %826 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.82", ptr %103, i32 0, i32 0
  store ptr %825, ptr %826, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %827 = load ptr, ptr %102, align 8, !tbaa !5
  %828 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %827) #10
  %829 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.82", ptr %104, i32 0, i32 0
  store ptr %828, ptr %829, align 8
  br label %830

830:                                              ; preds = %845, %821
  %831 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %104) #10
  br i1 %831, label %833, label %832

832:                                              ; preds = %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  br label %847

833:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #10
  %834 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %834, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %107, ptr align 8 %105, i64 16, i1 false)
  %835 = getelementptr inbounds { i64, i32 }, ptr %107, i32 0, i32 0
  %836 = load i64, ptr %835, align 8
  %837 = getelementptr inbounds { i64, i32 }, ptr %107, i32 0, i32 1
  %838 = load i32, ptr %837, align 8
  %839 = call noundef ptr @_ZN3vox10NodeEditor6Detail13EditorContext10FindObjectENS1_8ObjectIdE(ptr noundef nonnull align 8 dereferenceable(2040) %108, i64 %836, i32 %838)
  store ptr %839, ptr %106, align 8, !tbaa !5
  %840 = load ptr, ptr %106, align 8, !tbaa !5
  %841 = icmp ne ptr %840, null
  br i1 %841, label %842, label %844

842:                                              ; preds = %833
  %843 = load ptr, ptr %106, align 8, !tbaa !5
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12SelectObjectEPNS1_6ObjectE(ptr noundef nonnull align 8 dereferenceable(2040) %108, ptr noundef %843)
  br label %844

844:                                              ; preds = %842, %833
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #10
  br label %845

845:                                              ; preds = %844
  %846 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  br label %830

847:                                              ; preds = %832
  br label %848

848:                                              ; preds = %847, %817, %813, %782
  %849 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext19HasSelectionChangedEv(ptr noundef nonnull align 8 dereferenceable(2040) %108)
  br i1 %849, label %850, label %851

850:                                              ; preds = %848
  call void @_ZN3vox10NodeEditor6Detail13EditorContext9MakeDirtyENS0_15SaveReasonFlagsE(ptr noundef nonnull align 8 dereferenceable(2040) %108, i32 noundef 8)
  br label %851

851:                                              ; preds = %850, %848
  %852 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 35
  %853 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::Settings", ptr %852, i32 0, i32 0
  %854 = load i8, ptr %853, align 8, !tbaa !161, !range !117, !noundef !118
  %855 = trunc i8 %854 to i1
  br i1 %855, label %856, label %861

856:                                              ; preds = %851
  %857 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 17
  %858 = load ptr, ptr %857, align 8, !tbaa !9
  %859 = icmp ne ptr %858, null
  br i1 %859, label %861, label %860

860:                                              ; preds = %856
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12SaveSettingsEv(ptr noundef nonnull align 8 dereferenceable(2040) %108)
  br label %861

861:                                              ; preds = %860, %856, %851
  %862 = getelementptr inbounds %"struct.vox::NodeEditor::Detail::EditorContext", ptr %108, i32 0, i32 0
  store i8 0, ptr %862, align 8, !tbaa !160
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %3) #10
  ret void

863:                                              ; preds = %551
  %864 = load ptr, ptr %42, align 8
  %865 = load i32, ptr %43, align 4
  %866 = insertvalue { ptr, i32 } poison, ptr %864, 0
  %867 = insertvalue { ptr, i32 } %866, i32 %865, 1
  resume { ptr, i32 } %867
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext12BuildControlEb(ptr dead_on_unwind noalias writable sret(%"struct.vox::NodeEditor::Detail::Control") align 8, ptr noundef nonnull align 8 dereferenceable(2040), i1 noundef zeroext) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17)) #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3vox10NodeEditor6Detail14NavigateAction7ProcessERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(132)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditor6Detail14NavigateAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(132)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

declare void @_ZN5ImGui14SetMouseCursorEi(i32 noundef) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPS6_ET_SF_SF_RKT0_(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS5_4NodeENS4_6NodeIdEEESt6vectorIS9_SaIS9_EEEEEET_SF_SF_SF_(ptr, ptr, ptr) #0

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_1ET_SG_SG_T0_"(ptr, ptr, ptr) #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditoranENS0_15SaveReasonFlagsES1_(i32 noundef, i32 noundef) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditororENS0_15SaveReasonFlagsES1_(i32 noundef, i32 noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPFbPKS6_EET_SI_SI_T0_(ptr, ptr, ptr noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_2EvT_SG_T0_"(ptr, ptr, ptr) #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @"_ZSt8count_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_3ENSt15iterator_traitsIT_E15difference_typeESH_SH_T0_"(ptr, ptr) #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_5ET_SG_SG_T0_"(ptr, ptr) #0

; Function Attrs: mustprogress uwtable
declare hidden { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr, ptr, ptr, ptr) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef, i32 noundef, i32 noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorEf(ptr noundef nonnull align 8 dereferenceable(2040), i32 noundef, float noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) #8

; Function Attrs: nounwind
declare float @fmodf(float noundef, float noundef) #9

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13ChannelsMergeEv(ptr noundef nonnull align 8 dereferenceable(196)) #0 align 2

declare void @_ZN7ImGuiEx6Canvas3EndEv(ptr noundef nonnull align 8 dereferenceable(172)) #1

declare noundef nonnull align 4 dereferenceable(1048) ptr @_ZN5ImGui8GetStyleEv() #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16)) #0 align 2

declare void @_ZN5ImGui5PopIDEv() #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN3vox10NodeEditor6Detail13EditorContext10FindObjectENS1_8ObjectIdE(ptr noundef nonnull align 8 dereferenceable(2040), i64, i32) #3 align 2

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

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

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

attributes #0 = { 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 #1 = { "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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="64" "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"="64" "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 = { 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 #8 = { 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 #9 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { 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 1024}
!10 = !{!"_ZTSN3vox10NodeEditor6Detail13EditorContextE", !11, i64 0, !11, i64 1, !11, i64 2, !12, i64 8, !25, i64 472, !29, i64 496, !33, i64 520, !37, i64 544, !37, i64 568, !41, i64 592, !6, i64 600, !42, i64 608, !42, i64 632, !46, i64 656, !11, i64 832, !50, i64 840, !53, i64 992, !6, i64 1024, !54, i64 1032, !60, i64 1216, !62, i64 1312, !63, i64 1368, !64, i64 1488, !70, i64 1528, !72, i64 1576, !76, i64 1664, !79, i64 1752, !83, i64 1776, !89, i64 1840, !92, i64 1848, !95, i64 1856, !11, i64 1864, !11, i64 1865, !11, i64 1866, !98, i64 1872, !108, i64 1944, !48, i64 2008, !51, i64 2016}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN3vox10NodeEditor6Detail5StyleE", !13, i64 0, !17, i64 416, !21, i64 440}
!13 = !{!"_ZTSN3vox10NodeEditor5StyleE", !14, i64 0, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36, !15, i64 40, !16, i64 44, !16, i64 52, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !15, i64 100, !15, i64 104, !15, i64 108, !15, i64 112, !15, i64 116, !15, i64 120, !7, i64 124}
!14 = !{!"_ZTS6ImVec4", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!17 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"long", !7, i64 0}
!42 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSN7ImGuiEx6CanvasE", !11, i64 0, !16, i64 4, !16, i64 12, !47, i64 20, !6, i64 40, !48, i64 48, !48, i64 52, !48, i64 56, !49, i64 60, !47, i64 76, !16, i64 92, !48, i64 100, !15, i64 104, !16, i64 108, !16, i64 116, !7, i64 124, !16, i64 164}
!47 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!48 = !{!"int", !7, i64 0}
!49 = !{!"_ZTSN7ImGuiEx10CanvasViewE", !16, i64 0, !15, i64 8, !15, i64 12}
!50 = !{!"_ZTSN3vox10NodeEditor6Detail11NodeBuilderE", !6, i64 0, !6, i64 8, !6, i64 16, !47, i64 24, !47, i64 40, !16, i64 56, !16, i64 64, !16, i64 72, !11, i64 80, !11, i64 81, !47, i64 84, !11, i64 100, !51, i64 104, !51, i64 128}
!51 = !{!"_ZTS18ImDrawListSplitter", !48, i64 0, !48, i64 4, !52, i64 8}
!52 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !48, i64 0, !48, i64 4, !6, i64 8}
!53 = !{!"_ZTSN3vox10NodeEditor6Detail11HintBuilderE", !6, i64 0, !11, i64 8, !6, i64 16, !15, i64 24, !48, i64 28}
!54 = !{!"_ZTSN3vox10NodeEditor6Detail14NavigateActionE", !55, i64 0, !11, i64 16, !15, i64 20, !16, i64 24, !16, i64 32, !16, i64 40, !6, i64 48, !16, i64 56, !16, i64 64, !56, i64 72, !59, i64 144, !41, i64 152, !6, i64 160, !11, i64 168, !16, i64 172}
!55 = !{!"_ZTSN3vox10NodeEditor6Detail12EditorActionE", !6, i64 8}
!56 = !{!"_ZTSN3vox10NodeEditor6Detail17NavigateAnimationE", !57, i64 0, !6, i64 32, !47, i64 40, !47, i64 56}
!57 = !{!"_ZTSN3vox10NodeEditor6Detail9AnimationE", !6, i64 8, !58, i64 16, !15, i64 20, !15, i64 24}
!58 = !{!"_ZTSN3vox10NodeEditor6Detail9Animation5StateE", !7, i64 0}
!59 = !{!"_ZTSN3vox10NodeEditor6Detail14NavigateAction16NavigationReasonE", !7, i64 0}
!60 = !{!"_ZTSN3vox10NodeEditor6Detail10SizeActionE", !55, i64 0, !11, i64 16, !11, i64 17, !6, i64 24, !47, i64 32, !47, i64 48, !16, i64 64, !16, i64 72, !16, i64 80, !61, i64 88, !48, i64 92}
!61 = !{!"_ZTSN3vox10NodeEditor6Detail10NodeRegionE", !7, i64 0}
!62 = !{!"_ZTSN3vox10NodeEditor6Detail10DragActionE", !55, i64 0, !11, i64 16, !11, i64 17, !6, i64 24, !37, i64 32}
!63 = !{!"_ZTSN3vox10NodeEditor6Detail12SelectActionE", !55, i64 0, !11, i64 16, !11, i64 17, !11, i64 18, !11, i64 19, !16, i64 20, !16, i64 28, !37, i64 40, !37, i64 64, !57, i64 88}
!64 = !{!"_ZTSN3vox10NodeEditor6Detail17ContextMenuActionE", !55, i64 0, !65, i64 16, !65, i64 20, !66, i64 24}
!65 = !{!"_ZTSN3vox10NodeEditor6Detail17ContextMenuAction4MenuE", !7, i64 0}
!66 = !{!"_ZTSN3vox10NodeEditor6Detail8ObjectIdE", !67, i64 0, !69, i64 8}
!67 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6Detail8ObjectIdEEE", !68, i64 0}
!68 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6Detail8ObjectIdEEE", !41, i64 0}
!69 = !{!"_ZTSN3vox10NodeEditor6Detail10ObjectTypeE", !7, i64 0}
!70 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutActionE", !55, i64 0, !11, i64 16, !11, i64 17, !71, i64 20, !37, i64 24}
!71 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutAction6ActionE", !7, i64 0}
!72 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemActionE", !55, i64 0, !11, i64 16, !73, i64 20, !73, i64 24, !74, i64 28, !75, i64 32, !48, i64 36, !15, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !48, i64 80, !11, i64 84}
!73 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction5StageE", !7, i64 0}
!74 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction4TypeE", !7, i64 0}
!75 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction6ActionE", !7, i64 0}
!76 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsActionE", !55, i64 0, !11, i64 16, !11, i64 17, !37, i64 24, !77, i64 48, !78, i64 52, !37, i64 56, !48, i64 80}
!77 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsAction12IteratorTypeE", !7, i64 0}
!78 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsAction10UserActionE", !7, i64 0}
!79 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSN3vox10NodeEditor6Detail23FlowAnimationControllerE", !84, i64 0, !85, i64 16, !85, i64 40}
!84 = !{!"_ZTSN3vox10NodeEditor6Detail19AnimationControllerE", !6, i64 8}
!85 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSN3vox10NodeEditor6NodeIdE", !90, i64 0}
!90 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6NodeIdEEE", !91, i64 0}
!91 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6NodeIdEEE", !41, i64 0}
!92 = !{!"_ZTSN3vox10NodeEditor5PinIdE", !93, i64 0}
!93 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_5PinIdEEE", !94, i64 0}
!94 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_5PinIdEEE", !41, i64 0}
!95 = !{!"_ZTSN3vox10NodeEditor6LinkIdE", !96, i64 0}
!96 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6LinkIdEEE", !97, i64 0}
!97 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6LinkIdEEE", !41, i64 0}
!98 = !{!"_ZTSN3vox10NodeEditor6Detail8SettingsE", !11, i64 0, !99, i64 4, !100, i64 8, !104, i64 32, !16, i64 56, !15, i64 64}
!99 = !{!"_ZTSN3vox10NodeEditor15SaveReasonFlagsE", !7, i64 0}
!100 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!104 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE", !105, i64 0}
!105 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE12_Vector_implE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!108 = !{!"_ZTSN3vox10NodeEditor6Detail6ConfigE", !109, i64 0}
!109 = !{!"_ZTSN3vox10NodeEditor6ConfigE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!110 = !{!111, !111, i64 0}
!111 = !{!"vtable pointer", !8, i64 0}
!112 = !{!113, !6, i64 56}
!113 = !{!"_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, !11, i64 128, !11, i64 129, !11, i64 130, !11, i64 131}
!114 = !{!113, !6, i64 88}
!115 = !{!113, !6, i64 120}
!116 = !{!113, !11, i64 130}
!117 = !{i8 0, i8 2}
!118 = !{}
!119 = !{!10, !11, i64 1864}
!120 = !{!113, !11, i64 131}
!121 = !{!10, !11, i64 1865}
!122 = !{!11, !11, i64 0}
!123 = !{!124, !11, i64 16}
!124 = !{!"_ZTSN3vox10NodeEditor6Detail6ObjectE", !6, i64 8, !11, i64 16}
!125 = !{!113, !6, i64 0}
!126 = !{!62, !6, i64 24}
!127 = !{!60, !6, i64 24}
!128 = !{!10, !11, i64 1048}
!129 = !{!113, !6, i64 40}
!130 = !{i64 0, i64 8, !5}
!131 = !{!10, !99, i64 1876}
!132 = !{!133, !6, i64 0}
!133 = !{!"_ZTSZN3vox10NodeEditor6Detail13EditorContext3EndEvE3$_2", !6, i64 0}
!134 = !{!48, !48, i64 0}
!135 = !{!136, !48, i64 172}
!136 = !{!"_ZTS10ImDrawList", !137, i64 0, !138, i64 16, !139, i64 32, !48, i64 48, !48, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !140, i64 88, !141, i64 104, !142, i64 120, !143, i64 136, !51, i64 168, !15, i64 192}
!137 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !48, i64 0, !48, i64 4, !6, i64 8}
!138 = !{!"_ZTS8ImVectorItE", !48, i64 0, !48, i64 4, !6, i64 8}
!139 = !{!"_ZTS8ImVectorI10ImDrawVertE", !48, i64 0, !48, i64 4, !6, i64 8}
!140 = !{!"_ZTS8ImVectorI6ImVec4E", !48, i64 0, !48, i64 4, !6, i64 8}
!141 = !{!"_ZTS8ImVectorIPvE", !48, i64 0, !48, i64 4, !6, i64 8}
!142 = !{!"_ZTS8ImVectorI6ImVec2E", !48, i64 0, !48, i64 4, !6, i64 8}
!143 = !{!"_ZTS15ImDrawCmdHeader", !14, i64 0, !6, i64 16, !48, i64 24}
!144 = !{!145, !6, i64 8}
!145 = !{!"_ZTSZN3vox10NodeEditor6Detail13EditorContext3EndEvE3$_4", !6, i64 0, !6, i64 8}
!146 = !{i64 0, i64 8, !5, i64 8, i64 8, !5}
!147 = distinct !{!147, !148}
!148 = !{!"llvm.loop.mustprogress"}
!149 = !{!15, !15, i64 0}
!150 = !{i64 0, i64 4, !149, i64 4, i64 4, !149}
!151 = !{!16, !15, i64 0}
!152 = !{!16, !15, i64 4}
!153 = distinct !{!153, !148}
!154 = distinct !{!154, !148}
!155 = !{!156, !6, i64 0}
!156 = !{!"_ZTSZN3vox10NodeEditor6Detail13EditorContext3EndEvE3$_6", !6, i64 0, !6, i64 8}
!157 = !{!156, !6, i64 8}
!158 = !{!10, !11, i64 832}
!159 = !{i64 0, i64 4, !149, i64 4, i64 4, !149, i64 8, i64 4, !149, i64 12, i64 4, !149}
!160 = !{!10, !11, i64 0}
!161 = !{!10, !11, i64 1872}


; 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"

%"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] }>
%"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 }
%"struct.vox::NodeEditor::PinId" = type { %"struct.vox::NodeEditor::Details::SafePointerType" }
%"struct.vox::NodeEditor::Details::SafePointerType" = type { %"struct.vox::NodeEditor::Details::SafeType" }
%"struct.vox::NodeEditor::Details::SafeType" = type { i64 }
%"struct.vox::NodeEditor::LinkId" = type { %"struct.vox::NodeEditor::Details::SafePointerType.50" }
%"struct.vox::NodeEditor::Details::SafePointerType.50" = type { %"struct.vox::NodeEditor::Details::SafeType.51" }
%"struct.vox::NodeEditor::Details::SafeType.51" = type { i64 }
%"class.__gnu_cxx::__normal_iterator.69" = type { ptr }
%"struct.vox::NodeEditor::Detail::ObjectWrapper.70" = type { %"struct.vox::NodeEditor::NodeId", ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.vox::NodeEditor::Detail::ObjectWrapper" = type { %"struct.vox::NodeEditor::LinkId", ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.72" = type { ptr }
%class.anon.73 = type { ptr, 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 }
%struct.ImVec2 = type { float, float }
%class.anon.81 = type { ptr, ptr }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImColor = type { %struct.ImVec4 }
%"class.__gnu_cxx::__normal_iterator.82" = type { ptr }

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196), i32 noundef) local_unnamed_addr #0 align 2

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #1

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

declare void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef, float noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Node4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef, i32 noundef) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorE(ptr noundef nonnull align 8 dereferenceable(2040), i32 noundef) local_unnamed_addr #3 align 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) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail4Link4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef, i32 noundef) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_ZN5ImGui17GetWindowDrawListEv() local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23ImDrawList_SwapSplitterP10ImDrawListR18ImDrawListSplitter(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef, i32 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext3EndEv(ptr noundef nonnull align 8 dereferenceable(2040) %0) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"struct.vox::NodeEditor::Detail::Control", align 8
  %3 = alloca %"struct.vox::NodeEditor::NodeId", align 8
  %4 = alloca %"struct.vox::NodeEditor::PinId", align 8
  %5 = alloca %"struct.vox::NodeEditor::LinkId", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %8 = alloca %"struct.vox::NodeEditor::Detail::ObjectWrapper.70", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"struct.vox::NodeEditor::Detail::ObjectWrapper", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.72", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.72", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %class.anon.73, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.69", align 8
  %19 = alloca %"class.std::vector.62", align 8
  %20 = alloca i32, align 4
  %21 = alloca %struct.ImVec2, align 8
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %class.anon.81, align 8
  %33 = alloca %struct.ImVec4, align 4
  %34 = alloca %struct.ImVec4, align 4
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImColor, align 4
  %40 = alloca %struct.ImColor, align 4
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.82", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.82", align 8
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %2) #10
  %43 = getelementptr inbounds i8, ptr %0, i64 1024
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %.not = icmp eq ptr %44, null
  br i1 %.not, label %50, label %45

45:                                               ; preds = %1
  %46 = load ptr, ptr %44, align 8, !tbaa !109
  %47 = getelementptr inbounds i8, ptr %46, i64 56
  %48 = load ptr, ptr %47, align 8
  %49 = tail call noundef zeroext i1 %48(ptr noundef nonnull align 8 dereferenceable(16) %44)
  br label %50

50:                                               ; preds = %45, %1
  %51 = phi i1 [ false, %1 ], [ %49, %45 ]
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12BuildControlEb(ptr dead_on_unwind nonnull writable sret(%"struct.vox::NodeEditor::Detail::Control") align 8 %2, ptr noundef nonnull align 8 dereferenceable(2040) %0, i1 noundef zeroext %51)
  %52 = call noundef ptr @_ZN5ImGui17GetWindowDrawListEv()
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  %53 = getelementptr inbounds i8, ptr %2, i64 56
  %54 = load ptr, ptr %53, align 8, !tbaa !111
  %.not146 = icmp eq ptr %54, null
  br i1 %.not146, label %57, label %55

55:                                               ; preds = %50
  %56 = getelementptr inbounds i8, ptr %54, i64 24
  br label %58

57:                                               ; preds = %50
  call void @_ZN3vox10NodeEditor6NodeIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0)
  br label %58

58:                                               ; preds = %57, %55
  %.in = phi ptr [ %3, %57 ], [ %56, %55 ]
  %59 = load i64, ptr %.in, align 8
  %60 = getelementptr inbounds i8, ptr %0, i64 1840
  store i64 %59, ptr %60, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  %61 = getelementptr inbounds i8, ptr %2, i64 88
  %62 = load ptr, ptr %61, align 8, !tbaa !113
  %.not147 = icmp eq ptr %62, null
  br i1 %.not147, label %65, label %63

63:                                               ; preds = %58
  %64 = getelementptr inbounds i8, ptr %62, i64 24
  br label %66

65:                                               ; preds = %58
  call void @_ZN3vox10NodeEditor5PinIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0)
  br label %66

66:                                               ; preds = %65, %63
  %.in209 = phi ptr [ %4, %65 ], [ %64, %63 ]
  %67 = load i64, ptr %.in209, align 8
  %68 = getelementptr inbounds i8, ptr %0, i64 1848
  store i64 %67, ptr %68, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %69 = getelementptr inbounds i8, ptr %2, i64 120
  %70 = load ptr, ptr %69, align 8, !tbaa !114
  %.not148 = icmp eq ptr %70, null
  br i1 %.not148, label %73, label %71

71:                                               ; preds = %66
  %72 = getelementptr inbounds i8, ptr %70, i64 24
  br label %74

73:                                               ; preds = %66
  call void @_ZN3vox10NodeEditor6LinkIdCI2NS0_7Details8SafeTypeImS1_EEEm(ptr noundef nonnull align 8 dereferenceable(8) %5, i64 noundef 0)
  br label %74

74:                                               ; preds = %73, %71
  %.in210 = phi ptr [ %5, %73 ], [ %72, %71 ]
  %75 = load i64, ptr %.in210, align 8
  %76 = getelementptr inbounds i8, ptr %0, i64 1856
  store i64 %75, ptr %76, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  %77 = getelementptr inbounds i8, ptr %2, i64 130
  %78 = load i8, ptr %77, align 2, !tbaa !115, !range !116, !noundef !117
  %79 = getelementptr inbounds i8, ptr %0, i64 1864
  store i8 %78, ptr %79, align 8, !tbaa !118
  %80 = getelementptr inbounds i8, ptr %2, i64 131
  %81 = load i8, ptr %80, align 1, !tbaa !119, !range !116, !noundef !117
  %82 = getelementptr inbounds i8, ptr %0, i64 1865
  store i8 %81, ptr %82, align 1, !tbaa !120
  %83 = load ptr, ptr %43, align 8, !tbaa !5
  %.not149 = icmp eq ptr %83, null
  br i1 %.not149, label %.thread, label %84

84:                                               ; preds = %74
  %85 = load ptr, ptr %83, align 8, !tbaa !109
  %86 = getelementptr inbounds i8, ptr %85, i64 96
  %87 = load ptr, ptr %86, align 8
  %88 = call noundef ptr %87(ptr noundef nonnull align 8 dereferenceable(16) %83)
  %89 = icmp ne ptr %88, null
  %.pr = load ptr, ptr %43, align 8, !tbaa !5
  %.not150 = icmp eq ptr %.pr, null
  br i1 %.not150, label %.thread, label %90

90:                                               ; preds = %84
  %91 = load ptr, ptr %.pr, align 8, !tbaa !109
  %92 = getelementptr inbounds i8, ptr %91, i64 88
  %93 = load ptr, ptr %92, align 8
  %94 = call noundef ptr %93(ptr noundef nonnull align 8 dereferenceable(16) %.pr)
  %95 = icmp ne ptr %94, null
  br label %.thread

.thread:                                          ; preds = %74, %90, %84
  %96 = phi i1 [ %89, %84 ], [ %89, %90 ], [ false, %74 ]
  %97 = phi i1 [ false, %84 ], [ %95, %90 ], [ false, %74 ]
  %98 = getelementptr inbounds i8, ptr %0, i64 472
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %99 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  store ptr %99, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %100 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  store ptr %100, ptr %7, align 8
  %101 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br i1 %101, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %116, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %102 = getelementptr inbounds i8, ptr %0, i64 520
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  %103 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #10
  store ptr %103, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %104 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #10
  store ptr %104, ptr %10, align 8
  %105 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  br i1 %105, label %.lr.ph184, label %._crit_edge185

.lr.ph:                                           ; preds = %.thread, %116
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  %106 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %106, i64 16, i1 false)
  %107 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %108 = getelementptr inbounds i8, ptr %107, i64 16
  %109 = load i8, ptr %108, align 8, !tbaa !121, !range !116, !noundef !117
  %110 = trunc nuw i8 %109 to i1
  br i1 %110, label %111, label %116

111:                                              ; preds = %.lr.ph
  %112 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  %113 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %112)
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4NodeENS0_6NodeIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %8)
  call void @_ZN3vox10NodeEditor6Detail4Node4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(128) %115, ptr noundef %52, i32 noundef 0)
  br label %116

116:                                              ; preds = %114, %111, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  %118 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br i1 %118, label %.lr.ph, label %._crit_edge

._crit_edge185:                                   ; preds = %131, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  %119 = getelementptr inbounds i8, ptr %0, i64 544
  %120 = load ptr, ptr %43, align 8, !tbaa !5
  %.not151 = icmp eq ptr %120, null
  br i1 %.not151, label %139, label %134

.lr.ph184:                                        ; preds = %._crit_edge, %131
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  %121 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %121, i64 16, i1 false)
  %122 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %123 = getelementptr inbounds i8, ptr %122, i64 16
  %124 = load i8, ptr %123, align 8, !tbaa !121, !range !116, !noundef !117
  %125 = trunc nuw i8 %124 to i1
  br i1 %125, label %126, label %131

126:                                              ; preds = %.lr.ph184
  %127 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  %128 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %127)
  br i1 %128, label %129, label %131

129:                                              ; preds = %126
  %130 = call noundef ptr @_ZN3vox10NodeEditor6Detail13ObjectWrapperINS1_4LinkENS0_6LinkIdEEptEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
  call void @_ZN3vox10NodeEditor6Detail4Link4DrawEP10ImDrawListNS1_6Object9DrawFlagsE(ptr noundef nonnull align 8 dereferenceable(72) %130, ptr noundef %52, i32 noundef 0)
  br label %131

131:                                              ; preds = %129, %126, %.lr.ph184
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  %133 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4LinkENS2_6LinkIdEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  br i1 %133, label %.lr.ph184, label %._crit_edge185

134:                                              ; preds = %._crit_edge185
  %135 = load ptr, ptr %120, align 8, !tbaa !109
  %136 = getelementptr inbounds i8, ptr %135, i64 96
  %137 = load ptr, ptr %136, align 8
  %138 = call noundef ptr %137(ptr noundef nonnull align 8 dereferenceable(16) %120)
  br label %139

139:                                              ; preds = %._crit_edge185, %134
  %140 = phi ptr [ %138, %134 ], [ null, %._crit_edge185 ]
  %.not152 = icmp eq ptr %140, null
  %141 = getelementptr inbounds i8, ptr %140, i64 40
  %spec.select = select i1 %.not152, ptr %119, ptr %141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %142 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %spec.select) #10
  store ptr %142, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %143 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %spec.select) #10
  store ptr %143, ptr %13, align 8
  %144 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br i1 %144, label %.lr.ph187, label %._crit_edge188

._crit_edge188:                                   ; preds = %152, %139
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br i1 %96, label %183, label %155

.lr.ph187:                                        ; preds = %139, %152
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %146 = load ptr, ptr %145, align 8, !tbaa !123
  %147 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %146)
  br i1 %147, label %148, label %152

148:                                              ; preds = %.lr.ph187
  %149 = load ptr, ptr %146, align 8, !tbaa !109
  %150 = getelementptr inbounds i8, ptr %149, i64 32
  %151 = load ptr, ptr %150, align 8
  call void %151(ptr noundef nonnull align 8 dereferenceable(17) %146, ptr noundef %52, i32 noundef 2)
  br label %152

152:                                              ; preds = %148, %.lr.ph187
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %154 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail6ObjectESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br i1 %154, label %.lr.ph187, label %._crit_edge188

155:                                              ; preds = %._crit_edge188
  %156 = load ptr, ptr %2, align 8, !tbaa !124
  %157 = load ptr, ptr %43, align 8, !tbaa !5
  %.not153 = icmp eq ptr %157, null
  br i1 %.not153, label %.thread177, label %158

158:                                              ; preds = %155
  %159 = load ptr, ptr %157, align 8, !tbaa !109
  %160 = getelementptr inbounds i8, ptr %159, i64 88
  %161 = load ptr, ptr %160, align 8
  %162 = call noundef ptr %161(ptr noundef nonnull align 8 dereferenceable(16) %157)
  %.not154 = icmp eq ptr %162, null
  br i1 %.not154, label %166, label %163

163:                                              ; preds = %158
  %164 = getelementptr inbounds i8, ptr %162, i64 24
  %165 = load ptr, ptr %164, align 8, !tbaa !125
  br label %166

166:                                              ; preds = %163, %158
  %.0122.ph = phi ptr [ %156, %158 ], [ %165, %163 ]
  %.pr172 = load ptr, ptr %43, align 8, !tbaa !5
  %.not155 = icmp eq ptr %.pr172, null
  br i1 %.not155, label %.thread177, label %167

167:                                              ; preds = %166
  %168 = load ptr, ptr %.pr172, align 8, !tbaa !109
  %169 = getelementptr inbounds i8, ptr %168, i64 80
  %170 = load ptr, ptr %169, align 8
  %171 = call noundef ptr %170(ptr noundef nonnull align 8 dereferenceable(16) %.pr172)
  %.not156 = icmp eq ptr %171, null
  br i1 %.not156, label %.thread177, label %172

172:                                              ; preds = %167
  %173 = getelementptr inbounds i8, ptr %171, i64 24
  %174 = load ptr, ptr %173, align 8, !tbaa !126
  br label %.thread177

.thread177:                                       ; preds = %155, %166, %172, %167
  %.1 = phi ptr [ %174, %172 ], [ %.0122.ph, %167 ], [ %.0122.ph, %166 ], [ %156, %155 ]
  %.not157 = icmp eq ptr %.1, null
  br i1 %.not157, label %183, label %175

175:                                              ; preds = %.thread177
  %176 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext10IsSelectedEPNS1_6ObjectE(ptr noundef nonnull align 8 dereferenceable(2040) %0, ptr noundef nonnull %.1)
  br i1 %176, label %183, label %177

177:                                              ; preds = %175
  %178 = call noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17) %.1)
  br i1 %178, label %179, label %183

179:                                              ; preds = %177
  %180 = load ptr, ptr %.1, align 8, !tbaa !109
  %181 = getelementptr inbounds i8, ptr %180, i64 32
  %182 = load ptr, ptr %181, align 8
  call void %182(ptr noundef nonnull align 8 dereferenceable(17) %.1, ptr noundef %52, i32 noundef 1)
  br label %183

183:                                              ; preds = %.thread177, %175, %177, %179, %._crit_edge188
  %184 = getelementptr inbounds i8, ptr %0, i64 1752
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %185 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %184) #10
  store ptr %185, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %186 = call ptr @_ZNSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %184) #10
  store ptr %186, ptr %15, align 8
  %187 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  br i1 %187, label %.lr.ph190, label %._crit_edge191

._crit_edge191:                                   ; preds = %.lr.ph190, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  %188 = load ptr, ptr %43, align 8, !tbaa !5
  %.not158 = icmp eq ptr %188, null
  br i1 %.not158, label %202, label %196

.lr.ph190:                                        ; preds = %183, %.lr.ph190
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  %190 = load ptr, ptr %189, align 8, !tbaa !123
  %191 = load ptr, ptr %190, align 8, !tbaa !109
  %192 = getelementptr inbounds i8, ptr %191, i64 16
  %193 = load ptr, ptr %192, align 8
  call void %193(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef %52)
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #10
  %195 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN3vox10NodeEditor6Detail19AnimationControllerESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  br i1 %195, label %.lr.ph190, label %._crit_edge191

196:                                              ; preds = %._crit_edge191
  %197 = load ptr, ptr %188, align 8, !tbaa !109
  %198 = getelementptr inbounds i8, ptr %197, i64 32
  %199 = load ptr, ptr %198, align 8
  %200 = call noundef zeroext i1 %199(ptr noundef nonnull align 8 dereferenceable(16) %188, ptr noundef nonnull align 8 dereferenceable(132) %2)
  br i1 %200, label %202, label %201

201:                                              ; preds = %196
  store ptr null, ptr %43, align 8, !tbaa !5
  br label %202

202:                                              ; preds = %201, %196, %._crit_edge191
  %203 = getelementptr inbounds i8, ptr %0, i64 1032
  %204 = getelementptr inbounds i8, ptr %0, i64 1048
  %205 = load i8, ptr %204, align 8, !tbaa !127, !range !116, !noundef !117
  %206 = trunc nuw i8 %205 to i1
  br i1 %206, label %207, label %209

207:                                              ; preds = %202
  %208 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail14NavigateAction7ProcessERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184) %203, ptr noundef nonnull align 8 dereferenceable(132) %2)
  br label %211

209:                                              ; preds = %202
  %210 = call noundef i32 @_ZN3vox10NodeEditor6Detail14NavigateAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184) %203, ptr noundef nonnull align 8 dereferenceable(132) %2)
  br label %211

211:                                              ; preds = %209, %207
  %212 = load ptr, ptr %43, align 8, !tbaa !5
  %213 = icmp eq ptr %212, null
  br i1 %213, label %214, label %.thread181

214:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  store ptr null, ptr %16, align 8, !tbaa !123
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  store ptr %16, ptr %17, align 8, !tbaa !123
  %215 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %2, ptr %215, align 8, !tbaa !123
  %216 = getelementptr inbounds i8, ptr %0, i64 1488
  %217 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %216)
  br i1 %217, label %.sink.split, label %218

218:                                              ; preds = %214
  %219 = getelementptr inbounds i8, ptr %0, i64 1528
  %220 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %219)
  br i1 %220, label %.sink.split, label %221

221:                                              ; preds = %218
  %222 = getelementptr inbounds i8, ptr %0, i64 1216
  %223 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %222)
  br i1 %223, label %.sink.split, label %224

224:                                              ; preds = %221
  %225 = getelementptr inbounds i8, ptr %0, i64 1312
  %226 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %225)
  br i1 %226, label %.sink.split, label %227

227:                                              ; preds = %224
  %228 = getelementptr inbounds i8, ptr %0, i64 1368
  %229 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %228)
  br i1 %229, label %.sink.split, label %230

230:                                              ; preds = %227
  %231 = getelementptr inbounds i8, ptr %0, i64 1576
  %232 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %231)
  br i1 %232, label %.sink.split, label %233

233:                                              ; preds = %230
  %234 = getelementptr inbounds i8, ptr %0, i64 1664
  %235 = call noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %234)
  br i1 %235, label %.sink.split, label %236

.sink.split:                                      ; preds = %233, %230, %227, %224, %221, %218, %214
  %.sink = phi ptr [ %216, %214 ], [ %219, %218 ], [ %222, %221 ], [ %225, %224 ], [ %228, %227 ], [ %231, %230 ], [ %234, %233 ]
  store ptr %.sink, ptr %43, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %.sink.split, %233
  %237 = load ptr, ptr %16, align 8
  %.not159 = icmp eq ptr %237, null
  br i1 %.not159, label %.thread207, label %239

.thread207:                                       ; preds = %236
  %238 = load ptr, ptr %43, align 8, !tbaa !5
  br label %251

239:                                              ; preds = %236
  %240 = load ptr, ptr %237, align 8, !tbaa !109
  %241 = getelementptr inbounds i8, ptr %240, i64 48
  %242 = load ptr, ptr %241, align 8
  %243 = call noundef i32 %242(ptr noundef nonnull align 8 dereferenceable(16) %237)
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef %243)
  %.pre206 = load ptr, ptr %16, align 8
  %244 = load ptr, ptr %43, align 8, !tbaa !5
  %245 = icmp ne ptr %244, null
  %246 = icmp ne ptr %.pre206, null
  %or.cond = select i1 %245, i1 %246, i1 false
  br i1 %or.cond, label %247, label %251

247:                                              ; preds = %239
  %248 = load ptr, ptr %.pre206, align 8, !tbaa !109
  %249 = getelementptr inbounds i8, ptr %248, i64 40
  %250 = load ptr, ptr %249, align 8
  call void %250(ptr noundef nonnull align 8 dereferenceable(16) %.pre206)
  %.pr180.pr = load ptr, ptr %43, align 8, !tbaa !5
  br label %251

251:                                              ; preds = %.thread207, %239, %247
  %.pr180 = phi ptr [ %244, %239 ], [ %.pr180.pr, %247 ], [ %238, %.thread207 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  %.not160 = icmp eq ptr %.pr180, null
  br i1 %.not160, label %257, label %.thread181

.thread181:                                       ; preds = %211, %251
  %252 = phi ptr [ %.pr180, %251 ], [ %212, %211 ]
  %253 = load ptr, ptr %252, align 8, !tbaa !109
  %254 = getelementptr inbounds i8, ptr %253, i64 48
  %255 = load ptr, ptr %254, align 8
  %256 = call noundef i32 %255(ptr noundef nonnull align 8 dereferenceable(16) %252)
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef %256)
  br label %257

257:                                              ; preds = %.thread181, %251
  %258 = getelementptr inbounds i8, ptr %0, i64 1368
  call void @_ZN3vox10NodeEditor6Detail12SelectAction4DrawEP10ImDrawList(ptr noundef nonnull align 8 dereferenceable(120) %258, ptr noundef %52)
  %259 = getelementptr inbounds i8, ptr %2, i64 40
  %260 = load ptr, ptr %259, align 8, !tbaa !128
  %.not161 = icmp eq ptr %260, null
  br i1 %.not161, label %.critedge, label %261

261:                                              ; preds = %257
  %262 = call noundef zeroext i1 @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE(ptr noundef nonnull %260)
  br i1 %262, label %270, label %263

263:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %264 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %265 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %266 = call ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPS6_ET_SF_SF_RKT0_(ptr %264, ptr %265, ptr noundef nonnull align 8 dereferenceable(8) %259)
  store ptr %266, ptr %18, align 8
  %267 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS3_4NodeENS2_6NodeIdEEESt6vectorIS7_SaIS7_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %18, i64 noundef 1) #10
  %268 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %269 = call ptr @_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS5_4NodeENS4_6NodeIdEEESt6vectorIS9_SaIS9_EEEEEET_SF_SF_SF_(ptr %266, ptr %267, ptr %268)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %.critedge

270:                                              ; preds = %261
  br i1 %97, label %.critedge, label %271

271:                                              ; preds = %270
  %272 = load ptr, ptr %43, align 8, !tbaa !5
  %.not162 = icmp eq ptr %272, null
  br i1 %.not162, label %.critedge, label %273

273:                                              ; preds = %271
  %274 = load ptr, ptr %272, align 8, !tbaa !109
  %275 = getelementptr inbounds i8, ptr %274, i64 88
  %276 = load ptr, ptr %275, align 8
  %277 = call noundef ptr %276(ptr noundef nonnull align 8 dereferenceable(16) %272)
  %.not163 = icmp eq ptr %277, null
  br i1 %.not163, label %.critedge, label %278

278:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #10
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #10
  %279 = load ptr, ptr %259, align 8, !tbaa !128
  invoke void @_ZN3vox10NodeEditor6Detail4Node15GetGroupedNodesERSt6vectorIPS2_SaIS4_EEb(ptr noundef nonnull align 8 dereferenceable(128) %279, ptr noundef nonnull align 8 dereferenceable(24) %19, i1 noundef zeroext false)
          to label %280 unwind label %285

280:                                              ; preds = %278
  %281 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %282 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %283 = invoke ptr @"_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_1ET_SG_SG_T0_"(ptr %281, ptr %282, ptr nonnull %19)
          to label %284 unwind label %285

284:                                              ; preds = %280
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #10
  br label %291

285:                                              ; preds = %280, %278
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIPN3vox10NodeEditor6Detail4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %2) #10
  resume { ptr, i32 } %286

.critedge:                                        ; preds = %257, %263, %271, %273, %270
  %287 = getelementptr inbounds i8, ptr %0, i64 1876
  %288 = load i32, ptr %287, align 4, !tbaa !129
  %289 = call noundef i32 @_ZN3vox10NodeEditororENS0_15SaveReasonFlagsES1_(i32 noundef 2, i32 noundef 4)
  %290 = call noundef i32 @_ZN3vox10NodeEditoranENS0_15SaveReasonFlagsES1_(i32 noundef %288, i32 noundef %289)
  %.not164 = icmp eq i32 %290, 0
  br i1 %.not164, label %296, label %291

291:                                              ; preds = %284, %.critedge
  %292 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %293 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %294 = call ptr @_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPFbPKS6_EET_SI_SI_T0_(ptr %292, ptr %293, ptr noundef nonnull @_ZL7IsGroupPKN3vox10NodeEditor6Detail4NodeE)
  %295 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  call void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_2EvT_SG_T0_"(ptr %295, ptr %294, ptr nonnull %0)
  br label %296

296:                                              ; preds = %291, %.critedge
  %297 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %298 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %299 = call noundef i64 @"_ZSt8count_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_3ENSt15iterator_traitsIT_E15difference_typeESH_SH_T0_"(ptr %297, ptr %298)
  %300 = trunc i64 %299 to i32
  %301 = getelementptr inbounds i8, ptr %52, i64 172
  %302 = load i32, ptr %301, align 4, !tbaa !130
  %303 = mul nsw i32 %300, 5
  %304 = add i32 %302, 4
  %305 = add i32 %304, %303
  call void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef %52, i32 noundef %305)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #10
  store i32 %302, ptr %20, align 4, !tbaa !139
  %306 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %307 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %308 = call ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_5ET_SG_SG_T0_"(ptr %306, ptr %307)
  %309 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %310 = call { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr %309, ptr %308, ptr nonnull %20, ptr %52)
  %311 = load i32, ptr %20, align 4, !tbaa !139
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %52, i32 noundef 6, i32 noundef %311)
  %312 = load i32, ptr %20, align 4, !tbaa !139
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %20, align 4, !tbaa !139
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %52, i32 noundef 7, i32 noundef %313)
  %314 = load i32, ptr %20, align 4, !tbaa !139
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %20, align 4, !tbaa !139
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %52, i32 noundef 8, i32 noundef %315)
  %316 = load i32, ptr %20, align 4, !tbaa !139
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %20, align 4, !tbaa !139
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef %52, i32 noundef 9, i32 noundef %317)
  %318 = load i32, ptr %20, align 4, !tbaa !139
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %20, align 4, !tbaa !139
  %320 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #10
  %321 = call { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr %308, ptr %320, ptr nonnull %20, ptr %52)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %52, i32 noundef 2)
  %322 = getelementptr inbounds i8, ptr %0, i64 656
  %323 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK7ImGuiEx6Canvas10ViewOriginEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %324 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %325 = fdiv float 1.000000e+00, %324
  %326 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %323, float noundef %325)
  %327 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %328 = call noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %329 = fmul float %327, %328
  %330 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %329, float noundef 0.000000e+00, float noundef 1.000000e+00)
  %331 = call noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorEf(ptr noundef nonnull align 8 dereferenceable(2040) %0, i32 noundef 1, float noundef %330)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %332 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %333 = load i64, ptr %332, align 4
  store i64 %333, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  %334 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas8ViewRectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %335 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %334)
  store <2 x float> %335, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %336 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %336, ptr %23, align 8
  %337 = call noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorE(ptr noundef nonnull align 8 dereferenceable(2040) %0, i32 noundef 0)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %52, ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef %337, float noundef 0.000000e+00, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  %.sroa.028.0.vec.extract = extractelement <2 x float> %326, i64 0
  %338 = call float @fmodf(float noundef %.sroa.028.0.vec.extract, float noundef 3.200000e+01) #10
  %339 = load float, ptr %22, align 8, !tbaa !140
  %340 = fcmp olt float %338, %339
  br i1 %340, label %.lr.ph195, label %._crit_edge196

.lr.ph195:                                        ; preds = %296
  %341 = getelementptr inbounds i8, ptr %22, i64 4
  br label %346

._crit_edge196:                                   ; preds = %346, %296
  %.sroa.028.4.vec.extract = extractelement <2 x float> %326, i64 1
  %342 = call float @fmodf(float noundef %.sroa.028.4.vec.extract, float noundef 3.200000e+01) #10
  %343 = getelementptr inbounds i8, ptr %22, i64 4
  %344 = load float, ptr %343, align 4, !tbaa !141
  %345 = fcmp olt float %342, %344
  br i1 %345, label %.lr.ph199, label %._crit_edge200

346:                                              ; preds = %.lr.ph195, %346
  %.0125193 = phi float [ %338, %.lr.ph195 ], [ %350, %346 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %.0125193, float noundef 0.000000e+00)
  %347 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %347, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #10
  %348 = load float, ptr %341, align 4, !tbaa !141
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %.0125193, float noundef %348)
  %349 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %349, ptr %26, align 8
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %52, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %26, i32 noundef %331, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  %350 = fadd float %.0125193, 3.200000e+01
  %351 = load float, ptr %22, align 8, !tbaa !140
  %352 = fcmp olt float %350, %351
  br i1 %352, label %346, label %._crit_edge196, !llvm.loop !142

._crit_edge200:                                   ; preds = %.lr.ph199, %._crit_edge196
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #10
  store ptr %0, ptr %32, align 8, !tbaa !144
  %353 = getelementptr inbounds i8, ptr %32, i64 8
  store ptr %52, ptr %353, align 8, !tbaa !146
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %52, i32 noundef 0)
  %354 = load i32, ptr %301, align 4, !tbaa !130
  %355 = add nsw i32 %354, 3
  call void @_ZL23ImDrawList_ChannelsGrowP10ImDrawListi(ptr noundef nonnull %52, i32 noundef %355)
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef nonnull %52, i32 noundef 3, i32 noundef %354)
  %356 = add nsw i32 %354, 1
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef nonnull %52, i32 noundef 4, i32 noundef %356)
  %357 = add nsw i32 %354, 2
  call void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef nonnull %52, i32 noundef 1, i32 noundef %357)
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %32, i32 noundef %354)
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %32, i32 noundef %356)
  call void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16) %32, i32 noundef %357)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #10
  call void @_ZN3vox10NodeEditor6Detail13EditorContext16UpdateAnimationsEv(ptr noundef nonnull align 8 dereferenceable(2040) %0)
  call void @_ZN10ImDrawList13ChannelsMergeEv(ptr noundef nonnull align 8 dereferenceable(196) %52)
  %358 = getelementptr inbounds i8, ptr %0, i64 832
  %359 = load i8, ptr %358, align 8, !tbaa !147, !range !116, !noundef !117
  %360 = trunc nuw i8 %359 to i1
  br i1 %360, label %367, label %368

.lr.ph199:                                        ; preds = %._crit_edge196, %.lr.ph199
  %.0126197 = phi float [ %364, %.lr.ph199 ], [ %342, %._crit_edge196 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 0.000000e+00, float noundef %.0126197)
  %361 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %361, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  %362 = load float, ptr %22, align 8, !tbaa !140
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %362, float noundef %.0126197)
  %363 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %363, ptr %30, align 8
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %52, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %30, i32 noundef %331, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  %364 = fadd float %.0126197, 3.200000e+01
  %365 = load float, ptr %343, align 4, !tbaa !141
  %366 = fcmp olt float %364, %365
  br i1 %366, label %.lr.ph199, label %._crit_edge200, !llvm.loop !148

367:                                              ; preds = %._crit_edge200
  call void @_ZN7ImGuiEx6Canvas3EndEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  br label %368

368:                                              ; preds = %367, %._crit_edge200
  %369 = getelementptr inbounds i8, ptr %0, i64 2016
  call void @_ZL23ImDrawList_SwapSplitterP10ImDrawListR18ImDrawListSplitter(ptr noundef nonnull %52, ptr noundef nonnull align 8 dereferenceable(24) %369)
  %370 = call noundef nonnull align 4 dereferenceable(1048) ptr @_ZN5ImGui8GetStyleEv()
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #10
  %371 = getelementptr inbounds i8, ptr %370, i64 296
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %371, i64 16, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #10
  %372 = getelementptr inbounds i8, ptr %370, i64 280
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(16) %372, i64 16, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #10
  %373 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %374 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %373, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %374, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #10
  %375 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %376 = getelementptr inbounds i8, ptr %375, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %377 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %376, ptr noundef nonnull align 4 dereferenceable(8) %38)
  store <2 x float> %377, ptr %37, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #10
  call void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %378 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %39)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %52, ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %37, i32 noundef %378, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  %379 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %380 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172) %322)
  %381 = getelementptr inbounds i8, ptr %380, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #10
  call void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(16) %34)
  %382 = call noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16) %40)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfif(ptr noundef nonnull align 8 dereferenceable(196) %52, ptr noundef nonnull align 4 dereferenceable(8) %379, ptr noundef nonnull align 4 dereferenceable(8) %381, i32 noundef %382, float noundef 0.000000e+00, i32 noundef 0, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #10
  call void @_ZN5ImGui5PopIDEv()
  %383 = load ptr, ptr %43, align 8, !tbaa !5
  %.not165 = icmp eq ptr %383, null
  br i1 %.not165, label %384, label %400

384:                                              ; preds = %368
  %385 = load i8, ptr %0, align 8, !tbaa !151, !range !116, !noundef !117
  %386 = trunc nuw i8 %385 to i1
  br i1 %386, label %387, label %400

387:                                              ; preds = %384
  %388 = getelementptr inbounds i8, ptr %0, i64 1904
  %389 = call noundef zeroext i1 @_ZNKSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %388) #10
  br i1 %389, label %400, label %390

390:                                              ; preds = %387
  call void @_ZN3vox10NodeEditor6Detail13EditorContext14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(2040) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #10
  %391 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %388) #10
  store ptr %391, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #10
  %392 = call ptr @_ZNSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %388) #10
  store ptr %392, ptr %42, align 8
  %393 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br i1 %393, label %.lr.ph202, label %._crit_edge203

._crit_edge203:                                   ; preds = %397, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %400

.lr.ph202:                                        ; preds = %390, %397
  %394 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  %.sroa.03.0.copyload = load i64, ptr %394, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %394, i64 8
  %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 8
  %395 = call noundef ptr @_ZN3vox10NodeEditor6Detail13EditorContext10FindObjectENS1_8ObjectIdE(ptr noundef nonnull align 8 dereferenceable(2040) %0, i64 %.sroa.03.0.copyload, i32 %.sroa.4.0.copyload)
  %.not166 = icmp eq ptr %395, null
  br i1 %.not166, label %397, label %396

396:                                              ; preds = %.lr.ph202
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12SelectObjectEPNS1_6ObjectE(ptr noundef nonnull align 8 dereferenceable(2040) %0, ptr noundef nonnull %395)
  br label %397

397:                                              ; preds = %396, %.lr.ph202
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  %399 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3vox10NodeEditor6Detail8ObjectIdESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br i1 %399, label %.lr.ph202, label %._crit_edge203

400:                                              ; preds = %._crit_edge203, %387, %384, %368
  %401 = call noundef zeroext i1 @_ZN3vox10NodeEditor6Detail13EditorContext19HasSelectionChangedEv(ptr noundef nonnull align 8 dereferenceable(2040) %0)
  br i1 %401, label %402, label %403

402:                                              ; preds = %400
  call void @_ZN3vox10NodeEditor6Detail13EditorContext9MakeDirtyENS0_15SaveReasonFlagsE(ptr noundef nonnull align 8 dereferenceable(2040) %0, i32 noundef 8)
  br label %403

403:                                              ; preds = %402, %400
  %404 = getelementptr inbounds i8, ptr %0, i64 1872
  %405 = load i8, ptr %404, align 8, !tbaa !152, !range !116, !noundef !117
  %406 = trunc nuw i8 %405 to i1
  %407 = load ptr, ptr %43, align 8
  %.not167 = icmp eq ptr %407, null
  %or.cond168 = select i1 %406, i1 %.not167, i1 false
  br i1 %or.cond168, label %408, label %409

408:                                              ; preds = %403
  call void @_ZN3vox10NodeEditor6Detail13EditorContext12SaveSettingsEv(ptr noundef nonnull align 8 dereferenceable(2040) %0)
  br label %409

409:                                              ; preds = %408, %403
  store i8 0, ptr %0, align 8, !tbaa !151
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %2) #10
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext12BuildControlEb(ptr dead_on_unwind noalias writable sret(%"struct.vox::NodeEditor::Detail::Control") align 8, ptr noundef nonnull align 8 dereferenceable(2040), i1 noundef zeroext) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3vox10NodeEditor6Detail6Object9IsVisibleEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3vox10NodeEditor6Detail14NavigateAction7ProcessERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(132)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditor6Detail14NavigateAction6AcceptERKNS1_7ControlE(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef nonnull align 8 dereferenceable(132)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_0clERNS1_12EditorActionE"(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

declare void @_ZN5ImGui14SetMouseCursorEi(i32 noundef) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPS6_ET_SF_SF_RKT0_(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_1ET_SG_SG_T0_"(ptr, ptr, ptr) local_unnamed_addr #0

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditoranENS0_15SaveReasonFlagsES1_(i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN3vox10NodeEditororENS0_15SaveReasonFlagsES1_(i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt16stable_partitionIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEPFbPKS6_EET_SI_SI_T0_(ptr, ptr, ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_2EvT_SG_T0_"(ptr, ptr, ptr) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @"_ZSt8count_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_3ENSt15iterator_traitsIT_E15difference_typeESH_SH_T0_"(ptr, ptr) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_5ET_SG_SG_T0_"(ptr, ptr) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden { ptr, ptr } @"_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPN3vox10NodeEditor6Detail13ObjectWrapperINS4_4NodeENS3_6NodeIdEEESt6vectorIS8_SaIS8_EEEEZNS4_13EditorContext3EndEvE3$_4ET0_T_SH_SG_"(ptr, ptr, ptr, ptr) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL23ImDrawList_SwapChannelsP10ImDrawListii(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNK7ImGuiEx6Canvas10ViewOriginEv(ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK7ImGuiEx6Canvas9ViewScaleEv(ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3vox10NodeEditor6Detail13EditorContext8GetColorENS0_10StyleColorEf(ptr noundef nonnull align 8 dereferenceable(2040), i32 noundef, float noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #9

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZN3vox10NodeEditor6Detail13EditorContext3EndEvENK3$_6clEi"(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13ChannelsMergeEv(ptr noundef nonnull align 8 dereferenceable(196)) local_unnamed_addr #0 align 2

declare void @_ZN7ImGuiEx6Canvas3EndEv(ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #1

declare noundef nonnull align 4 dereferenceable(1048) ptr @_ZN5ImGui8GetStyleEv() local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNK7ImGuiEx6Canvas4RectEv(ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7ImColorC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7ImColorcvjEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #0 align 2

declare void @_ZN5ImGui5PopIDEv() local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(2040)) local_unnamed_addr #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN3vox10NodeEditor6Detail13EditorContext10FindObjectENS1_8ObjectIdE(ptr noundef nonnull align 8 dereferenceable(2040), i64, i32) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3vox10NodeEditor6Detail13EditorContext9MakeDirtyENS0_15SaveReasonFlagsE(ptr noundef nonnull align 8 dereferenceable(2040), i32 noundef) local_unnamed_addr #3 align 2

attributes #0 = { 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 #1 = { "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 nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="64" "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"="64" "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 = { 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 #8 = { 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 #9 = { mustprogress nofree nounwind willreturn memory(write) "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 #10 = { 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, !19, i64 1024}
!6 = !{!"_ZTSN3vox10NodeEditor6Detail13EditorContextE", !7, i64 0, !7, i64 1, !7, i64 2, !10, i64 8, !24, i64 472, !28, i64 496, !32, i64 520, !36, i64 544, !36, i64 568, !40, i64 592, !19, i64 600, !41, i64 608, !41, i64 632, !45, i64 656, !7, i64 832, !49, i64 840, !52, i64 992, !19, i64 1024, !53, i64 1032, !59, i64 1216, !61, i64 1312, !62, i64 1368, !63, i64 1488, !69, i64 1528, !71, i64 1576, !75, i64 1664, !78, i64 1752, !82, i64 1776, !88, i64 1840, !91, i64 1848, !94, i64 1856, !7, i64 1864, !7, i64 1865, !7, i64 1866, !97, i64 1872, !107, i64 1944, !47, i64 2008, !50, i64 2016}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN3vox10NodeEditor6Detail5StyleE", !11, i64 0, !15, i64 416, !20, i64 440}
!11 = !{!"_ZTSN3vox10NodeEditor5StyleE", !12, i64 0, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !14, i64 44, !14, i64 52, !13, i64 60, !13, i64 64, !13, i64 68, !13, i64 72, !14, i64 76, !14, i64 84, !14, i64 92, !13, i64 100, !13, i64 104, !13, i64 108, !13, i64 112, !13, i64 116, !13, i64 120, !8, i64 124}
!12 = !{!"_ZTS6ImVec4", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!13 = !{!"float", !8, i64 0}
!14 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!15 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style13ColorModifierESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !8, i64 0}
!20 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail5Style11VarModifierESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!24 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4NodeENS1_6NodeIdEEESaIS6_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!28 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_3PinENS1_5PinIdEEESaIS6_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!32 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail13ObjectWrapperINS2_4LinkENS1_6LinkIdEEESaIS6_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!36 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail6ObjectESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!40 = !{!"long", !8, i64 0}
!41 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail9AnimationESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!45 = !{!"_ZTSN7ImGuiEx6CanvasE", !7, i64 0, !14, i64 4, !14, i64 12, !46, i64 20, !19, i64 40, !47, i64 48, !47, i64 52, !47, i64 56, !48, i64 60, !46, i64 76, !14, i64 92, !47, i64 100, !13, i64 104, !14, i64 108, !14, i64 116, !8, i64 124, !14, i64 164}
!46 = !{!"_ZTS6ImRect", !14, i64 0, !14, i64 8}
!47 = !{!"int", !8, i64 0}
!48 = !{!"_ZTSN7ImGuiEx10CanvasViewE", !14, i64 0, !13, i64 8, !13, i64 12}
!49 = !{!"_ZTSN3vox10NodeEditor6Detail11NodeBuilderE", !19, i64 0, !19, i64 8, !19, i64 16, !46, i64 24, !46, i64 40, !14, i64 56, !14, i64 64, !14, i64 72, !7, i64 80, !7, i64 81, !46, i64 84, !7, i64 100, !50, i64 104, !50, i64 128}
!50 = !{!"_ZTS18ImDrawListSplitter", !47, i64 0, !47, i64 4, !51, i64 8}
!51 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !47, i64 0, !47, i64 4, !19, i64 8}
!52 = !{!"_ZTSN3vox10NodeEditor6Detail11HintBuilderE", !19, i64 0, !7, i64 8, !19, i64 16, !13, i64 24, !47, i64 28}
!53 = !{!"_ZTSN3vox10NodeEditor6Detail14NavigateActionE", !54, i64 0, !7, i64 16, !13, i64 20, !14, i64 24, !14, i64 32, !14, i64 40, !19, i64 48, !14, i64 56, !14, i64 64, !55, i64 72, !58, i64 144, !40, i64 152, !19, i64 160, !7, i64 168, !14, i64 172}
!54 = !{!"_ZTSN3vox10NodeEditor6Detail12EditorActionE", !19, i64 8}
!55 = !{!"_ZTSN3vox10NodeEditor6Detail17NavigateAnimationE", !56, i64 0, !19, i64 32, !46, i64 40, !46, i64 56}
!56 = !{!"_ZTSN3vox10NodeEditor6Detail9AnimationE", !19, i64 8, !57, i64 16, !13, i64 20, !13, i64 24}
!57 = !{!"_ZTSN3vox10NodeEditor6Detail9Animation5StateE", !8, i64 0}
!58 = !{!"_ZTSN3vox10NodeEditor6Detail14NavigateAction16NavigationReasonE", !8, i64 0}
!59 = !{!"_ZTSN3vox10NodeEditor6Detail10SizeActionE", !54, i64 0, !7, i64 16, !7, i64 17, !19, i64 24, !46, i64 32, !46, i64 48, !14, i64 64, !14, i64 72, !14, i64 80, !60, i64 88, !47, i64 92}
!60 = !{!"_ZTSN3vox10NodeEditor6Detail10NodeRegionE", !8, i64 0}
!61 = !{!"_ZTSN3vox10NodeEditor6Detail10DragActionE", !54, i64 0, !7, i64 16, !7, i64 17, !19, i64 24, !36, i64 32}
!62 = !{!"_ZTSN3vox10NodeEditor6Detail12SelectActionE", !54, i64 0, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !14, i64 20, !14, i64 28, !36, i64 40, !36, i64 64, !56, i64 88}
!63 = !{!"_ZTSN3vox10NodeEditor6Detail17ContextMenuActionE", !54, i64 0, !64, i64 16, !64, i64 20, !65, i64 24}
!64 = !{!"_ZTSN3vox10NodeEditor6Detail17ContextMenuAction4MenuE", !8, i64 0}
!65 = !{!"_ZTSN3vox10NodeEditor6Detail8ObjectIdE", !66, i64 0, !68, i64 8}
!66 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6Detail8ObjectIdEEE", !67, i64 0}
!67 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6Detail8ObjectIdEEE", !40, i64 0}
!68 = !{!"_ZTSN3vox10NodeEditor6Detail10ObjectTypeE", !8, i64 0}
!69 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutActionE", !54, i64 0, !7, i64 16, !7, i64 17, !70, i64 20, !36, i64 24}
!70 = !{!"_ZTSN3vox10NodeEditor6Detail14ShortcutAction6ActionE", !8, i64 0}
!71 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemActionE", !54, i64 0, !7, i64 16, !72, i64 20, !72, i64 24, !73, i64 28, !74, i64 32, !47, i64 36, !13, i64 40, !19, i64 48, !19, i64 56, !7, i64 64, !19, i64 72, !47, i64 80, !7, i64 84}
!72 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction5StageE", !8, i64 0}
!73 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction4TypeE", !8, i64 0}
!74 = !{!"_ZTSN3vox10NodeEditor6Detail16CreateItemAction6ActionE", !8, i64 0}
!75 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsActionE", !54, i64 0, !7, i64 16, !7, i64 17, !36, i64 24, !76, i64 48, !77, i64 52, !36, i64 56, !47, i64 80}
!76 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsAction12IteratorTypeE", !8, i64 0}
!77 = !{!"_ZTSN3vox10NodeEditor6Detail17DeleteItemsAction10UserActionE", !8, i64 0}
!78 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE", !79, i64 0}
!79 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE12_Vector_implE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail19AnimationControllerESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!82 = !{!"_ZTSN3vox10NodeEditor6Detail23FlowAnimationControllerE", !83, i64 0, !84, i64 16, !84, i64 40}
!83 = !{!"_ZTSN3vox10NodeEditor6Detail19AnimationControllerE", !19, i64 8}
!84 = !{!"_ZTSSt6vectorIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIPN3vox10NodeEditor6Detail13FlowAnimationESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!88 = !{!"_ZTSN3vox10NodeEditor6NodeIdE", !89, i64 0}
!89 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6NodeIdEEE", !90, i64 0}
!90 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6NodeIdEEE", !40, i64 0}
!91 = !{!"_ZTSN3vox10NodeEditor5PinIdE", !92, i64 0}
!92 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_5PinIdEEE", !93, i64 0}
!93 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_5PinIdEEE", !40, i64 0}
!94 = !{!"_ZTSN3vox10NodeEditor6LinkIdE", !95, i64 0}
!95 = !{!"_ZTSN3vox10NodeEditor7Details15SafePointerTypeINS0_6LinkIdEEE", !96, i64 0}
!96 = !{!"_ZTSN3vox10NodeEditor7Details8SafeTypeImNS0_6LinkIdEEE", !40, i64 0}
!97 = !{!"_ZTSN3vox10NodeEditor6Detail8SettingsE", !7, i64 0, !98, i64 4, !99, i64 8, !103, i64 32, !14, i64 56, !13, i64 64}
!98 = !{!"_ZTSN3vox10NodeEditor15SaveReasonFlagsE", !8, i64 0}
!99 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE", !100, i64 0}
!100 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE12_Vector_implE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail12NodeSettingsESaIS3_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!103 = !{!"_ZTSSt6vectorIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3vox10NodeEditor6Detail8ObjectIdESaIS3_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!107 = !{!"_ZTSN3vox10NodeEditor6Detail6ConfigE", !108, i64 0}
!108 = !{!"_ZTSN3vox10NodeEditor6ConfigE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !19, i64 48, !19, i64 56}
!109 = !{!110, !110, i64 0}
!110 = !{!"vtable pointer", !9, i64 0}
!111 = !{!112, !19, i64 56}
!112 = !{!"_ZTSN3vox10NodeEditor6Detail7ControlE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !19, i64 48, !19, i64 56, !19, i64 64, !19, i64 72, !19, i64 80, !19, i64 88, !19, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !7, i64 128, !7, i64 129, !7, i64 130, !7, i64 131}
!113 = !{!112, !19, i64 88}
!114 = !{!112, !19, i64 120}
!115 = !{!112, !7, i64 130}
!116 = !{i8 0, i8 2}
!117 = !{}
!118 = !{!6, !7, i64 1864}
!119 = !{!112, !7, i64 131}
!120 = !{!6, !7, i64 1865}
!121 = !{!122, !7, i64 16}
!122 = !{!"_ZTSN3vox10NodeEditor6Detail6ObjectE", !19, i64 8, !7, i64 16}
!123 = !{!19, !19, i64 0}
!124 = !{!112, !19, i64 0}
!125 = !{!61, !19, i64 24}
!126 = !{!59, !19, i64 24}
!127 = !{!6, !7, i64 1048}
!128 = !{!112, !19, i64 40}
!129 = !{!6, !98, i64 1876}
!130 = !{!131, !47, i64 172}
!131 = !{!"_ZTS10ImDrawList", !132, i64 0, !133, i64 16, !134, i64 32, !47, i64 48, !47, i64 52, !19, i64 56, !19, i64 64, !19, i64 72, !19, i64 80, !135, i64 88, !136, i64 104, !137, i64 120, !138, i64 136, !50, i64 168, !13, i64 192}
!132 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !47, i64 0, !47, i64 4, !19, i64 8}
!133 = !{!"_ZTS8ImVectorItE", !47, i64 0, !47, i64 4, !19, i64 8}
!134 = !{!"_ZTS8ImVectorI10ImDrawVertE", !47, i64 0, !47, i64 4, !19, i64 8}
!135 = !{!"_ZTS8ImVectorI6ImVec4E", !47, i64 0, !47, i64 4, !19, i64 8}
!136 = !{!"_ZTS8ImVectorIPvE", !47, i64 0, !47, i64 4, !19, i64 8}
!137 = !{!"_ZTS8ImVectorI6ImVec2E", !47, i64 0, !47, i64 4, !19, i64 8}
!138 = !{!"_ZTS15ImDrawCmdHeader", !12, i64 0, !19, i64 16, !47, i64 24}
!139 = !{!47, !47, i64 0}
!140 = !{!14, !13, i64 0}
!141 = !{!14, !13, i64 4}
!142 = distinct !{!142, !143}
!143 = !{!"llvm.loop.mustprogress"}
!144 = !{!145, !19, i64 0}
!145 = !{!"_ZTSZN3vox10NodeEditor6Detail13EditorContext3EndEvE3$_6", !19, i64 0, !19, i64 8}
!146 = !{!145, !19, i64 8}
!147 = !{!6, !7, i64 832}
!148 = distinct !{!148, !143}
!149 = !{i64 0, i64 4, !150, i64 4, i64 4, !150, i64 8, i64 4, !150, i64 12, i64 4, !150}
!150 = !{!13, !13, i64 0}
!151 = !{!6, !7, i64 0}
!152 = !{!6, !7, i64 1872}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass