; LLVM IR from JawherBenjeddou/GraphicsRenderer :: Graphics/vendor/ImGui/imgui.ll (ZN5ImGui5BeginEPKcPbi)

; 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.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.3, %struct.ImVector.3, i32, i32, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.5, %struct.ImGuiStorage, i32, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, [140 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector.14, i32, %struct.ImVector.15, float, ptr, ptr, ptr, i32, %struct.ImGuiPlatformMonitor, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, %struct.ImGuiNavItemData, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.16, [16 x i8], i32, %struct.ImVector.17, ptr, i32, %struct.ImVector.18, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.21, ptr, %struct.ImPool.22, %struct.ImVector.24, %struct.ImVector.25, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, float, i8, i8, float, float, float, float, i16, i16, %struct.ImVector.26, %struct.ImVector.11, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i32, i8, [3 x i8], %struct.ImGuiDockContext, ptr, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.30, %struct.ImChunkStream, %struct.ImChunkStream.31, %struct.ImVector.32, i32, [9 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i8, i8, i8, i8, i8, i32, %struct.ImGuiMetricsConfig, %struct.ImGuiStackTool, ptr, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.26 }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [652 x i32], [652 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i32, i8, i8, i8, i8, i32, [652 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], i8, [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVector.0, %struct.ImVector.1 }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%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, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, float, float, [55 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.2, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.6 }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [140 x i16], %struct.ImVector.7, %struct.ImVector.7 }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2 }
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.19, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImPool.22 = type { %struct.ImVector.23, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.26, %struct.ImVector.26, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.26 }
%struct.ImFont = type <{ %struct.ImVector.20, float, float, %struct.ImVector, %struct.ImVector.27, ptr, ptr, ptr, i16, i16, i16, i16, float, float, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.28, %struct.ImVector.29, i8, [7 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.26 }
%struct.ImChunkStream.31 = type { %struct.ImVector.26 }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.26 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.12, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.33, i8, float }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiWindow = type { ptr, ptr, i32, i32, i32, %struct.ImGuiWindowClass, ptr, i32, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.11, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, i32, float, float, %struct.ImGuiStorage, %struct.ImVector.36, float, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, i8, i16, %struct.ImGuiWindowDockStyle, ptr, ptr, i32, i32, %struct.ImRect }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.4, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.20, %struct.ImVector.20 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.37, %struct.ImVector, %struct.ImVector.38, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.39, %struct.ImVector.40, %struct.ImVector.2, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.21 }
%struct.ImGuiWindowDockStyle = type { [6 x i32] }
%struct.ImGuiPopupData = type <{ i32, [4 x i8], ptr, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiDockNode = type <{ i32, i32, i32, i32, i32, i32, ptr, [2 x ptr], %struct.ImVector.4, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, %struct.ImGuiWindowClass, i32, [4 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i16, i8, [5 x i8] }>
%struct.ImGuiViewportP = type { %struct.ImGuiViewport.base, ptr, i32, i32, i32, i32, %struct.ImVec2, float, float, i8, i16, [2 x i32], [2 x ptr], %struct.ImDrawData, %struct.ImDrawDataBuilder, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiViewport.base = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8 }>
%struct.ImDrawData = type { i8, i32, i32, i32, %struct.ImVector.49, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImVector.49 = type { i32, i32, ptr }
%struct.ImDrawDataBuilder = type { [2 x ptr], %struct.ImVector.49 }
%struct.ImGuiViewport = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, [4 x i8] }>
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImFontAtlas = type <{ i32, [4 x i8], ptr, i32, i32, i8, [7 x i8], ptr, i8, i8, [6 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.10, %struct.ImVector.47, %struct.ImVector.48, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.47 = type { i32, i32, ptr }
%struct.ImVector.48 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [27 x i8], align 1

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) #4

; 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)) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #7

; 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)) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef, ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8DebugLogEPKcz(ptr noundef, ...) #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320)) #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #1 align 2

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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef) #10

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef) #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(16)) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320)) #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136)) #8 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #11 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %0, ptr noundef %1, i32 noundef %2) #9 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %struct.ImGuiWindowStackData, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca %struct.ImRect, align 4
  %32 = alloca %struct.ImVec4, align 4
  %33 = alloca i8, align 1
  %34 = alloca i64, align 8
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca %struct.ImRect, align 4
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImVec2, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImRect, align 4
  %46 = alloca i8, align 1
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca %struct.ImVec2, align 4
  %52 = alloca %struct.ImRect, align 4
  %53 = alloca %struct.ImRect, align 4
  %54 = alloca %struct.ImRect, align 4
  %55 = alloca %struct.ImRect, align 4
  %56 = alloca %struct.ImVec2, align 4
  %57 = alloca %struct.ImRect, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca ptr, align 8
  %61 = alloca %struct.ImVec2, align 4
  %62 = alloca %struct.ImVec2, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca %struct.ImVec2, align 4
  %65 = alloca i8, align 1
  %66 = alloca i8, align 1
  %67 = alloca i32, align 4
  %68 = alloca [4 x i32], align 16
  %69 = alloca i32, align 4
  %70 = alloca float, align 4
  %71 = alloca %struct.ImRect, align 4
  %72 = alloca %struct.ImVec2, align 4
  %73 = alloca %struct.ImVec2, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca float, align 4
  %78 = alloca float, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImRect, align 4
  %81 = alloca %struct.ImRect, align 4
  %82 = alloca %struct.ImRect, align 4
  %83 = alloca float, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca i8, align 1
  %87 = alloca i8, align 1
  %88 = alloca ptr, align 8
  %89 = alloca i8, align 1
  %90 = alloca %struct.ImRect, align 4
  %91 = alloca %struct.ImRect, align 4
  %92 = alloca i8, align 1
  %93 = alloca ptr, align 8
  %94 = alloca i8, align 1
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  %97 = alloca float, align 4
  %98 = alloca float, align 4
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca %struct.ImVec2, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca %struct.ImVec2, align 4
  %104 = alloca %struct.ImRect, align 4
  %105 = alloca i8, align 1
  %106 = alloca i8, align 1
  %107 = alloca i8, align 1
  %108 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %109 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %109, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ImGuiContext, ptr %110, i32 0, i32 4
  store ptr %111, ptr %9, align 8, !tbaa !5
  %112 = load ptr, ptr %5, align 8, !tbaa !5
  %113 = icmp ne ptr %112, null
  br i1 %113, label %114, label %120

114:                                              ; preds = %3
  %115 = load ptr, ptr %5, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 0
  %117 = load i8, ptr %116, align 1, !tbaa !11
  %118 = sext i8 %117 to i32
  %119 = icmp ne i32 %118, 0
  br label %120

120:                                              ; preds = %114, %3
  %121 = phi i1 [ false, %3 ], [ %119, %114 ]
  br i1 %121, label %122, label %123

122:                                              ; preds = %120
  br label %125

123:                                              ; preds = %120
  call void @__assert_fail(ptr noundef @.str.137, ptr noundef @.str.3, i32 noundef 6596, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

124:                                              ; No predecessors!
  br label %125

125:                                              ; preds = %124, %122
  %126 = load ptr, ptr %8, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.ImGuiContext, ptr %126, i32 0, i32 16
  %128 = load i8, ptr %127, align 8, !tbaa !12, !range !87, !noundef !88
  %129 = trunc i8 %128 to i1
  br i1 %129, label %130, label %131

130:                                              ; preds = %125
  br label %133

131:                                              ; preds = %125
  call void @__assert_fail(ptr noundef @.str.138, ptr noundef @.str.3, i32 noundef 6597, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

132:                                              ; No predecessors!
  br label %133

133:                                              ; preds = %132, %130
  %134 = load ptr, ptr %8, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.ImGuiContext, ptr %134, i32 0, i32 13
  %136 = load i32, ptr %135, align 4, !tbaa !89
  %137 = load ptr, ptr %8, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.ImGuiContext, ptr %137, i32 0, i32 12
  %139 = load i32, ptr %138, align 8, !tbaa !90
  %140 = icmp ne i32 %136, %139
  br i1 %140, label %141, label %142

141:                                              ; preds = %133
  br label %144

142:                                              ; preds = %133
  call void @__assert_fail(ptr noundef @.str.139, ptr noundef @.str.3, i32 noundef 6598, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

143:                                              ; No predecessors!
  br label %144

144:                                              ; preds = %143, %141
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #13
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %145)
  store ptr %146, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #13
  %147 = load ptr, ptr %10, align 8, !tbaa !5
  %148 = icmp eq ptr %147, null
  %149 = zext i1 %148 to i8
  store i8 %149, ptr %11, align 1, !tbaa !91
  %150 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %156

152:                                              ; preds = %144
  %153 = load ptr, ptr %5, align 8, !tbaa !5
  %154 = load i32, ptr %7, align 4, !tbaa !9
  %155 = call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef %153, i32 noundef %154)
  store ptr %155, ptr %10, align 8, !tbaa !5
  br label %156

156:                                              ; preds = %152, %144
  %157 = load i32, ptr %7, align 4, !tbaa !9
  %158 = and i32 %157, 786944
  %159 = icmp eq i32 %158, 786944
  br i1 %159, label %160, label %163

160:                                              ; preds = %156
  %161 = load i32, ptr %7, align 4, !tbaa !9
  %162 = or i32 %161, 6
  store i32 %162, ptr %7, align 4, !tbaa !9
  br label %163

163:                                              ; preds = %160, %156
  %164 = load i32, ptr %7, align 4, !tbaa !9
  %165 = and i32 %164, 8388608
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %175

167:                                              ; preds = %163
  %168 = load i32, ptr %7, align 4, !tbaa !9
  %169 = and i32 %168, 16777216
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  br label %174

172:                                              ; preds = %167
  call void @__assert_fail(ptr noundef @.str.140, ptr noundef @.str.3, i32 noundef 6611, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

173:                                              ; No predecessors!
  br label %174

174:                                              ; preds = %173, %171
  br label %175

175:                                              ; preds = %174, %163
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #13
  %176 = load ptr, ptr %8, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.ImGuiContext, ptr %176, i32 0, i32 12
  %178 = load i32, ptr %177, align 8, !tbaa !90
  store i32 %178, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.ImGuiWindow, ptr %179, i32 0, i32 79
  %181 = load i32, ptr %180, align 8, !tbaa !92
  %182 = load i32, ptr %12, align 4, !tbaa !9
  %183 = icmp ne i32 %181, %182
  %184 = zext i1 %183 to i8
  store i8 %184, ptr %13, align 1, !tbaa !91
  %185 = load ptr, ptr %8, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ImGuiContext, ptr %185, i32 0, i32 29
  %187 = getelementptr inbounds %struct.ImVector.5, ptr %186, i32 0, i32 0
  %188 = load i32, ptr %187, align 8, !tbaa !107
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %195

190:                                              ; preds = %175
  %191 = load ptr, ptr %8, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.ImGuiContext, ptr %191, i32 0, i32 17
  %193 = load i8, ptr %192, align 1, !tbaa !108, !range !87, !noundef !88
  %194 = trunc i8 %193 to i1
  br label %195

195:                                              ; preds = %190, %175
  %196 = phi i1 [ false, %175 ], [ %194, %190 ]
  %197 = load ptr, ptr %10, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ImGuiWindow, ptr %197, i32 0, i32 46
  %199 = zext i1 %196 to i8
  store i8 %199, ptr %198, align 1, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.ImGuiWindow, ptr %200, i32 0, i32 79
  %202 = load i32, ptr %201, align 8, !tbaa !92
  %203 = load i32, ptr %12, align 4, !tbaa !9
  %204 = sub nsw i32 %203, 1
  %205 = icmp slt i32 %202, %204
  %206 = zext i1 %205 to i8
  store i8 %206, ptr %14, align 1, !tbaa !91
  %207 = load i32, ptr %7, align 4, !tbaa !9
  %208 = and i32 %207, 67108864
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %244

210:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ImGuiContext, ptr %211, i32 0, i32 86
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.ImGuiContext, ptr %213, i32 0, i32 87
  %215 = getelementptr inbounds %struct.ImVector.14, ptr %214, i32 0, i32 0
  %216 = load i32, ptr %215, align 8, !tbaa !110
  %217 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %212, i32 noundef %216)
  store ptr %217, ptr %15, align 8, !tbaa !5
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.ImGuiWindow, ptr %218, i32 0, i32 55
  %220 = load i32, ptr %219, align 4, !tbaa !111
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.ImGuiPopupData, ptr %221, i32 0, i32 0
  %223 = load i32, ptr %222, align 8, !tbaa !112
  %224 = icmp ne i32 %220, %223
  %225 = zext i1 %224 to i32
  %226 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %227 = trunc i8 %226 to i1
  %228 = zext i1 %227 to i32
  %229 = or i32 %228, %225
  %230 = icmp ne i32 %229, 0
  %231 = zext i1 %230 to i8
  store i8 %231, ptr %14, align 1, !tbaa !91
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = load ptr, ptr %15, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.ImGuiPopupData, ptr %233, i32 0, i32 2
  %235 = load ptr, ptr %234, align 8, !tbaa !114
  %236 = icmp ne ptr %232, %235
  %237 = zext i1 %236 to i32
  %238 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %239 = trunc i8 %238 to i1
  %240 = zext i1 %239 to i32
  %241 = or i32 %240, %237
  %242 = icmp ne i32 %241, 0
  %243 = zext i1 %242 to i8
  store i8 %243, ptr %14, align 1, !tbaa !91
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #13
  br label %244

244:                                              ; preds = %210, %195
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.ImGuiWindow, ptr %245, i32 0, i32 44
  %247 = load i8, ptr %246, align 1, !tbaa !115, !range !87, !noundef !88
  %248 = trunc i8 %247 to i1
  %249 = zext i1 %248 to i8
  store i8 %249, ptr %16, align 1, !tbaa !91
  %250 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %251 = trunc i8 %250 to i1
  br i1 %251, label %252, label %295

252:                                              ; preds = %244
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %255 = trunc i8 %254 to i1
  %256 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef %253, i1 noundef zeroext %255, i32 noundef %256)
  %257 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %258 = trunc i8 %257 to i1
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.ImGuiWindow, ptr %259, i32 0, i32 44
  %261 = zext i1 %258 to i8
  store i8 %261, ptr %260, align 1, !tbaa !115
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImGuiWindow, ptr %262, i32 0, i32 44
  %264 = load i8, ptr %263, align 1, !tbaa !115, !range !87, !noundef !88
  %265 = trunc i8 %264 to i1
  br i1 %265, label %266, label %268

266:                                              ; preds = %252
  %267 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %267, i32 noundef 8, i1 noundef zeroext true)
  br label %268

268:                                              ; preds = %266, %252
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.ImGuiWindow, ptr %269, i32 0, i32 3
  %271 = load i32, ptr %270, align 4, !tbaa !116
  %272 = load ptr, ptr %10, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiWindow, ptr %272, i32 0, i32 4
  store i32 %271, ptr %273, align 8, !tbaa !117
  %274 = load i32, ptr %7, align 4, !tbaa !9
  %275 = load ptr, ptr %10, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiWindow, ptr %275, i32 0, i32 3
  store i32 %274, ptr %276, align 4, !tbaa !116
  %277 = load i32, ptr %12, align 4, !tbaa !9
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ImGuiWindow, ptr %278, i32 0, i32 79
  store i32 %277, ptr %279, align 8, !tbaa !92
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiContext, ptr %280, i32 0, i32 11
  %282 = load double, ptr %281, align 8, !tbaa !118
  %283 = fptrunc double %282 to float
  %284 = load ptr, ptr %10, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.ImGuiWindow, ptr %284, i32 0, i32 81
  store float %283, ptr %285, align 8, !tbaa !119
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiWindow, ptr %286, i32 0, i32 52
  store i16 0, ptr %287, align 4, !tbaa !120
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.ImGuiContext, ptr %288, i32 0, i32 31
  %290 = load i32, ptr %289, align 8, !tbaa !121
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %289, align 8, !tbaa !121
  %292 = trunc i32 %290 to i16
  %293 = load ptr, ptr %10, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.ImGuiWindow, ptr %293, i32 0, i32 53
  store i16 %292, ptr %294, align 2, !tbaa !122
  br label %299

295:                                              ; preds = %244
  %296 = load ptr, ptr %10, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.ImGuiWindow, ptr %296, i32 0, i32 3
  %298 = load i32, ptr %297, align 4, !tbaa !116
  store i32 %298, ptr %7, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %295, %268
  %300 = load ptr, ptr %10, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.ImGuiWindow, ptr %300, i32 0, i32 108
  %302 = load ptr, ptr %301, align 8, !tbaa !123
  %303 = icmp eq ptr %302, null
  br i1 %303, label %309, label %304

304:                                              ; preds = %299
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ImGuiWindow, ptr %305, i32 0, i32 109
  %307 = load ptr, ptr %306, align 8, !tbaa !124
  %308 = icmp eq ptr %307, null
  br label %309

309:                                              ; preds = %304, %299
  %310 = phi i1 [ true, %299 ], [ %308, %304 ]
  br i1 %310, label %311, label %312

311:                                              ; preds = %309
  br label %314

312:                                              ; preds = %309
  call void @__assert_fail(ptr noundef @.str.141, ptr noundef @.str.3, i32 noundef 6648, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

313:                                              ; No predecessors!
  br label %314

314:                                              ; preds = %313, %311
  %315 = load ptr, ptr %8, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiContext, ptr %315, i32 0, i32 79
  %317 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %316, i32 0, i32 0
  %318 = load i32, ptr %317, align 8, !tbaa !125
  %319 = and i32 %318, 512
  %320 = icmp ne i32 %319, 0
  br i1 %320, label %321, label %331

321:                                              ; preds = %314
  %322 = load ptr, ptr %10, align 8, !tbaa !5
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiContext, ptr %323, i32 0, i32 79
  %325 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %324, i32 0, i32 17
  %326 = load i32, ptr %325, align 8, !tbaa !126
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiContext, ptr %327, i32 0, i32 79
  %329 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %328, i32 0, i32 4
  %330 = load i32, ptr %329, align 8, !tbaa !127
  call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef %322, i32 noundef %326, i32 noundef %330)
  br label %331

331:                                              ; preds = %321, %314
  %332 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %333 = trunc i8 %332 to i1
  br i1 %333, label %334, label %442

334:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #13
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiWindow, ptr %335, i32 0, i32 110
  %337 = load i32, ptr %336, align 8, !tbaa !128
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %344, label %339

339:                                              ; preds = %334
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImGuiWindow, ptr %340, i32 0, i32 108
  %342 = load ptr, ptr %341, align 8, !tbaa !123
  %343 = icmp ne ptr %342, null
  br label %344

344:                                              ; preds = %339, %334
  %345 = phi i1 [ true, %334 ], [ %343, %339 ]
  %346 = zext i1 %345 to i8
  store i8 %346, ptr %17, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #13
  %347 = load i8, ptr %17, align 1, !tbaa !91, !range !87, !noundef !88
  %348 = trunc i8 %347 to i1
  br i1 %348, label %352, label %349

349:                                              ; preds = %344
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef %350)
  br label %352

352:                                              ; preds = %349, %344
  %353 = phi i1 [ false, %344 ], [ %351, %349 ]
  %354 = zext i1 %353 to i8
  store i8 %354, ptr %18, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #13
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImGuiWindow, ptr %355, i32 0, i32 105
  %357 = load i8, ptr %356, align 1
  %358 = lshr i8 %357, 1
  %359 = and i8 %358, 1
  %360 = trunc i8 %359 to i1
  %361 = zext i1 %360 to i8
  store i8 %361, ptr %19, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.ImGuiWindow, ptr %362, i32 0, i32 105
  %364 = load i8, ptr %363, align 1
  %365 = lshr i8 %364, 2
  %366 = and i8 %365, 1
  %367 = trunc i8 %366 to i1
  %368 = zext i1 %367 to i8
  store i8 %368, ptr %20, align 1, !tbaa !91
  %369 = load i8, ptr %17, align 1, !tbaa !91, !range !87, !noundef !88
  %370 = trunc i8 %369 to i1
  br i1 %370, label %374, label %371

371:                                              ; preds = %352
  %372 = load i8, ptr %18, align 1, !tbaa !91, !range !87, !noundef !88
  %373 = trunc i8 %372 to i1
  br i1 %373, label %374, label %425

374:                                              ; preds = %371, %352
  %375 = load ptr, ptr %10, align 8, !tbaa !5
  %376 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef %375, ptr noundef %376)
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImGuiWindow, ptr %377, i32 0, i32 3
  %379 = load i32, ptr %378, align 4, !tbaa !116
  store i32 %379, ptr %7, align 4, !tbaa !9
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiWindow, ptr %380, i32 0, i32 105
  %382 = load i8, ptr %381, align 1
  %383 = and i8 %382, 1
  %384 = trunc i8 %383 to i1
  br i1 %384, label %385, label %399

385:                                              ; preds = %374
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ImGuiWindow, ptr %386, i32 0, i32 108
  %388 = load ptr, ptr %387, align 8, !tbaa !123
  %389 = icmp ne ptr %388, null
  br i1 %389, label %390, label %391

390:                                              ; preds = %385
  br label %393

391:                                              ; preds = %385
  call void @__assert_fail(ptr noundef @.str.142, ptr noundef @.str.3, i32 noundef 6663, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

392:                                              ; No predecessors!
  br label %393

393:                                              ; preds = %392, %390
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ImGuiContext, ptr %394, i32 0, i32 79
  %396 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %395, i32 0, i32 0
  %397 = load i32, ptr %396, align 8, !tbaa !125
  %398 = and i32 %397, -17
  store i32 %398, ptr %396, align 8, !tbaa !125
  br label %399

399:                                              ; preds = %393, %374
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.ImGuiWindow, ptr %400, i32 0, i32 105
  %402 = load i8, ptr %401, align 1
  %403 = lshr i8 %402, 2
  %404 = and i8 %403, 1
  %405 = trunc i8 %404 to i1
  br i1 %405, label %406, label %424

406:                                              ; preds = %399
  %407 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %408 = trunc i8 %407 to i1
  br i1 %408, label %424, label %409

409:                                              ; preds = %406
  %410 = load i8, ptr %19, align 1, !tbaa !91, !range !87, !noundef !88
  %411 = trunc i8 %410 to i1
  br i1 %411, label %412, label %424

412:                                              ; preds = %409
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiWindow, ptr %413, i32 0, i32 44
  %415 = load i8, ptr %414, align 1, !tbaa !115, !range !87, !noundef !88
  %416 = trunc i8 %415 to i1
  br i1 %416, label %424, label %417

417:                                              ; preds = %412
  %418 = load i8, ptr %16, align 1, !tbaa !91, !range !87, !noundef !88
  %419 = trunc i8 %418 to i1
  br i1 %419, label %424, label %420

420:                                              ; preds = %417
  %421 = load ptr, ptr %10, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiWindow, ptr %421, i32 0, i32 44
  store i8 1, ptr %422, align 1, !tbaa !115
  %423 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %423, i32 noundef 8, i1 noundef zeroext true)
  br label %424

424:                                              ; preds = %420, %417, %412, %409, %406, %399
  br label %441

425:                                              ; preds = %371
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ImGuiWindow, ptr %426, i32 0, i32 105
  %428 = load i8, ptr %427, align 1
  %429 = and i8 %428, -5
  %430 = or i8 %429, 0
  store i8 %430, ptr %427, align 1
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiWindow, ptr %431, i32 0, i32 105
  %433 = load i8, ptr %432, align 1
  %434 = and i8 %433, -3
  %435 = or i8 %434, 0
  store i8 %435, ptr %432, align 1
  %436 = load ptr, ptr %10, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiWindow, ptr %436, i32 0, i32 105
  %438 = load i8, ptr %437, align 1
  %439 = and i8 %438, -2
  %440 = or i8 %439, 0
  store i8 %440, ptr %437, align 1
  br label %441

441:                                              ; preds = %425, %424
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #13
  br label %442

442:                                              ; preds = %441, %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #13
  %443 = load ptr, ptr %10, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiWindow, ptr %443, i32 0, i32 105
  %445 = load i8, ptr %444, align 1
  %446 = and i8 %445, 1
  %447 = trunc i8 %446 to i1
  br i1 %447, label %448, label %461

448:                                              ; preds = %442
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.ImGuiWindow, ptr %449, i32 0, i32 108
  %451 = load ptr, ptr %450, align 8, !tbaa !123
  %452 = getelementptr inbounds %struct.ImGuiDockNode, ptr %451, i32 0, i32 17
  %453 = load ptr, ptr %452, align 8, !tbaa !129
  %454 = icmp ne ptr %453, null
  br i1 %454, label %455, label %461

455:                                              ; preds = %448
  %456 = load ptr, ptr %10, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.ImGuiWindow, ptr %456, i32 0, i32 108
  %458 = load ptr, ptr %457, align 8, !tbaa !123
  %459 = getelementptr inbounds %struct.ImGuiDockNode, ptr %458, i32 0, i32 17
  %460 = load ptr, ptr %459, align 8, !tbaa !129
  br label %474

461:                                              ; preds = %448, %442
  %462 = load ptr, ptr %8, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiContext, ptr %462, i32 0, i32 29
  %464 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %463)
  br i1 %464, label %465, label %466

465:                                              ; preds = %461
  br label %472

466:                                              ; preds = %461
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiContext, ptr %467, i32 0, i32 29
  %469 = call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %468)
  %470 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %469, i32 0, i32 0
  %471 = load ptr, ptr %470, align 8, !tbaa !133
  br label %472

472:                                              ; preds = %466, %465
  %473 = phi ptr [ null, %465 ], [ %471, %466 ]
  br label %474

474:                                              ; preds = %472, %455
  %475 = phi ptr [ %460, %455 ], [ %473, %472 ]
  store ptr %475, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  %476 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %477 = trunc i8 %476 to i1
  br i1 %477, label %478, label %487

478:                                              ; preds = %474
  %479 = load i32, ptr %7, align 4, !tbaa !9
  %480 = and i32 %479, 83886080
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %484

482:                                              ; preds = %478
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  br label %485

484:                                              ; preds = %478
  br label %485

485:                                              ; preds = %484, %482
  %486 = phi ptr [ %483, %482 ], [ null, %484 ]
  br label %491

487:                                              ; preds = %474
  %488 = load ptr, ptr %10, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.ImGuiWindow, ptr %488, i32 0, i32 90
  %490 = load ptr, ptr %489, align 8, !tbaa !136
  br label %491

491:                                              ; preds = %487, %485
  %492 = phi ptr [ %486, %485 ], [ %490, %487 ]
  store ptr %492, ptr %22, align 8, !tbaa !5
  %493 = load ptr, ptr %22, align 8, !tbaa !5
  %494 = icmp ne ptr %493, null
  br i1 %494, label %500, label %495

495:                                              ; preds = %491
  %496 = load i32, ptr %7, align 4, !tbaa !9
  %497 = and i32 %496, 16777216
  %498 = icmp ne i32 %497, 0
  %499 = xor i1 %498, true
  br label %500

500:                                              ; preds = %495, %491
  %501 = phi i1 [ true, %491 ], [ %499, %495 ]
  br i1 %501, label %502, label %503

502:                                              ; preds = %500
  br label %505

503:                                              ; preds = %500
  call void @__assert_fail(ptr noundef @.str.143, ptr noundef @.str.3, i32 noundef 6683, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

504:                                              ; No predecessors!
  br label %505

505:                                              ; preds = %504, %502
  %506 = load ptr, ptr %10, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiWindow, ptr %506, i32 0, i32 68
  %508 = getelementptr inbounds %struct.ImVector.11, ptr %507, i32 0, i32 0
  %509 = load i32, ptr %508, align 8, !tbaa !137
  %510 = icmp eq i32 %509, 0
  br i1 %510, label %511, label %516

511:                                              ; preds = %505
  %512 = load ptr, ptr %10, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ImGuiWindow, ptr %512, i32 0, i32 68
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ImGuiWindow, ptr %514, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %513, ptr noundef nonnull align 4 dereferenceable(4) %515)
  br label %516

516:                                              ; preds = %511, %505
  %517 = load ptr, ptr %10, align 8, !tbaa !5
  %518 = load ptr, ptr %8, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiContext, ptr %518, i32 0, i32 33
  store ptr %517, ptr %519, align 8, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #13
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %23)
  %520 = load ptr, ptr %10, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 0
  store ptr %520, ptr %521, align 8, !tbaa !133
  %522 = load ptr, ptr %8, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.ImGuiContext, ptr %522, i32 0, i32 78
  %524 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %524, ptr align 8 %523, i64 60, i1 false), !tbaa.struct !139
  %525 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 2
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %525, ptr noundef %526)
  %527 = load ptr, ptr %8, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.ImGuiContext, ptr %527, i32 0, i32 29
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %528, ptr noundef nonnull align 8 dereferenceable(86) %23)
  %529 = load i32, ptr %7, align 4, !tbaa !9
  %530 = and i32 %529, 268435456
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %537

532:                                              ; preds = %516
  %533 = load ptr, ptr %8, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.ImGuiContext, ptr %533, i32 0, i32 88
  %535 = load i32, ptr %534, align 8, !tbaa !141
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %534, align 8, !tbaa !141
  br label %537

537:                                              ; preds = %532, %516
  %538 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %539 = trunc i8 %538 to i1
  br i1 %539, label %540, label %547

540:                                              ; preds = %537
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = load i32, ptr %7, align 4, !tbaa !9
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %541, i32 noundef %542, ptr noundef %543)
  %544 = load ptr, ptr %21, align 8, !tbaa !5
  %545 = load ptr, ptr %10, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiWindow, ptr %545, i32 0, i32 91
  store ptr %544, ptr %546, align 8, !tbaa !142
  br label %547

547:                                              ; preds = %540, %537
  %548 = load ptr, ptr %10, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.ImGuiWindow, ptr %548, i32 0, i32 2
  %550 = load i32, ptr %549, align 8, !tbaa !143
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %550)
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiContext, ptr %551, i32 0, i32 74
  %553 = load i32, ptr %552, align 4, !tbaa !144
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ImGuiWindow, ptr %554, i32 0, i32 101
  store i32 %553, ptr %555, align 8, !tbaa !145
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiContext, ptr %556, i32 0, i32 33
  store ptr null, ptr %557, align 8, !tbaa !138
  %558 = load i32, ptr %7, align 4, !tbaa !9
  %559 = and i32 %558, 67108864
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %586

561:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #13
  %562 = load ptr, ptr %8, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.ImGuiContext, ptr %562, i32 0, i32 86
  %564 = load ptr, ptr %8, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.ImGuiContext, ptr %564, i32 0, i32 87
  %566 = getelementptr inbounds %struct.ImVector.14, ptr %565, i32 0, i32 0
  %567 = load i32, ptr %566, align 8, !tbaa !110
  %568 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %563, i32 noundef %567)
  store ptr %568, ptr %24, align 8, !tbaa !5
  %569 = load ptr, ptr %10, align 8, !tbaa !5
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ImGuiPopupData, ptr %570, i32 0, i32 2
  store ptr %569, ptr %571, align 8, !tbaa !114
  %572 = load ptr, ptr %21, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiWindow, ptr %572, i32 0, i32 69
  %574 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %573, i32 0, i32 15
  %575 = load i32, ptr %574, align 8, !tbaa !146
  %576 = load ptr, ptr %24, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiPopupData, ptr %576, i32 0, i32 4
  store i32 %575, ptr %577, align 8, !tbaa !147
  %578 = load ptr, ptr %8, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImGuiContext, ptr %578, i32 0, i32 87
  %580 = load ptr, ptr %24, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %579, ptr noundef nonnull align 8 dereferenceable(52) %580)
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiPopupData, ptr %581, i32 0, i32 0
  %583 = load i32, ptr %582, align 8, !tbaa !112
  %584 = load ptr, ptr %10, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiWindow, ptr %584, i32 0, i32 55
  store i32 %583, ptr %585, align 4, !tbaa !111
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %586

586:                                              ; preds = %561, %547
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  store i8 0, ptr %25, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #13
  store i8 0, ptr %26, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #13
  store i8 0, ptr %27, align 1, !tbaa !91
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ImGuiContext, ptr %587, i32 0, i32 79
  %589 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %588, i32 0, i32 0
  %590 = load i32, ptr %589, align 8, !tbaa !125
  %591 = and i32 %590, 1
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %593, label %647

593:                                              ; preds = %586
  %594 = load ptr, ptr %10, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiWindow, ptr %594, i32 0, i32 65
  %596 = load i32, ptr %595, align 4
  %597 = shl i32 %596, 24
  %598 = ashr i32 %597, 24
  %599 = load ptr, ptr %8, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiContext, ptr %599, i32 0, i32 79
  %601 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %600, i32 0, i32 1
  %602 = load i32, ptr %601, align 4, !tbaa !148
  %603 = and i32 %598, %602
  %604 = icmp ne i32 %603, 0
  %605 = zext i1 %604 to i8
  store i8 %605, ptr %25, align 1, !tbaa !91
  %606 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %637

608:                                              ; preds = %593
  %609 = load ptr, ptr %8, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiContext, ptr %609, i32 0, i32 79
  %611 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %610, i32 0, i32 6
  %612 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %611)
  %613 = fcmp ogt float %612, 0x3EE4F8B580000000
  br i1 %613, label %614, label %637

614:                                              ; preds = %608
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.ImGuiContext, ptr %615, i32 0, i32 79
  %617 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %616, i32 0, i32 5
  %618 = load ptr, ptr %10, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiWindow, ptr %618, i32 0, i32 66
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %619, ptr align 4 %617, i64 8, i1 false), !tbaa.struct !149
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiContext, ptr %620, i32 0, i32 79
  %622 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %621, i32 0, i32 6
  %623 = load ptr, ptr %10, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.ImGuiWindow, ptr %623, i32 0, i32 67
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %624, ptr align 4 %622, i64 8, i1 false), !tbaa.struct !149
  %625 = load ptr, ptr %10, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 65
  %627 = load i32, ptr %626, align 4
  %628 = shl i32 %627, 24
  %629 = ashr i32 %628, 24
  %630 = and i32 %629, -15
  %631 = load i32, ptr %626, align 4
  %632 = and i32 %630, 255
  %633 = and i32 %631, -256
  %634 = or i32 %633, %632
  store i32 %634, ptr %626, align 4
  %635 = shl i32 %632, 24
  %636 = ashr i32 %635, 24
  br label %646

637:                                              ; preds = %608, %593
  %638 = load ptr, ptr %10, align 8, !tbaa !5
  %639 = load ptr, ptr %8, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.ImGuiContext, ptr %639, i32 0, i32 79
  %641 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %640, i32 0, i32 5
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiContext, ptr %642, i32 0, i32 79
  %644 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %643, i32 0, i32 1
  %645 = load i32, ptr %644, align 4, !tbaa !148
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %638, ptr noundef nonnull align 4 dereferenceable(8) %641, i32 noundef %645)
  br label %646

646:                                              ; preds = %637, %614
  br label %647

647:                                              ; preds = %646, %586
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImGuiContext, ptr %648, i32 0, i32 79
  %650 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %649, i32 0, i32 0
  %651 = load i32, ptr %650, align 8, !tbaa !125
  %652 = and i32 %651, 2
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %705

654:                                              ; preds = %647
  %655 = load ptr, ptr %10, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiWindow, ptr %655, i32 0, i32 65
  %657 = load i32, ptr %656, align 4
  %658 = shl i32 %657, 16
  %659 = ashr i32 %658, 24
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiContext, ptr %660, i32 0, i32 79
  %662 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %661, i32 0, i32 2
  %663 = load i32, ptr %662, align 8, !tbaa !150
  %664 = and i32 %659, %663
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %673

666:                                              ; preds = %654
  %667 = load ptr, ptr %8, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ImGuiContext, ptr %667, i32 0, i32 79
  %669 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %668, i32 0, i32 7
  %670 = getelementptr inbounds %struct.ImVec2, ptr %669, i32 0, i32 0
  %671 = load float, ptr %670, align 4, !tbaa !151
  %672 = fcmp ogt float %671, 0.000000e+00
  br label %673

673:                                              ; preds = %666, %654
  %674 = phi i1 [ false, %654 ], [ %672, %666 ]
  %675 = zext i1 %674 to i8
  store i8 %675, ptr %26, align 1, !tbaa !91
  %676 = load ptr, ptr %10, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiWindow, ptr %676, i32 0, i32 65
  %678 = load i32, ptr %677, align 4
  %679 = shl i32 %678, 16
  %680 = ashr i32 %679, 24
  %681 = load ptr, ptr %8, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiContext, ptr %681, i32 0, i32 79
  %683 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %682, i32 0, i32 2
  %684 = load i32, ptr %683, align 8, !tbaa !150
  %685 = and i32 %680, %684
  %686 = icmp ne i32 %685, 0
  br i1 %686, label %687, label %694

687:                                              ; preds = %673
  %688 = load ptr, ptr %8, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiContext, ptr %688, i32 0, i32 79
  %690 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %689, i32 0, i32 7
  %691 = getelementptr inbounds %struct.ImVec2, ptr %690, i32 0, i32 1
  %692 = load float, ptr %691, align 4, !tbaa !152
  %693 = fcmp ogt float %692, 0.000000e+00
  br label %694

694:                                              ; preds = %687, %673
  %695 = phi i1 [ false, %673 ], [ %693, %687 ]
  %696 = zext i1 %695 to i8
  store i8 %696, ptr %27, align 1, !tbaa !91
  %697 = load ptr, ptr %10, align 8, !tbaa !5
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.ImGuiContext, ptr %698, i32 0, i32 79
  %700 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %699, i32 0, i32 7
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.ImGuiContext, ptr %701, i32 0, i32 79
  %703 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %702, i32 0, i32 2
  %704 = load i32, ptr %703, align 8, !tbaa !150
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %697, ptr noundef nonnull align 4 dereferenceable(8) %700, i32 noundef %704)
  br label %705

705:                                              ; preds = %694, %647
  %706 = load ptr, ptr %8, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.ImGuiContext, ptr %706, i32 0, i32 79
  %708 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %707, i32 0, i32 0
  %709 = load i32, ptr %708, align 8, !tbaa !125
  %710 = and i32 %709, 128
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %712, label %751

712:                                              ; preds = %705
  %713 = load ptr, ptr %8, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.ImGuiContext, ptr %713, i32 0, i32 79
  %715 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %714, i32 0, i32 9
  %716 = getelementptr inbounds %struct.ImVec2, ptr %715, i32 0, i32 0
  %717 = load float, ptr %716, align 4, !tbaa !153
  %718 = fcmp oge float %717, 0.000000e+00
  br i1 %718, label %719, label %731

719:                                              ; preds = %712
  %720 = load ptr, ptr %8, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiContext, ptr %720, i32 0, i32 79
  %722 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %721, i32 0, i32 9
  %723 = getelementptr inbounds %struct.ImVec2, ptr %722, i32 0, i32 0
  %724 = load float, ptr %723, align 4, !tbaa !153
  %725 = load ptr, ptr %10, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImGuiWindow, ptr %725, i32 0, i32 31
  %727 = getelementptr inbounds %struct.ImVec2, ptr %726, i32 0, i32 0
  store float %724, ptr %727, align 8, !tbaa !154
  %728 = load ptr, ptr %10, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 32
  %730 = getelementptr inbounds %struct.ImVec2, ptr %729, i32 0, i32 0
  store float 0.000000e+00, ptr %730, align 8, !tbaa !155
  br label %731

731:                                              ; preds = %719, %712
  %732 = load ptr, ptr %8, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiContext, ptr %732, i32 0, i32 79
  %734 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %733, i32 0, i32 9
  %735 = getelementptr inbounds %struct.ImVec2, ptr %734, i32 0, i32 1
  %736 = load float, ptr %735, align 4, !tbaa !156
  %737 = fcmp oge float %736, 0.000000e+00
  br i1 %737, label %738, label %750

738:                                              ; preds = %731
  %739 = load ptr, ptr %8, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 79
  %741 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %740, i32 0, i32 9
  %742 = getelementptr inbounds %struct.ImVec2, ptr %741, i32 0, i32 1
  %743 = load float, ptr %742, align 4, !tbaa !156
  %744 = load ptr, ptr %10, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.ImGuiWindow, ptr %744, i32 0, i32 31
  %746 = getelementptr inbounds %struct.ImVec2, ptr %745, i32 0, i32 1
  store float %743, ptr %746, align 4, !tbaa !157
  %747 = load ptr, ptr %10, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiWindow, ptr %747, i32 0, i32 32
  %749 = getelementptr inbounds %struct.ImVec2, ptr %748, i32 0, i32 1
  store float 0.000000e+00, ptr %749, align 4, !tbaa !158
  br label %750

750:                                              ; preds = %738, %731
  br label %751

751:                                              ; preds = %750, %705
  %752 = load ptr, ptr %8, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiContext, ptr %752, i32 0, i32 79
  %754 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %753, i32 0, i32 0
  %755 = load i32, ptr %754, align 8, !tbaa !125
  %756 = and i32 %755, 4
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %764

758:                                              ; preds = %751
  %759 = load ptr, ptr %8, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.ImGuiContext, ptr %759, i32 0, i32 79
  %761 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %760, i32 0, i32 8
  %762 = load ptr, ptr %10, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiWindow, ptr %762, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %763, ptr align 4 %761, i64 8, i1 false), !tbaa.struct !149
  br label %771

764:                                              ; preds = %751
  %765 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %766 = trunc i8 %765 to i1
  br i1 %766, label %767, label %770

767:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.ImGuiWindow, ptr %768, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %769, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  br label %770

770:                                              ; preds = %767, %764
  br label %771

771:                                              ; preds = %770, %758
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiContext, ptr %772, i32 0, i32 79
  %774 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %773, i32 0, i32 0
  %775 = load i32, ptr %774, align 8, !tbaa !125
  %776 = and i32 %775, 1024
  %777 = icmp ne i32 %776, 0
  br i1 %777, label %778, label %784

778:                                              ; preds = %771
  %779 = load ptr, ptr %8, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.ImGuiContext, ptr %779, i32 0, i32 79
  %781 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %780, i32 0, i32 18
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiWindow, ptr %782, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %783, ptr align 4 %781, i64 26, i1 false), !tbaa.struct !159
  br label %784

784:                                              ; preds = %778, %771
  %785 = load ptr, ptr %8, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiContext, ptr %785, i32 0, i32 79
  %787 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %786, i32 0, i32 0
  %788 = load i32, ptr %787, align 8, !tbaa !125
  %789 = and i32 %788, 8
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %802

791:                                              ; preds = %784
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = load ptr, ptr %8, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.ImGuiContext, ptr %793, i32 0, i32 79
  %795 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %794, i32 0, i32 11
  %796 = load i8, ptr %795, align 1, !tbaa !160, !range !87, !noundef !88
  %797 = trunc i8 %796 to i1
  %798 = load ptr, ptr %8, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiContext, ptr %798, i32 0, i32 79
  %800 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %799, i32 0, i32 3
  %801 = load i32, ptr %800, align 4, !tbaa !161
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %792, i1 noundef zeroext %797, i32 noundef %801)
  br label %802

802:                                              ; preds = %791, %784
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.ImGuiContext, ptr %803, i32 0, i32 79
  %805 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %804, i32 0, i32 0
  %806 = load i32, ptr %805, align 8, !tbaa !125
  %807 = and i32 %806, 32
  %808 = icmp ne i32 %807, 0
  br i1 %808, label %809, label %811

809:                                              ; preds = %802
  %810 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %810, i32 noundef 0)
  br label %811

811:                                              ; preds = %809, %802
  %812 = load ptr, ptr %10, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.ImGuiWindow, ptr %812, i32 0, i32 44
  %814 = load i8, ptr %813, align 1, !tbaa !115, !range !87, !noundef !88
  %815 = trunc i8 %814 to i1
  br i1 %815, label %816, label %818

816:                                              ; preds = %811
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %817, i32 noundef 8, i1 noundef zeroext false)
  br label %818

818:                                              ; preds = %816, %811
  %819 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %820 = trunc i8 %819 to i1
  br i1 %820, label %821, label %3295

821:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #13
  %822 = load i32, ptr %7, align 4, !tbaa !9
  %823 = and i32 %822, 16777216
  %824 = icmp ne i32 %823, 0
  br i1 %824, label %825, label %829

825:                                              ; preds = %821
  %826 = load i32, ptr %7, align 4, !tbaa !9
  %827 = and i32 %826, 33554432
  %828 = icmp ne i32 %827, 0
  br label %829

829:                                              ; preds = %825, %821
  %830 = phi i1 [ false, %821 ], [ %828, %825 ]
  %831 = zext i1 %830 to i8
  store i8 %831, ptr %29, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #13
  %832 = load ptr, ptr %10, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ImGuiWindow, ptr %832, i32 0, i32 62
  %834 = load i8, ptr %833, align 1, !tbaa !162
  %835 = sext i8 %834 to i32
  %836 = icmp sgt i32 %835, 0
  %837 = zext i1 %836 to i8
  store i8 %837, ptr %30, align 1, !tbaa !91
  %838 = load ptr, ptr %10, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.ImGuiWindow, ptr %838, i32 0, i32 38
  store i8 1, ptr %839, align 1, !tbaa !163
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = icmp ne ptr %840, null
  %842 = load ptr, ptr %10, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.ImGuiWindow, ptr %842, i32 0, i32 48
  %844 = zext i1 %841 to i8
  store i8 %844, ptr %843, align 1, !tbaa !164
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %846, ptr align 4 %31, i64 16, i1 false), !tbaa.struct !165
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  %847 = load ptr, ptr %10, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.ImGuiWindow, ptr %847, i32 0, i32 68
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %848, i32 noundef 1)
  %849 = load ptr, ptr %10, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiWindow, ptr %849, i32 0, i32 88
  %851 = load ptr, ptr %850, align 8, !tbaa !166
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %851)
  %852 = load ptr, ptr %10, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.ImGuiWindow, ptr %852, i32 0, i32 69
  %854 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %853, i32 0, i32 29
  store i32 -1, ptr %854, align 8, !tbaa !167
  %855 = load i32, ptr %7, align 4, !tbaa !9
  %856 = and i32 %855, 536870912
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %858, label %865

858:                                              ; preds = %829
  %859 = load ptr, ptr %10, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImGuiWindow, ptr %859, i32 0, i32 88
  %861 = load ptr, ptr %860, align 8, !tbaa !166
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %861, i32 noundef 2)
  %862 = load ptr, ptr %10, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.ImGuiWindow, ptr %862, i32 0, i32 88
  %864 = load ptr, ptr %863, align 8, !tbaa !166
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %864, i32 noundef 1)
  br label %865

865:                                              ; preds = %858, %829
  %866 = load ptr, ptr %10, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.ImGuiWindow, ptr %866, i32 0, i32 104
  %868 = load i8, ptr %867, align 4, !tbaa !168, !range !87, !noundef !88
  %869 = trunc i8 %868 to i1
  br i1 %869, label %870, label %872

870:                                              ; preds = %865
  %871 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %871)
  br label %872

872:                                              ; preds = %870, %865
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  store i8 0, ptr %33, align 1, !tbaa !91
  %873 = load ptr, ptr %10, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.ImGuiWindow, ptr %873, i32 0, i32 6
  %875 = load ptr, ptr %874, align 8, !tbaa !169
  %876 = icmp ne ptr %875, null
  br i1 %876, label %877, label %885

877:                                              ; preds = %872
  %878 = load ptr, ptr %10, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ImGuiWindow, ptr %878, i32 0, i32 6
  %880 = load ptr, ptr %879, align 8, !tbaa !169
  %881 = getelementptr inbounds %struct.ImGuiViewportP, ptr %880, i32 0, i32 1
  %882 = load ptr, ptr %881, align 8, !tbaa !170
  %883 = load ptr, ptr %10, align 8, !tbaa !5
  %884 = icmp eq ptr %882, %883
  br i1 %884, label %891, label %885

885:                                              ; preds = %877, %872
  %886 = load ptr, ptr %10, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiWindow, ptr %886, i32 0, i32 105
  %888 = load i8, ptr %887, align 1
  %889 = and i8 %888, 1
  %890 = trunc i8 %889 to i1
  br i1 %890, label %891, label %892

891:                                              ; preds = %885, %877
  store i8 1, ptr %33, align 1, !tbaa !91
  br label %905

892:                                              ; preds = %885
  %893 = load ptr, ptr %8, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.ImGuiContext, ptr %893, i32 0, i32 143
  %895 = load ptr, ptr %894, align 8, !tbaa !176
  %896 = icmp ne ptr %895, null
  br i1 %896, label %897, label %904

897:                                              ; preds = %892
  %898 = load ptr, ptr %10, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImGuiWindow, ptr %898, i32 0, i32 3
  %900 = load i32, ptr %899, align 4, !tbaa !116
  %901 = and i32 %900, 524288
  %902 = icmp eq i32 %901, 0
  br i1 %902, label %903, label %904

903:                                              ; preds = %897
  store i8 1, ptr %33, align 1, !tbaa !91
  br label %904

904:                                              ; preds = %903, %897, %892
  br label %905

905:                                              ; preds = %904, %891
  %906 = load i8, ptr %33, align 1, !tbaa !91, !range !87, !noundef !88
  %907 = trunc i8 %906 to i1
  br i1 %907, label %908, label %934

908:                                              ; preds = %905
  %909 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %910 = trunc i8 %909 to i1
  br i1 %910, label %934, label %911

911:                                              ; preds = %908
  %912 = load ptr, ptr %5, align 8, !tbaa !5
  %913 = load ptr, ptr %10, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiWindow, ptr %913, i32 0, i32 1
  %915 = load ptr, ptr %914, align 8, !tbaa !177
  %916 = call i32 @strcmp(ptr noundef %912, ptr noundef %915) #15
  %917 = icmp ne i32 %916, 0
  br i1 %917, label %918, label %934

918:                                              ; preds = %911
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %919 = load ptr, ptr %10, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.ImGuiWindow, ptr %919, i32 0, i32 25
  %921 = load i32, ptr %920, align 8, !tbaa !178
  %922 = sext i32 %921 to i64
  store i64 %922, ptr %34, align 8, !tbaa !179
  %923 = load ptr, ptr %10, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.ImGuiWindow, ptr %923, i32 0, i32 1
  %925 = load ptr, ptr %924, align 8, !tbaa !177
  %926 = load ptr, ptr %5, align 8, !tbaa !5
  %927 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %925, ptr noundef %34, ptr noundef %926)
  %928 = load ptr, ptr %10, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImGuiWindow, ptr %928, i32 0, i32 1
  store ptr %927, ptr %929, align 8, !tbaa !177
  %930 = load i64, ptr %34, align 8, !tbaa !179
  %931 = trunc i64 %930 to i32
  %932 = load ptr, ptr %10, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiWindow, ptr %932, i32 0, i32 25
  store i32 %931, ptr %933, align 8, !tbaa !178
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  br label %934

934:                                              ; preds = %918, %911, %908, %905
  %935 = load ptr, ptr %10, align 8, !tbaa !5
  %936 = load ptr, ptr %10, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImGuiWindow, ptr %936, i32 0, i32 13
  %938 = load ptr, ptr %10, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ImGuiWindow, ptr %938, i32 0, i32 14
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %935, ptr noundef %937, ptr noundef %939)
  %940 = load ptr, ptr %10, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiWindow, ptr %940, i32 0, i32 61
  %942 = load i8, ptr %941, align 8, !tbaa !181
  %943 = sext i8 %942 to i32
  %944 = icmp sgt i32 %943, 0
  br i1 %944, label %945, label %950

945:                                              ; preds = %934
  %946 = load ptr, ptr %10, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.ImGuiWindow, ptr %946, i32 0, i32 61
  %948 = load i8, ptr %947, align 8, !tbaa !181
  %949 = add i8 %948, -1
  store i8 %949, ptr %947, align 8, !tbaa !181
  br label %950

950:                                              ; preds = %945, %934
  %951 = load ptr, ptr %10, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.ImGuiWindow, ptr %951, i32 0, i32 62
  %953 = load i8, ptr %952, align 1, !tbaa !162
  %954 = sext i8 %953 to i32
  %955 = icmp sgt i32 %954, 0
  br i1 %955, label %956, label %961

956:                                              ; preds = %950
  %957 = load ptr, ptr %10, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImGuiWindow, ptr %957, i32 0, i32 62
  %959 = load i8, ptr %958, align 1, !tbaa !162
  %960 = add i8 %959, -1
  store i8 %960, ptr %958, align 1, !tbaa !162
  br label %961

961:                                              ; preds = %956, %950
  %962 = load ptr, ptr %10, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.ImGuiWindow, ptr %962, i32 0, i32 63
  %964 = load i8, ptr %963, align 2, !tbaa !182
  %965 = sext i8 %964 to i32
  %966 = icmp sgt i32 %965, 0
  br i1 %966, label %967, label %972

967:                                              ; preds = %961
  %968 = load ptr, ptr %10, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiWindow, ptr %968, i32 0, i32 63
  %970 = load i8, ptr %969, align 2, !tbaa !182
  %971 = add i8 %970, -1
  store i8 %971, ptr %969, align 2, !tbaa !182
  br label %972

972:                                              ; preds = %967, %961
  %973 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %974 = trunc i8 %973 to i1
  br i1 %974, label %975, label %984

975:                                              ; preds = %972
  %976 = load i8, ptr %26, align 1, !tbaa !91, !range !87, !noundef !88
  %977 = trunc i8 %976 to i1
  br i1 %977, label %978, label %981

978:                                              ; preds = %975
  %979 = load i8, ptr %27, align 1, !tbaa !91, !range !87, !noundef !88
  %980 = trunc i8 %979 to i1
  br i1 %980, label %984, label %981

981:                                              ; preds = %978, %975
  %982 = load ptr, ptr %10, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiWindow, ptr %982, i32 0, i32 62
  store i8 1, ptr %983, align 1, !tbaa !162
  br label %984

984:                                              ; preds = %981, %978, %972
  %985 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %986 = trunc i8 %985 to i1
  br i1 %986, label %987, label %1023

987:                                              ; preds = %984
  %988 = load i32, ptr %7, align 4, !tbaa !9
  %989 = and i32 %988, 100663296
  %990 = icmp ne i32 %989, 0
  br i1 %990, label %991, label %1023

991:                                              ; preds = %987
  %992 = load ptr, ptr %10, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiWindow, ptr %992, i32 0, i32 62
  store i8 1, ptr %993, align 1, !tbaa !162
  %994 = load i32, ptr %7, align 4, !tbaa !9
  %995 = and i32 %994, 64
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1022

997:                                              ; preds = %991
  %998 = load i8, ptr %26, align 1, !tbaa !91, !range !87, !noundef !88
  %999 = trunc i8 %998 to i1
  br i1 %999, label %1007, label %1000

1000:                                             ; preds = %997
  %1001 = load ptr, ptr %10, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiWindow, ptr %1001, i32 0, i32 12
  %1003 = getelementptr inbounds %struct.ImVec2, ptr %1002, i32 0, i32 0
  store float 0.000000e+00, ptr %1003, align 8, !tbaa !183
  %1004 = load ptr, ptr %10, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.ImGuiWindow, ptr %1004, i32 0, i32 11
  %1006 = getelementptr inbounds %struct.ImVec2, ptr %1005, i32 0, i32 0
  store float 0.000000e+00, ptr %1006, align 8, !tbaa !184
  br label %1007

1007:                                             ; preds = %1000, %997
  %1008 = load i8, ptr %27, align 1, !tbaa !91, !range !87, !noundef !88
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1017, label %1010

1010:                                             ; preds = %1007
  %1011 = load ptr, ptr %10, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiWindow, ptr %1011, i32 0, i32 12
  %1013 = getelementptr inbounds %struct.ImVec2, ptr %1012, i32 0, i32 1
  store float 0.000000e+00, ptr %1013, align 4, !tbaa !185
  %1014 = load ptr, ptr %10, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiWindow, ptr %1014, i32 0, i32 11
  %1016 = getelementptr inbounds %struct.ImVec2, ptr %1015, i32 0, i32 1
  store float 0.000000e+00, ptr %1016, align 4, !tbaa !186
  br label %1017

1017:                                             ; preds = %1010, %1007
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1018 = load ptr, ptr %10, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.ImGuiWindow, ptr %1018, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1019, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !149
  %1020 = load ptr, ptr %10, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.ImGuiWindow, ptr %1020, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1021, ptr align 4 %1019, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  br label %1022

1022:                                             ; preds = %1017, %991
  br label %1023

1023:                                             ; preds = %1022, %987, %984
  %1024 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef %1024)
  %1025 = load ptr, ptr %10, align 8, !tbaa !5
  %1026 = load ptr, ptr %10, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.ImGuiWindow, ptr %1026, i32 0, i32 6
  %1028 = load ptr, ptr %1027, align 8, !tbaa !169
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1025, ptr noundef %1028)
  %1029 = load ptr, ptr %8, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.ImGuiContext, ptr %1029, i32 0, i32 2
  %1031 = getelementptr inbounds %struct.ImGuiIO, ptr %1030, i32 0, i32 0
  %1032 = load i32, ptr %1031, align 8, !tbaa !187
  %1033 = and i32 %1032, 32768
  %1034 = icmp ne i32 %1033, 0
  br i1 %1034, label %1035, label %1041

1035:                                             ; preds = %1023
  %1036 = load ptr, ptr %10, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiWindow, ptr %1036, i32 0, i32 6
  %1038 = load ptr, ptr %1037, align 8, !tbaa !169
  %1039 = getelementptr inbounds %struct.ImGuiViewport, ptr %1038, i32 0, i32 6
  %1040 = load float, ptr %1039, align 8, !tbaa !188
  br label %1042

1041:                                             ; preds = %1023
  br label %1042

1042:                                             ; preds = %1041, %1035
  %1043 = phi float [ %1040, %1035 ], [ 1.000000e+00, %1041 ]
  %1044 = load ptr, ptr %10, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 86
  store float %1043, ptr %1045, align 4, !tbaa !189
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1046)
  %1047 = load ptr, ptr %10, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiWindow, ptr %1047, i32 0, i32 3
  %1049 = load i32, ptr %1048, align 4, !tbaa !116
  store i32 %1049, ptr %7, align 4, !tbaa !9
  %1050 = load ptr, ptr %10, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.ImGuiWindow, ptr %1050, i32 0, i32 105
  %1052 = load i8, ptr %1051, align 1
  %1053 = and i8 %1052, 1
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1065, label %1055

1055:                                             ; preds = %1042
  %1056 = load i32, ptr %7, align 4, !tbaa !9
  %1057 = and i32 %1056, 16777216
  %1058 = icmp ne i32 %1057, 0
  br i1 %1058, label %1059, label %1065

1059:                                             ; preds = %1055
  %1060 = load ptr, ptr %9, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.ImGuiStyle, ptr %1060, i32 0, i32 9
  %1062 = load float, ptr %1061, align 4, !tbaa !190
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 18
  store float %1062, ptr %1064, align 4, !tbaa !191
  br label %1085

1065:                                             ; preds = %1055, %1042
  %1066 = load i32, ptr %7, align 4, !tbaa !9
  %1067 = and i32 %1066, 100663296
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1069, label %1077

1069:                                             ; preds = %1065
  %1070 = load i32, ptr %7, align 4, !tbaa !9
  %1071 = and i32 %1070, 134217728
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1077, label %1073

1073:                                             ; preds = %1069
  %1074 = load ptr, ptr %9, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.ImGuiStyle, ptr %1074, i32 0, i32 11
  %1076 = load float, ptr %1075, align 4, !tbaa !192
  br label %1081

1077:                                             ; preds = %1069, %1065
  %1078 = load ptr, ptr %9, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiStyle, ptr %1078, i32 0, i32 4
  %1080 = load float, ptr %1079, align 4, !tbaa !193
  br label %1081

1081:                                             ; preds = %1077, %1073
  %1082 = phi float [ %1076, %1073 ], [ %1080, %1077 ]
  %1083 = load ptr, ptr %10, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiWindow, ptr %1083, i32 0, i32 18
  store float %1082, ptr %1084, align 4, !tbaa !191
  br label %1085

1085:                                             ; preds = %1081, %1059
  %1086 = load ptr, ptr %10, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiWindow, ptr %1086, i32 0, i32 105
  %1088 = load i8, ptr %1087, align 1
  %1089 = and i8 %1088, 1
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1118, label %1091

1091:                                             ; preds = %1085
  %1092 = load i32, ptr %7, align 4, !tbaa !9
  %1093 = and i32 %1092, 16777216
  %1094 = icmp ne i32 %1093, 0
  br i1 %1094, label %1095, label %1118

1095:                                             ; preds = %1091
  %1096 = load i32, ptr %7, align 4, !tbaa !9
  %1097 = and i32 %1096, 67174400
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1118, label %1099

1099:                                             ; preds = %1095
  %1100 = load ptr, ptr %10, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiWindow, ptr %1100, i32 0, i32 18
  %1102 = load float, ptr %1101, align 4, !tbaa !191
  %1103 = fcmp oeq float %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1118

1104:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %1105 = load i32, ptr %7, align 4, !tbaa !9
  %1106 = and i32 %1105, 1024
  %1107 = icmp ne i32 %1106, 0
  br i1 %1107, label %1108, label %1113

1108:                                             ; preds = %1104
  %1109 = load ptr, ptr %9, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.ImGuiStyle, ptr %1109, i32 0, i32 2
  %1111 = getelementptr inbounds %struct.ImVec2, ptr %1110, i32 0, i32 1
  %1112 = load float, ptr %1111, align 4, !tbaa !194
  br label %1114

1113:                                             ; preds = %1104
  br label %1114

1114:                                             ; preds = %1113, %1108
  %1115 = phi float [ %1112, %1108 ], [ 0.000000e+00, %1113 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef 0.000000e+00, float noundef %1115)
  %1116 = load ptr, ptr %10, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.ImGuiWindow, ptr %1116, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1117, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  br label %1123

1118:                                             ; preds = %1099, %1095, %1091, %1085
  %1119 = load ptr, ptr %9, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImGuiStyle, ptr %1119, i32 0, i32 2
  %1121 = load ptr, ptr %10, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.ImGuiWindow, ptr %1121, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1122, ptr align 4 %1120, i64 8, i1 false), !tbaa.struct !149
  br label %1123

1123:                                             ; preds = %1118, %1114
  %1124 = load ptr, ptr %10, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.ImGuiWindow, ptr %1124, i32 0, i32 16
  %1126 = getelementptr inbounds %struct.ImVec2, ptr %1125, i32 0, i32 0
  %1127 = load float, ptr %1126, align 8, !tbaa !195
  %1128 = load ptr, ptr %9, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.ImGuiStyle, ptr %1128, i32 0, i32 15
  %1130 = getelementptr inbounds %struct.ImVec2, ptr %1129, i32 0, i32 0
  %1131 = load float, ptr %1130, align 4, !tbaa !196
  %1132 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1127, float noundef %1131)
  %1133 = load ptr, ptr %8, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiContext, ptr %1133, i32 0, i32 79
  %1135 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1134, i32 0, i32 19
  %1136 = getelementptr inbounds %struct.ImVec2, ptr %1135, i32 0, i32 0
  %1137 = load float, ptr %1136, align 8, !tbaa !197
  %1138 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1132, float noundef %1137)
  %1139 = load ptr, ptr %10, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.ImGuiWindow, ptr %1139, i32 0, i32 69
  %1141 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1140, i32 0, i32 22
  %1142 = getelementptr inbounds %struct.ImVec2, ptr %1141, i32 0, i32 0
  store float %1138, ptr %1142, align 4, !tbaa !198
  %1143 = load ptr, ptr %8, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.ImGuiContext, ptr %1143, i32 0, i32 79
  %1145 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1144, i32 0, i32 19
  %1146 = getelementptr inbounds %struct.ImVec2, ptr %1145, i32 0, i32 1
  %1147 = load float, ptr %1146, align 4, !tbaa !199
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiWindow, ptr %1148, i32 0, i32 69
  %1150 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1149, i32 0, i32 22
  %1151 = getelementptr inbounds %struct.ImVec2, ptr %1150, i32 0, i32 1
  store float %1147, ptr %1151, align 4, !tbaa !200
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #13
  %1152 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %1153 = trunc i8 %1152 to i1
  %1154 = zext i1 %1153 to i8
  store i8 %1154, ptr %37, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #13
  %1155 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %1156 = trunc i8 %1155 to i1
  %1157 = zext i1 %1156 to i8
  store i8 %1157, ptr %38, align 1, !tbaa !91
  %1158 = load i32, ptr %7, align 4, !tbaa !9
  %1159 = and i32 %1158, 1
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1230, label %1161

1161:                                             ; preds = %1123
  %1162 = load i32, ptr %7, align 4, !tbaa !9
  %1163 = and i32 %1162, 32
  %1164 = icmp ne i32 %1163, 0
  br i1 %1164, label %1230, label %1165

1165:                                             ; preds = %1161
  %1166 = load ptr, ptr %10, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiWindow, ptr %1166, i32 0, i32 105
  %1168 = load i8, ptr %1167, align 1
  %1169 = and i8 %1168, 1
  %1170 = trunc i8 %1169 to i1
  br i1 %1170, label %1230, label %1171

1171:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #13
  %1172 = load ptr, ptr %10, align 8, !tbaa !5
  %1173 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1172)
  %1174 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 0
  %1175 = extractvalue { <2 x float>, <2 x float> } %1173, 0
  store <2 x float> %1175, ptr %1174, align 4
  %1176 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 1
  %1177 = extractvalue { <2 x float>, <2 x float> } %1173, 1
  store <2 x float> %1177, ptr %1176, align 4
  %1178 = load ptr, ptr %8, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImGuiContext, ptr %1178, i32 0, i32 34
  %1180 = load ptr, ptr %1179, align 8, !tbaa !201
  %1181 = load ptr, ptr %10, align 8, !tbaa !5
  %1182 = icmp eq ptr %1180, %1181
  br i1 %1182, label %1183, label %1208

1183:                                             ; preds = %1171
  %1184 = load ptr, ptr %8, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.ImGuiContext, ptr %1184, i32 0, i32 44
  %1186 = load i32, ptr %1185, align 4, !tbaa !202
  %1187 = icmp eq i32 %1186, 0
  br i1 %1187, label %1188, label %1208

1188:                                             ; preds = %1183
  %1189 = load ptr, ptr %8, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ImGuiContext, ptr %1189, i32 0, i32 45
  %1191 = load i32, ptr %1190, align 8, !tbaa !203
  %1192 = icmp eq i32 %1191, 0
  br i1 %1192, label %1193, label %1208

1193:                                             ; preds = %1188
  %1194 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 0
  %1195 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 1
  %1196 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1194, ptr noundef nonnull align 4 dereferenceable(8) %1195, i1 noundef zeroext true)
  br i1 %1196, label %1197, label %1208

1197:                                             ; preds = %1193
  %1198 = load ptr, ptr %8, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.ImGuiContext, ptr %1198, i32 0, i32 2
  %1200 = getelementptr inbounds %struct.ImGuiIO, ptr %1199, i32 0, i32 85
  %1201 = getelementptr inbounds [5 x i16], ptr %1200, i64 0, i64 0
  %1202 = load i16, ptr %1201, align 2, !tbaa !204
  %1203 = zext i16 %1202 to i32
  %1204 = icmp eq i32 %1203, 2
  br i1 %1204, label %1205, label %1208

1205:                                             ; preds = %1197
  %1206 = load ptr, ptr %10, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.ImGuiWindow, ptr %1206, i32 0, i32 42
  store i8 1, ptr %1207, align 1, !tbaa !205
  br label %1208

1208:                                             ; preds = %1205, %1197, %1193, %1188, %1183, %1171
  %1209 = load ptr, ptr %10, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiWindow, ptr %1209, i32 0, i32 42
  %1211 = load i8, ptr %1210, align 1, !tbaa !205, !range !87, !noundef !88
  %1212 = trunc i8 %1211 to i1
  br i1 %1212, label %1213, label %1229

1213:                                             ; preds = %1208
  %1214 = load ptr, ptr %10, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.ImGuiWindow, ptr %1214, i32 0, i32 41
  %1216 = load i8, ptr %1215, align 2, !tbaa !206, !range !87, !noundef !88
  %1217 = trunc i8 %1216 to i1
  %1218 = xor i1 %1217, true
  %1219 = load ptr, ptr %10, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.ImGuiWindow, ptr %1219, i32 0, i32 41
  %1221 = zext i1 %1218 to i8
  store i8 %1221, ptr %1220, align 2, !tbaa !206
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 41
  %1224 = load i8, ptr %1223, align 2, !tbaa !206, !range !87, !noundef !88
  %1225 = trunc i8 %1224 to i1
  br i1 %1225, label %1227, label %1226

1226:                                             ; preds = %1213
  store i8 1, ptr %38, align 1, !tbaa !91
  br label %1227

1227:                                             ; preds = %1226, %1213
  %1228 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1228)
  br label %1229

1229:                                             ; preds = %1227, %1208
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #13
  br label %1233

1230:                                             ; preds = %1165, %1161, %1123
  %1231 = load ptr, ptr %10, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.ImGuiWindow, ptr %1231, i32 0, i32 41
  store i8 0, ptr %1232, align 2, !tbaa !206
  br label %1233

1233:                                             ; preds = %1230, %1229
  %1234 = load ptr, ptr %10, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.ImGuiWindow, ptr %1234, i32 0, i32 42
  store i8 0, ptr %1235, align 1, !tbaa !205
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1236 = load ptr, ptr %10, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.ImGuiWindow, ptr %1236, i32 0, i32 34
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1237, i64 8, i1 false), !tbaa.struct !149
  %1238 = load ptr, ptr %10, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiWindow, ptr %1238, i32 0, i32 19
  store float 0.000000e+00, ptr %1239, align 8, !tbaa !207
  %1240 = load ptr, ptr %10, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.ImGuiWindow, ptr %1240, i32 0, i32 21
  store float 0.000000e+00, ptr %1241, align 8, !tbaa !208
  %1242 = load ptr, ptr %10, align 8, !tbaa !5
  %1243 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %1242)
  %1244 = load ptr, ptr %10, align 8, !tbaa !5
  %1245 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %1244)
  %1246 = fadd float %1243, %1245
  %1247 = load ptr, ptr %10, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiWindow, ptr %1247, i32 0, i32 20
  store float %1246, ptr %1248, align 4, !tbaa !209
  %1249 = load ptr, ptr %10, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.ImGuiWindow, ptr %1249, i32 0, i32 22
  store float 0.000000e+00, ptr %1250, align 4, !tbaa !210
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1251 = load ptr, ptr %10, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.ImGuiWindow, ptr %1251, i32 0, i32 34
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1252, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1253 = load ptr, ptr %10, align 8, !tbaa !5
  %1254 = load ptr, ptr %10, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiWindow, ptr %1254, i32 0, i32 14
  %1256 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1253, ptr noundef nonnull align 4 dereferenceable(8) %1255)
  store <2 x float> %1256, ptr %42, align 4
  %1257 = load i32, ptr %7, align 4, !tbaa !9
  %1258 = and i32 %1257, 64
  %1259 = icmp ne i32 %1258, 0
  br i1 %1259, label %1260, label %1284

1260:                                             ; preds = %1233
  %1261 = load ptr, ptr %10, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.ImGuiWindow, ptr %1261, i32 0, i32 41
  %1263 = load i8, ptr %1262, align 2, !tbaa !206, !range !87, !noundef !88
  %1264 = trunc i8 %1263 to i1
  br i1 %1264, label %1284, label %1265

1265:                                             ; preds = %1260
  %1266 = load i8, ptr %26, align 1, !tbaa !91, !range !87, !noundef !88
  %1267 = trunc i8 %1266 to i1
  br i1 %1267, label %1274, label %1268

1268:                                             ; preds = %1265
  %1269 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1270 = load float, ptr %1269, align 4, !tbaa !211
  %1271 = load ptr, ptr %10, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.ImGuiWindow, ptr %1271, i32 0, i32 12
  %1273 = getelementptr inbounds %struct.ImVec2, ptr %1272, i32 0, i32 0
  store float %1270, ptr %1273, align 8, !tbaa !183
  store i8 1, ptr %37, align 1, !tbaa !91
  br label %1274

1274:                                             ; preds = %1268, %1265
  %1275 = load i8, ptr %27, align 1, !tbaa !91, !range !87, !noundef !88
  %1276 = trunc i8 %1275 to i1
  br i1 %1276, label %1283, label %1277

1277:                                             ; preds = %1274
  %1278 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1279 = load float, ptr %1278, align 4, !tbaa !212
  %1280 = load ptr, ptr %10, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ImGuiWindow, ptr %1280, i32 0, i32 12
  %1282 = getelementptr inbounds %struct.ImVec2, ptr %1281, i32 0, i32 1
  store float %1279, ptr %1282, align 4, !tbaa !185
  store i8 1, ptr %38, align 1, !tbaa !91
  br label %1283

1283:                                             ; preds = %1277, %1274
  br label %1365

1284:                                             ; preds = %1260, %1233
  %1285 = load ptr, ptr %10, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ImGuiWindow, ptr %1285, i32 0, i32 56
  %1287 = load i8, ptr %1286, align 8, !tbaa !213
  %1288 = sext i8 %1287 to i32
  %1289 = icmp sgt i32 %1288, 0
  br i1 %1289, label %1296, label %1290

1290:                                             ; preds = %1284
  %1291 = load ptr, ptr %10, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.ImGuiWindow, ptr %1291, i32 0, i32 57
  %1293 = load i8, ptr %1292, align 1, !tbaa !214
  %1294 = sext i8 %1293 to i32
  %1295 = icmp sgt i32 %1294, 0
  br i1 %1295, label %1296, label %1364

1296:                                             ; preds = %1290, %1284
  %1297 = load i8, ptr %26, align 1, !tbaa !91, !range !87, !noundef !88
  %1298 = trunc i8 %1297 to i1
  br i1 %1298, label %1326, label %1299

1299:                                             ; preds = %1296
  %1300 = load ptr, ptr %10, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ImGuiWindow, ptr %1300, i32 0, i32 56
  %1302 = load i8, ptr %1301, align 8, !tbaa !213
  %1303 = sext i8 %1302 to i32
  %1304 = icmp sgt i32 %1303, 0
  br i1 %1304, label %1305, label %1326

1305:                                             ; preds = %1299
  %1306 = load ptr, ptr %10, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.ImGuiWindow, ptr %1306, i32 0, i32 59
  %1308 = load i8, ptr %1307, align 1, !tbaa !215, !range !87, !noundef !88
  %1309 = trunc i8 %1308 to i1
  br i1 %1309, label %1310, label %1318

1310:                                             ; preds = %1305
  %1311 = load ptr, ptr %10, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.ImGuiWindow, ptr %1311, i32 0, i32 12
  %1313 = getelementptr inbounds %struct.ImVec2, ptr %1312, i32 0, i32 0
  %1314 = load float, ptr %1313, align 8, !tbaa !183
  %1315 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1316 = load float, ptr %1315, align 4, !tbaa !211
  %1317 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1314, float noundef %1316)
  br label %1321

1318:                                             ; preds = %1305
  %1319 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1320 = load float, ptr %1319, align 4, !tbaa !211
  br label %1321

1321:                                             ; preds = %1318, %1310
  %1322 = phi float [ %1317, %1310 ], [ %1320, %1318 ]
  %1323 = load ptr, ptr %10, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 12
  %1325 = getelementptr inbounds %struct.ImVec2, ptr %1324, i32 0, i32 0
  store float %1322, ptr %1325, align 8, !tbaa !183
  store i8 1, ptr %37, align 1, !tbaa !91
  br label %1326

1326:                                             ; preds = %1321, %1299, %1296
  %1327 = load i8, ptr %27, align 1, !tbaa !91, !range !87, !noundef !88
  %1328 = trunc i8 %1327 to i1
  br i1 %1328, label %1356, label %1329

1329:                                             ; preds = %1326
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 57
  %1332 = load i8, ptr %1331, align 1, !tbaa !214
  %1333 = sext i8 %1332 to i32
  %1334 = icmp sgt i32 %1333, 0
  br i1 %1334, label %1335, label %1356

1335:                                             ; preds = %1329
  %1336 = load ptr, ptr %10, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiWindow, ptr %1336, i32 0, i32 59
  %1338 = load i8, ptr %1337, align 1, !tbaa !215, !range !87, !noundef !88
  %1339 = trunc i8 %1338 to i1
  br i1 %1339, label %1340, label %1348

1340:                                             ; preds = %1335
  %1341 = load ptr, ptr %10, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.ImGuiWindow, ptr %1341, i32 0, i32 12
  %1343 = getelementptr inbounds %struct.ImVec2, ptr %1342, i32 0, i32 1
  %1344 = load float, ptr %1343, align 4, !tbaa !185
  %1345 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1346 = load float, ptr %1345, align 4, !tbaa !212
  %1347 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1344, float noundef %1346)
  br label %1351

1348:                                             ; preds = %1335
  %1349 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1350 = load float, ptr %1349, align 4, !tbaa !212
  br label %1351

1351:                                             ; preds = %1348, %1340
  %1352 = phi float [ %1347, %1340 ], [ %1350, %1348 ]
  %1353 = load ptr, ptr %10, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.ImGuiWindow, ptr %1353, i32 0, i32 12
  %1355 = getelementptr inbounds %struct.ImVec2, ptr %1354, i32 0, i32 1
  store float %1352, ptr %1355, align 4, !tbaa !185
  store i8 1, ptr %38, align 1, !tbaa !91
  br label %1356

1356:                                             ; preds = %1351, %1329, %1326
  %1357 = load ptr, ptr %10, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.ImGuiWindow, ptr %1357, i32 0, i32 41
  %1359 = load i8, ptr %1358, align 2, !tbaa !206, !range !87, !noundef !88
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1363, label %1361

1361:                                             ; preds = %1356
  %1362 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1362)
  br label %1363

1363:                                             ; preds = %1361, %1356
  br label %1364

1364:                                             ; preds = %1363, %1290
  br label %1365

1365:                                             ; preds = %1364, %1283
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1366 = load ptr, ptr %10, align 8, !tbaa !5
  %1367 = load ptr, ptr %10, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.ImGuiWindow, ptr %1367, i32 0, i32 12
  %1369 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1366, ptr noundef nonnull align 4 dereferenceable(8) %1368)
  store <2 x float> %1369, ptr %43, align 4
  %1370 = load ptr, ptr %10, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiWindow, ptr %1370, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1371, ptr align 4 %43, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1372 = load ptr, ptr %10, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiWindow, ptr %1372, i32 0, i32 41
  %1374 = load i8, ptr %1373, align 2, !tbaa !206, !range !87, !noundef !88
  %1375 = trunc i8 %1374 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #13
  br i1 %1375, label %1376, label %1388

1376:                                             ; preds = %1365
  %1377 = load i32, ptr %7, align 4, !tbaa !9
  %1378 = and i32 %1377, 16777216
  %1379 = icmp ne i32 %1378, 0
  br i1 %1379, label %1388, label %1380

1380:                                             ; preds = %1376
  %1381 = load ptr, ptr %10, align 8, !tbaa !5
  %1382 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1381)
  %1383 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 0
  %1384 = extractvalue { <2 x float>, <2 x float> } %1382, 0
  store <2 x float> %1384, ptr %1383, align 4
  %1385 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 1
  %1386 = extractvalue { <2 x float>, <2 x float> } %1382, 1
  store <2 x float> %1386, ptr %1385, align 4
  %1387 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  store <2 x float> %1387, ptr %44, align 4
  br label %1391

1388:                                             ; preds = %1376, %1365
  %1389 = load ptr, ptr %10, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.ImGuiWindow, ptr %1389, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 8 %1390, i64 8, i1 false), !tbaa.struct !149
  br label %1391

1391:                                             ; preds = %1388, %1380
  %1392 = load ptr, ptr %10, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.ImGuiWindow, ptr %1392, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1393, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  %1394 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %1395 = trunc i8 %1394 to i1
  br i1 %1395, label %1396, label %1417

1396:                                             ; preds = %1391
  %1397 = load ptr, ptr %10, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.ImGuiWindow, ptr %1397, i32 0, i32 60
  store i32 -1, ptr %1398, align 4, !tbaa !216
  %1399 = load i32, ptr %7, align 4, !tbaa !9
  %1400 = and i32 %1399, 67108864
  %1401 = icmp ne i32 %1400, 0
  br i1 %1401, label %1402, label %1416

1402:                                             ; preds = %1396
  %1403 = load i32, ptr %7, align 4, !tbaa !9
  %1404 = and i32 %1403, 134217728
  %1405 = icmp ne i32 %1404, 0
  br i1 %1405, label %1416, label %1406

1406:                                             ; preds = %1402
  %1407 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1416, label %1409

1409:                                             ; preds = %1406
  %1410 = load ptr, ptr %8, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.ImGuiContext, ptr %1410, i32 0, i32 87
  %1412 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1411)
  %1413 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1412, i32 0, i32 7
  %1414 = load ptr, ptr %10, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImGuiWindow, ptr %1414, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1415, ptr align 4 %1413, i64 8, i1 false), !tbaa.struct !149
  br label %1416

1416:                                             ; preds = %1409, %1406, %1402, %1396
  br label %1417

1417:                                             ; preds = %1416, %1391
  %1418 = load i32, ptr %7, align 4, !tbaa !9
  %1419 = and i32 %1418, 16777216
  %1420 = icmp ne i32 %1419, 0
  br i1 %1420, label %1421, label %1462

1421:                                             ; preds = %1417
  %1422 = load ptr, ptr %22, align 8, !tbaa !5
  %1423 = icmp ne ptr %1422, null
  br i1 %1423, label %1424, label %1429

1424:                                             ; preds = %1421
  %1425 = load ptr, ptr %22, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.ImGuiWindow, ptr %1425, i32 0, i32 38
  %1427 = load i8, ptr %1426, align 1, !tbaa !163, !range !87, !noundef !88
  %1428 = trunc i8 %1427 to i1
  br label %1429

1429:                                             ; preds = %1424, %1421
  %1430 = phi i1 [ false, %1421 ], [ %1428, %1424 ]
  br i1 %1430, label %1431, label %1432

1431:                                             ; preds = %1429
  br label %1434

1432:                                             ; preds = %1429
  call void @__assert_fail(ptr noundef @.str.144, ptr noundef @.str.3, i32 noundef 6956, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1433:                                             ; No predecessors!
  br label %1434

1434:                                             ; preds = %1433, %1431
  %1435 = load ptr, ptr %22, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.ImGuiWindow, ptr %1435, i32 0, i32 69
  %1437 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1436, i32 0, i32 26
  %1438 = getelementptr inbounds %struct.ImVector.4, ptr %1437, i32 0, i32 0
  %1439 = load i32, ptr %1438, align 8, !tbaa !217
  %1440 = trunc i32 %1439 to i16
  %1441 = load ptr, ptr %10, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.ImGuiWindow, ptr %1441, i32 0, i32 52
  store i16 %1440, ptr %1442, align 4, !tbaa !120
  %1443 = load ptr, ptr %22, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.ImGuiWindow, ptr %1443, i32 0, i32 69
  %1445 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1444, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1445, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1446 = load i32, ptr %7, align 4, !tbaa !9
  %1447 = and i32 %1446, 67108864
  %1448 = icmp ne i32 %1447, 0
  br i1 %1448, label %1461, label %1449

1449:                                             ; preds = %1434
  %1450 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1451 = trunc i8 %1450 to i1
  br i1 %1451, label %1461, label %1452

1452:                                             ; preds = %1449
  %1453 = load i8, ptr %29, align 1, !tbaa !91, !range !87, !noundef !88
  %1454 = trunc i8 %1453 to i1
  br i1 %1454, label %1461, label %1455

1455:                                             ; preds = %1452
  %1456 = load ptr, ptr %22, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiWindow, ptr %1456, i32 0, i32 69
  %1458 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1457, i32 0, i32 0
  %1459 = load ptr, ptr %10, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.ImGuiWindow, ptr %1459, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1460, ptr align 8 %1458, i64 8, i1 false), !tbaa.struct !149
  br label %1461

1461:                                             ; preds = %1455, %1452, %1449, %1434
  br label %1462

1462:                                             ; preds = %1461, %1417
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  %1463 = load ptr, ptr %10, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.ImGuiWindow, ptr %1463, i32 0, i32 66
  %1465 = getelementptr inbounds %struct.ImVec2, ptr %1464, i32 0, i32 0
  %1466 = load float, ptr %1465, align 8, !tbaa !218
  %1467 = fcmp une float %1466, 0x47EFFFFFE0000000
  br i1 %1467, label %1468, label %1474

1468:                                             ; preds = %1462
  %1469 = load ptr, ptr %10, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.ImGuiWindow, ptr %1469, i32 0, i32 62
  %1471 = load i8, ptr %1470, align 1, !tbaa !162
  %1472 = sext i8 %1471 to i32
  %1473 = icmp eq i32 %1472, 0
  br label %1474

1474:                                             ; preds = %1468, %1462
  %1475 = phi i1 [ false, %1462 ], [ %1473, %1468 ]
  %1476 = zext i1 %1475 to i8
  store i8 %1476, ptr %46, align 1, !tbaa !91
  %1477 = load i8, ptr %46, align 1, !tbaa !91, !range !87, !noundef !88
  %1478 = trunc i8 %1477 to i1
  br i1 %1478, label %1479, label %1489

1479:                                             ; preds = %1474
  %1480 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1481 = load ptr, ptr %10, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.ImGuiWindow, ptr %1481, i32 0, i32 66
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1483 = load ptr, ptr %10, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiWindow, ptr %1483, i32 0, i32 11
  %1485 = load ptr, ptr %10, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ImGuiWindow, ptr %1485, i32 0, i32 67
  %1487 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1484, ptr noundef nonnull align 4 dereferenceable(8) %1486)
  store <2 x float> %1487, ptr %48, align 4
  %1488 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1482, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1488, ptr %47, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1480, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1531

1489:                                             ; preds = %1474
  %1490 = load i32, ptr %7, align 4, !tbaa !9
  %1491 = and i32 %1490, 268435456
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1498

1493:                                             ; preds = %1489
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %1494 = load ptr, ptr %10, align 8, !tbaa !5
  %1495 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1494)
  store <2 x float> %1495, ptr %49, align 4
  %1496 = load ptr, ptr %10, align 8, !tbaa !5
  %1497 = getelementptr inbounds %struct.ImGuiWindow, ptr %1496, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1497, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  br label %1530

1498:                                             ; preds = %1489
  %1499 = load i32, ptr %7, align 4, !tbaa !9
  %1500 = and i32 %1499, 67108864
  %1501 = icmp ne i32 %1500, 0
  br i1 %1501, label %1502, label %1513

1502:                                             ; preds = %1498
  %1503 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1504 = trunc i8 %1503 to i1
  br i1 %1504, label %1513, label %1505

1505:                                             ; preds = %1502
  %1506 = load i8, ptr %30, align 1, !tbaa !91, !range !87, !noundef !88
  %1507 = trunc i8 %1506 to i1
  br i1 %1507, label %1508, label %1513

1508:                                             ; preds = %1505
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1509 = load ptr, ptr %10, align 8, !tbaa !5
  %1510 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1509)
  store <2 x float> %1510, ptr %50, align 4
  %1511 = load ptr, ptr %10, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.ImGuiWindow, ptr %1511, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1512, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  br label %1529

1513:                                             ; preds = %1505, %1502, %1498
  %1514 = load i32, ptr %7, align 4, !tbaa !9
  %1515 = and i32 %1514, 33554432
  %1516 = icmp ne i32 %1515, 0
  br i1 %1516, label %1517, label %1528

1517:                                             ; preds = %1513
  %1518 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1519 = trunc i8 %1518 to i1
  br i1 %1519, label %1528, label %1520

1520:                                             ; preds = %1517
  %1521 = load i8, ptr %29, align 1, !tbaa !91, !range !87, !noundef !88
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1528, label %1523

1523:                                             ; preds = %1520
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #13
  %1524 = load ptr, ptr %10, align 8, !tbaa !5
  %1525 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1524)
  store <2 x float> %1525, ptr %51, align 4
  %1526 = load ptr, ptr %10, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.ImGuiWindow, ptr %1526, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1527, ptr align 4 %51, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #13
  br label %1528

1528:                                             ; preds = %1523, %1520, %1517, %1513
  br label %1529

1529:                                             ; preds = %1528, %1508
  br label %1530

1530:                                             ; preds = %1529, %1493
  br label %1531

1531:                                             ; preds = %1530, %1479
  %1532 = load ptr, ptr %10, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 9
  %1534 = load i32, ptr %1533, align 4, !tbaa !219
  %1535 = icmp sge i32 %1534, 0
  br i1 %1535, label %1536, label %1601

1536:                                             ; preds = %1531
  %1537 = load ptr, ptr %10, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.ImGuiWindow, ptr %1537, i32 0, i32 37
  %1539 = load i8, ptr %1538, align 2, !tbaa !220, !range !87, !noundef !88
  %1540 = trunc i8 %1539 to i1
  br i1 %1540, label %1601, label %1541

1541:                                             ; preds = %1536
  %1542 = load ptr, ptr %10, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct.ImGuiWindow, ptr %1542, i32 0, i32 6
  %1544 = load ptr, ptr %1543, align 8, !tbaa !169
  %1545 = getelementptr inbounds %struct.ImGuiViewport, ptr %1544, i32 0, i32 1
  %1546 = load i32, ptr %1545, align 4, !tbaa !221
  %1547 = and i32 %1546, 4096
  %1548 = icmp ne i32 %1547, 0
  br i1 %1548, label %1601, label %1549

1549:                                             ; preds = %1541
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #13
  %1550 = load ptr, ptr %10, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.ImGuiWindow, ptr %1550, i32 0, i32 6
  %1552 = load ptr, ptr %1551, align 8, !tbaa !169
  %1553 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1552)
  %1554 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 0
  %1555 = extractvalue { <2 x float>, <2 x float> } %1553, 0
  store <2 x float> %1555, ptr %1554, align 4
  %1556 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 1
  %1557 = extractvalue { <2 x float>, <2 x float> } %1553, 1
  store <2 x float> %1557, ptr %1556, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #13
  %1558 = load ptr, ptr %10, align 8, !tbaa !5
  %1559 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1558)
  %1560 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 0
  %1561 = extractvalue { <2 x float>, <2 x float> } %1559, 0
  store <2 x float> %1561, ptr %1560, align 4
  %1562 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 1
  %1563 = extractvalue { <2 x float>, <2 x float> } %1559, 1
  store <2 x float> %1563, ptr %1562, align 4
  %1564 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %52, ptr noundef nonnull align 4 dereferenceable(16) %53)
  %1565 = xor i1 %1564, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #13
  br i1 %1565, label %1566, label %1600

1566:                                             ; preds = %1549
  %1567 = load ptr, ptr %10, align 8, !tbaa !5
  %1568 = load ptr, ptr %10, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiWindow, ptr %1568, i32 0, i32 2
  %1570 = load i32, ptr %1569, align 8, !tbaa !143
  %1571 = load ptr, ptr %10, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.ImGuiWindow, ptr %1571, i32 0, i32 10
  %1573 = load ptr, ptr %10, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.ImGuiWindow, ptr %1573, i32 0, i32 11
  %1575 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %1567, i32 noundef %1570, ptr noundef nonnull align 4 dereferenceable(8) %1572, ptr noundef nonnull align 4 dereferenceable(8) %1574, i32 noundef 32)
  %1576 = load ptr, ptr %10, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.ImGuiWindow, ptr %1576, i32 0, i32 6
  store ptr %1575, ptr %1577, align 8, !tbaa !169
  %1578 = load ptr, ptr %10, align 8, !tbaa !5
  %1579 = load ptr, ptr %10, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.ImGuiWindow, ptr %1579, i32 0, i32 6
  %1581 = load ptr, ptr %1580, align 8, !tbaa !169
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1578, ptr noundef %1581)
  %1582 = load ptr, ptr %8, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.ImGuiContext, ptr %1582, i32 0, i32 2
  %1584 = getelementptr inbounds %struct.ImGuiIO, ptr %1583, i32 0, i32 0
  %1585 = load i32, ptr %1584, align 8, !tbaa !187
  %1586 = and i32 %1585, 32768
  %1587 = icmp ne i32 %1586, 0
  br i1 %1587, label %1588, label %1594

1588:                                             ; preds = %1566
  %1589 = load ptr, ptr %10, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.ImGuiWindow, ptr %1589, i32 0, i32 6
  %1591 = load ptr, ptr %1590, align 8, !tbaa !169
  %1592 = getelementptr inbounds %struct.ImGuiViewport, ptr %1591, i32 0, i32 6
  %1593 = load float, ptr %1592, align 8, !tbaa !188
  br label %1595

1594:                                             ; preds = %1566
  br label %1595

1595:                                             ; preds = %1594, %1588
  %1596 = phi float [ %1593, %1588 ], [ 1.000000e+00, %1594 ]
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiWindow, ptr %1597, i32 0, i32 86
  store float %1596, ptr %1598, align 4, !tbaa !189
  %1599 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1599)
  br label %1600

1600:                                             ; preds = %1595, %1549
  br label %1601

1601:                                             ; preds = %1600, %1541, %1536, %1531
  %1602 = load ptr, ptr %10, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.ImGuiWindow, ptr %1602, i32 0, i32 37
  %1604 = load i8, ptr %1603, align 2, !tbaa !220, !range !87, !noundef !88
  %1605 = trunc i8 %1604 to i1
  br i1 %1605, label %1606, label %1609

1606:                                             ; preds = %1601
  %1607 = load ptr, ptr %10, align 8, !tbaa !5
  %1608 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef %1607, ptr noundef %1608)
  br label %1609

1609:                                             ; preds = %1606, %1601
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #13
  %1610 = load ptr, ptr %10, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.ImGuiWindow, ptr %1610, i32 0, i32 6
  %1612 = load ptr, ptr %1611, align 8, !tbaa !169
  %1613 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1612)
  %1614 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 0
  %1615 = extractvalue { <2 x float>, <2 x float> } %1613, 0
  store <2 x float> %1615, ptr %1614, align 4
  %1616 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 1
  %1617 = extractvalue { <2 x float>, <2 x float> } %1613, 1
  store <2 x float> %1617, ptr %1616, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #13
  %1618 = load ptr, ptr %10, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.ImGuiWindow, ptr %1618, i32 0, i32 6
  %1620 = load ptr, ptr %1619, align 8, !tbaa !169
  %1621 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1620)
  %1622 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 0
  %1623 = extractvalue { <2 x float>, <2 x float> } %1621, 0
  store <2 x float> %1623, ptr %1622, align 4
  %1624 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 1
  %1625 = extractvalue { <2 x float>, <2 x float> } %1621, 1
  store <2 x float> %1625, ptr %1624, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1626 = load ptr, ptr %9, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImGuiStyle, ptr %1626, i32 0, i32 35
  %1628 = load ptr, ptr %9, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.ImGuiStyle, ptr %1628, i32 0, i32 36
  %1630 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1627, ptr noundef nonnull align 4 dereferenceable(8) %1629)
  store <2 x float> %1630, ptr %56, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1631 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 0
  %1632 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1631, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1632, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %1633 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 1
  %1634 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1633, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1634, ptr %59, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %57, ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  %1635 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1636 = trunc i8 %1635 to i1
  br i1 %1636, label %1685, label %1637

1637:                                             ; preds = %1609
  %1638 = load i32, ptr %7, align 4, !tbaa !9
  %1639 = and i32 %1638, 16777216
  %1640 = icmp ne i32 %1639, 0
  br i1 %1640, label %1685, label %1641

1641:                                             ; preds = %1637
  %1642 = load ptr, ptr %10, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.ImGuiWindow, ptr %1642, i32 0, i32 37
  %1644 = load i8, ptr %1643, align 2, !tbaa !220, !range !87, !noundef !88
  %1645 = trunc i8 %1644 to i1
  br i1 %1645, label %1654, label %1646

1646:                                             ; preds = %1641
  %1647 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1648 = fcmp ogt float %1647, 0.000000e+00
  br i1 %1648, label %1649, label %1654

1649:                                             ; preds = %1646
  %1650 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1651 = fcmp ogt float %1650, 0.000000e+00
  br i1 %1651, label %1652, label %1654

1652:                                             ; preds = %1649
  %1653 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1653, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1684

1654:                                             ; preds = %1649, %1646, %1641
  %1655 = load ptr, ptr %10, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.ImGuiWindow, ptr %1655, i32 0, i32 37
  %1657 = load i8, ptr %1656, align 2, !tbaa !220, !range !87, !noundef !88
  %1658 = trunc i8 %1657 to i1
  br i1 %1658, label %1659, label %1683

1659:                                             ; preds = %1654
  %1660 = load ptr, ptr %8, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiContext, ptr %1660, i32 0, i32 3
  %1662 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1661, i32 0, i32 23
  %1663 = getelementptr inbounds %struct.ImVector.0, ptr %1662, i32 0, i32 0
  %1664 = load i32, ptr %1663, align 8, !tbaa !222
  %1665 = icmp sgt i32 %1664, 0
  br i1 %1665, label %1666, label %1683

1666:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %1667 = load ptr, ptr %10, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct.ImGuiWindow, ptr %1667, i32 0, i32 6
  %1669 = load ptr, ptr %1668, align 8, !tbaa !169
  %1670 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %1669)
  store ptr %1670, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %1671 = load ptr, ptr %60, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1671, i32 0, i32 2
  %1673 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1672, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1673, ptr %61, align 4
  %1674 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1674, ptr align 4 %61, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %1675 = load ptr, ptr %60, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1675, i32 0, i32 2
  %1677 = load ptr, ptr %60, align 8, !tbaa !5
  %1678 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1677, i32 0, i32 3
  %1679 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1676, ptr noundef nonnull align 4 dereferenceable(8) %1678)
  store <2 x float> %1679, ptr %63, align 4
  %1680 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %63, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1680, ptr %62, align 4
  %1681 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1681, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  %1682 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1682, ptr noundef nonnull align 4 dereferenceable(16) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  br label %1683

1683:                                             ; preds = %1666, %1659, %1654
  br label %1684

1684:                                             ; preds = %1683, %1652
  br label %1685

1685:                                             ; preds = %1684, %1637, %1609
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.ImGuiWindow, ptr %1686, i32 0, i32 10
  %1688 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1687)
  store <2 x float> %1688, ptr %64, align 4
  %1689 = load ptr, ptr %10, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.ImGuiWindow, ptr %1689, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1690, ptr align 4 %64, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  %1691 = load ptr, ptr %10, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiWindow, ptr %1691, i32 0, i32 37
  %1693 = load i8, ptr %1692, align 2, !tbaa !220, !range !87, !noundef !88
  %1694 = trunc i8 %1693 to i1
  br i1 %1694, label %1701, label %1695

1695:                                             ; preds = %1685
  %1696 = load ptr, ptr %10, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.ImGuiWindow, ptr %1696, i32 0, i32 105
  %1698 = load i8, ptr %1697, align 1
  %1699 = and i8 %1698, 1
  %1700 = trunc i8 %1699 to i1
  br i1 %1700, label %1701, label %1704

1701:                                             ; preds = %1695, %1685
  %1702 = load ptr, ptr %10, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.ImGuiWindow, ptr %1702, i32 0, i32 17
  store float 0.000000e+00, ptr %1703, align 8, !tbaa !223
  br label %1734

1704:                                             ; preds = %1695
  %1705 = load i32, ptr %7, align 4, !tbaa !9
  %1706 = and i32 %1705, 16777216
  %1707 = icmp ne i32 %1706, 0
  br i1 %1707, label %1708, label %1712

1708:                                             ; preds = %1704
  %1709 = load ptr, ptr %9, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ImGuiStyle, ptr %1709, i32 0, i32 8
  %1711 = load float, ptr %1710, align 4, !tbaa !224
  br label %1730

1712:                                             ; preds = %1704
  %1713 = load i32, ptr %7, align 4, !tbaa !9
  %1714 = and i32 %1713, 67108864
  %1715 = icmp ne i32 %1714, 0
  br i1 %1715, label %1716, label %1724

1716:                                             ; preds = %1712
  %1717 = load i32, ptr %7, align 4, !tbaa !9
  %1718 = and i32 %1717, 134217728
  %1719 = icmp ne i32 %1718, 0
  br i1 %1719, label %1724, label %1720

1720:                                             ; preds = %1716
  %1721 = load ptr, ptr %9, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.ImGuiStyle, ptr %1721, i32 0, i32 10
  %1723 = load float, ptr %1722, align 4, !tbaa !225
  br label %1728

1724:                                             ; preds = %1716, %1712
  %1725 = load ptr, ptr %9, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.ImGuiStyle, ptr %1725, i32 0, i32 3
  %1727 = load float, ptr %1726, align 4, !tbaa !226
  br label %1728

1728:                                             ; preds = %1724, %1720
  %1729 = phi float [ %1723, %1720 ], [ %1727, %1724 ]
  br label %1730

1730:                                             ; preds = %1728, %1708
  %1731 = phi float [ %1711, %1708 ], [ %1729, %1728 ]
  %1732 = load ptr, ptr %10, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.ImGuiWindow, ptr %1732, i32 0, i32 17
  store float %1731, ptr %1733, align 8, !tbaa !223
  br label %1734

1734:                                             ; preds = %1730, %1701
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #13
  store i8 0, ptr %65, align 1, !tbaa !91
  %1735 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %1736 = trunc i8 %1735 to i1
  br i1 %1736, label %1737, label %1763

1737:                                             ; preds = %1734
  %1738 = load i32, ptr %7, align 4, !tbaa !9
  %1739 = and i32 %1738, 4096
  %1740 = icmp ne i32 %1739, 0
  br i1 %1740, label %1763, label %1741

1741:                                             ; preds = %1737
  %1742 = load i32, ptr %7, align 4, !tbaa !9
  %1743 = and i32 %1742, 67108864
  %1744 = icmp ne i32 %1743, 0
  br i1 %1744, label %1745, label %1746

1745:                                             ; preds = %1741
  store i8 1, ptr %65, align 1, !tbaa !91
  br label %1762

1746:                                             ; preds = %1741
  %1747 = load ptr, ptr %10, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiWindow, ptr %1747, i32 0, i32 105
  %1749 = load i8, ptr %1748, align 1
  %1750 = and i8 %1749, 1
  %1751 = trunc i8 %1750 to i1
  br i1 %1751, label %1756, label %1752

1752:                                             ; preds = %1746
  %1753 = load i32, ptr %7, align 4, !tbaa !9
  %1754 = and i32 %1753, 16777216
  %1755 = icmp eq i32 %1754, 0
  br i1 %1755, label %1756, label %1761

1756:                                             ; preds = %1752, %1746
  %1757 = load i32, ptr %7, align 4, !tbaa !9
  %1758 = and i32 %1757, 33554432
  %1759 = icmp ne i32 %1758, 0
  br i1 %1759, label %1761, label %1760

1760:                                             ; preds = %1756
  store i8 1, ptr %65, align 1, !tbaa !91
  br label %1761

1761:                                             ; preds = %1760, %1756, %1752
  br label %1762

1762:                                             ; preds = %1761, %1745
  br label %1763

1763:                                             ; preds = %1762, %1737, %1734
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.ImGuiWindow, ptr %1764, i32 0, i32 109
  %1766 = load ptr, ptr %1765, align 8, !tbaa !124
  %1767 = icmp ne ptr %1766, null
  br i1 %1767, label %1775, label %1768

1768:                                             ; preds = %1763
  %1769 = load ptr, ptr %10, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.ImGuiWindow, ptr %1769, i32 0, i32 105
  %1771 = load i8, ptr %1770, align 1
  %1772 = and i8 %1771, 1
  %1773 = trunc i8 %1772 to i1
  %1774 = xor i1 %1773, true
  br label %1775

1775:                                             ; preds = %1768, %1763
  %1776 = phi i1 [ true, %1763 ], [ %1774, %1768 ]
  %1777 = zext i1 %1776 to i8
  store i8 %1777, ptr %66, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  store i32 -1, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #13
  call void @llvm.memset.p0.i64(ptr align 16 %68, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #13
  %1778 = load ptr, ptr %8, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ImGuiContext, ptr %1778, i32 0, i32 2
  %1780 = getelementptr inbounds %struct.ImGuiIO, ptr %1779, i32 0, i32 27
  %1781 = load i8, ptr %1780, align 2, !tbaa !227, !range !87, !noundef !88
  %1782 = trunc i8 %1781 to i1
  %1783 = zext i1 %1782 to i64
  %1784 = select i1 %1782, i32 2, i32 1
  store i32 %1784, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #13
  %1785 = load ptr, ptr %8, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.ImGuiContext, ptr %1785, i32 0, i32 8
  %1787 = load float, ptr %1786, align 8, !tbaa !228
  %1788 = fmul float %1787, 0x3FF19999A0000000
  %1789 = load ptr, ptr %10, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiWindow, ptr %1789, i32 0, i32 17
  %1791 = load float, ptr %1790, align 8, !tbaa !223
  %1792 = fadd float %1791, 1.000000e+00
  %1793 = load ptr, ptr %8, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.ImGuiContext, ptr %1793, i32 0, i32 8
  %1795 = load float, ptr %1794, align 8, !tbaa !228
  %1796 = call float @llvm.fmuladd.f32(float %1795, float 0x3FC99999A0000000, float %1792)
  %1797 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1788, float noundef %1796)
  %1798 = fptosi float %1797 to i32
  %1799 = sitofp i32 %1798 to float
  store float %1799, ptr %70, align 4, !tbaa !140
  %1800 = load i8, ptr %66, align 1, !tbaa !91, !range !87, !noundef !88
  %1801 = trunc i8 %1800 to i1
  br i1 %1801, label %1802, label %1814

1802:                                             ; preds = %1775
  %1803 = load ptr, ptr %10, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.ImGuiWindow, ptr %1803, i32 0, i32 41
  %1805 = load i8, ptr %1804, align 2, !tbaa !206, !range !87, !noundef !88
  %1806 = trunc i8 %1805 to i1
  br i1 %1806, label %1814, label %1807

1807:                                             ; preds = %1802
  %1808 = load ptr, ptr %10, align 8, !tbaa !5
  %1809 = load i32, ptr %69, align 4, !tbaa !9
  %1810 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %1811 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef %1808, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef %67, i32 noundef %1809, ptr noundef %1810, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br i1 %1811, label %1812, label %1813

1812:                                             ; preds = %1807
  store i8 1, ptr %38, align 1, !tbaa !91
  store i8 1, ptr %37, align 1, !tbaa !91
  br label %1813

1813:                                             ; preds = %1812, %1807
  br label %1814

1814:                                             ; preds = %1813, %1802, %1775
  %1815 = load i32, ptr %67, align 4, !tbaa !9
  %1816 = trunc i32 %1815 to i8
  %1817 = load ptr, ptr %10, align 8, !tbaa !5
  %1818 = getelementptr inbounds %struct.ImGuiWindow, ptr %1817, i32 0, i32 49
  store i8 %1816, ptr %1818, align 2, !tbaa !229
  %1819 = load ptr, ptr %10, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.ImGuiWindow, ptr %1819, i32 0, i32 37
  %1821 = load i8, ptr %1820, align 2, !tbaa !220, !range !87, !noundef !88
  %1822 = trunc i8 %1821 to i1
  br i1 %1822, label %1823, label %1863

1823:                                             ; preds = %1814
  %1824 = load ptr, ptr %10, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiWindow, ptr %1824, i32 0, i32 6
  %1826 = load ptr, ptr %1825, align 8, !tbaa !169
  %1827 = getelementptr inbounds %struct.ImGuiViewport, ptr %1826, i32 0, i32 14
  %1828 = load i8, ptr %1827, align 1, !tbaa !230, !range !87, !noundef !88
  %1829 = trunc i8 %1828 to i1
  br i1 %1829, label %1837, label %1830

1830:                                             ; preds = %1823
  %1831 = load ptr, ptr %10, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.ImGuiWindow, ptr %1831, i32 0, i32 10
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.ImGuiWindow, ptr %1833, i32 0, i32 6
  %1835 = load ptr, ptr %1834, align 8, !tbaa !169
  %1836 = getelementptr inbounds %struct.ImGuiViewport, ptr %1835, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1836, ptr align 8 %1832, i64 8, i1 false), !tbaa.struct !149
  br label %1837

1837:                                             ; preds = %1830, %1823
  %1838 = load ptr, ptr %10, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.ImGuiWindow, ptr %1838, i32 0, i32 6
  %1840 = load ptr, ptr %1839, align 8, !tbaa !169
  %1841 = getelementptr inbounds %struct.ImGuiViewport, ptr %1840, i32 0, i32 15
  %1842 = load i8, ptr %1841, align 2, !tbaa !231, !range !87, !noundef !88
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1851, label %1844

1844:                                             ; preds = %1837
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 11
  %1847 = load ptr, ptr %10, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.ImGuiWindow, ptr %1847, i32 0, i32 6
  %1849 = load ptr, ptr %1848, align 8, !tbaa !169
  %1850 = getelementptr inbounds %struct.ImGuiViewport, ptr %1849, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1850, ptr align 8 %1846, i64 8, i1 false), !tbaa.struct !149
  br label %1851

1851:                                             ; preds = %1844, %1837
  %1852 = load ptr, ptr %10, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiWindow, ptr %1852, i32 0, i32 6
  %1854 = load ptr, ptr %1853, align 8, !tbaa !169
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1854)
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #13
  %1855 = load ptr, ptr %10, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiWindow, ptr %1855, i32 0, i32 6
  %1857 = load ptr, ptr %1856, align 8, !tbaa !169
  %1858 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1857)
  %1859 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1860 = extractvalue { <2 x float>, <2 x float> } %1858, 0
  store <2 x float> %1860, ptr %1859, align 4
  %1861 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1862 = extractvalue { <2 x float>, <2 x float> } %1858, 1
  store <2 x float> %1862, ptr %1861, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !165
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #13
  br label %1863

1863:                                             ; preds = %1851, %1814
  %1864 = load ptr, ptr %10, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.ImGuiWindow, ptr %1864, i32 0, i32 6
  %1866 = load ptr, ptr %1865, align 8, !tbaa !169
  %1867 = getelementptr inbounds %struct.ImGuiViewport, ptr %1866, i32 0, i32 2
  %1868 = load ptr, ptr %10, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.ImGuiWindow, ptr %1868, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1869, ptr align 8 %1867, i64 8, i1 false), !tbaa.struct !149
  %1870 = load ptr, ptr %10, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.ImGuiWindow, ptr %1870, i32 0, i32 41
  %1872 = load i8, ptr %1871, align 2, !tbaa !206, !range !87, !noundef !88
  %1873 = trunc i8 %1872 to i1
  br i1 %1873, label %2046, label %1874

1874:                                             ; preds = %1863
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #13
  %1875 = load ptr, ptr %10, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiWindow, ptr %1875, i32 0, i32 12
  %1877 = getelementptr inbounds %struct.ImVec2, ptr %1876, i32 0, i32 0
  %1878 = load float, ptr %1877, align 8, !tbaa !183
  %1879 = load ptr, ptr %10, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.ImGuiWindow, ptr %1879, i32 0, i32 12
  %1881 = getelementptr inbounds %struct.ImVec2, ptr %1880, i32 0, i32 1
  %1882 = load float, ptr %1881, align 4, !tbaa !185
  %1883 = load ptr, ptr %10, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.ImGuiWindow, ptr %1883, i32 0, i32 20
  %1885 = load float, ptr %1884, align 4, !tbaa !209
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.ImGuiWindow, ptr %1886, i32 0, i32 22
  %1888 = load float, ptr %1887, align 4, !tbaa !210
  %1889 = fadd float %1885, %1888
  %1890 = fsub float %1882, %1889
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %72, float noundef %1878, float noundef %1890)
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  %1891 = load ptr, ptr %10, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.ImGuiWindow, ptr %1891, i32 0, i32 71
  %1893 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1892)
  store <2 x float> %1893, ptr %74, align 4
  %1894 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %74, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %1894, ptr %73, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  %1895 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %1896 = trunc i8 %1895 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  br i1 %1896, label %1897, label %1898

1897:                                             ; preds = %1874
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1905

1898:                                             ; preds = %1874
  %1899 = load ptr, ptr %10, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.ImGuiWindow, ptr %1899, i32 0, i32 13
  %1901 = load ptr, ptr %10, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.ImGuiWindow, ptr %1901, i32 0, i32 16
  %1903 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1902, float noundef 2.000000e+00)
  store <2 x float> %1903, ptr %76, align 4
  %1904 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1900, ptr noundef nonnull align 4 dereferenceable(8) %76)
  store <2 x float> %1904, ptr %75, align 4
  br label %1905

1905:                                             ; preds = %1898, %1897
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1906 = load i8, ptr %37, align 1, !tbaa !91, !range !87, !noundef !88
  %1907 = trunc i8 %1906 to i1
  br i1 %1907, label %1908, label %1911

1908:                                             ; preds = %1905
  %1909 = getelementptr inbounds %struct.ImVec2, ptr %72, i32 0, i32 0
  %1910 = load float, ptr %1909, align 4, !tbaa !211
  br label %1914

1911:                                             ; preds = %1905
  %1912 = getelementptr inbounds %struct.ImVec2, ptr %73, i32 0, i32 0
  %1913 = load float, ptr %1912, align 4, !tbaa !211
  br label %1914

1914:                                             ; preds = %1911, %1908
  %1915 = phi float [ %1910, %1908 ], [ %1913, %1911 ]
  store float %1915, ptr %77, align 4, !tbaa !140
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  %1916 = load i8, ptr %38, align 1, !tbaa !91, !range !87, !noundef !88
  %1917 = trunc i8 %1916 to i1
  br i1 %1917, label %1918, label %1921

1918:                                             ; preds = %1914
  %1919 = getelementptr inbounds %struct.ImVec2, ptr %72, i32 0, i32 1
  %1920 = load float, ptr %1919, align 4, !tbaa !212
  br label %1924

1921:                                             ; preds = %1914
  %1922 = getelementptr inbounds %struct.ImVec2, ptr %73, i32 0, i32 1
  %1923 = load float, ptr %1922, align 4, !tbaa !212
  br label %1924

1924:                                             ; preds = %1921, %1918
  %1925 = phi float [ %1920, %1918 ], [ %1923, %1921 ]
  store float %1925, ptr %78, align 4, !tbaa !140
  %1926 = load i32, ptr %7, align 4, !tbaa !9
  %1927 = and i32 %1926, 16384
  %1928 = icmp ne i32 %1927, 0
  br i1 %1928, label %1941, label %1929

1929:                                             ; preds = %1924
  %1930 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 1
  %1931 = load float, ptr %1930, align 4, !tbaa !212
  %1932 = load float, ptr %78, align 4, !tbaa !140
  %1933 = fcmp ogt float %1931, %1932
  br i1 %1933, label %1934, label %1939

1934:                                             ; preds = %1929
  %1935 = load i32, ptr %7, align 4, !tbaa !9
  %1936 = and i32 %1935, 8
  %1937 = icmp ne i32 %1936, 0
  %1938 = xor i1 %1937, true
  br label %1939

1939:                                             ; preds = %1934, %1929
  %1940 = phi i1 [ false, %1929 ], [ %1938, %1934 ]
  br label %1941

1941:                                             ; preds = %1939, %1924
  %1942 = phi i1 [ true, %1924 ], [ %1940, %1939 ]
  %1943 = load ptr, ptr %10, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.ImGuiWindow, ptr %1943, i32 0, i32 36
  %1945 = zext i1 %1942 to i8
  store i8 %1945, ptr %1944, align 1, !tbaa !232
  %1946 = load i32, ptr %7, align 4, !tbaa !9
  %1947 = and i32 %1946, 32768
  %1948 = icmp ne i32 %1947, 0
  br i1 %1948, label %1976, label %1949

1949:                                             ; preds = %1941
  %1950 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 0
  %1951 = load float, ptr %1950, align 4, !tbaa !211
  %1952 = load float, ptr %77, align 4, !tbaa !140
  %1953 = load ptr, ptr %10, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.ImGuiWindow, ptr %1953, i32 0, i32 36
  %1955 = load i8, ptr %1954, align 1, !tbaa !232, !range !87, !noundef !88
  %1956 = trunc i8 %1955 to i1
  br i1 %1956, label %1957, label %1961

1957:                                             ; preds = %1949
  %1958 = load ptr, ptr %9, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.ImGuiStyle, ptr %1958, i32 0, i32 21
  %1960 = load float, ptr %1959, align 4, !tbaa !233
  br label %1962

1961:                                             ; preds = %1949
  br label %1962

1962:                                             ; preds = %1961, %1957
  %1963 = phi float [ %1960, %1957 ], [ 0.000000e+00, %1961 ]
  %1964 = fsub float %1952, %1963
  %1965 = fcmp ogt float %1951, %1964
  br i1 %1965, label %1966, label %1974

1966:                                             ; preds = %1962
  %1967 = load i32, ptr %7, align 4, !tbaa !9
  %1968 = and i32 %1967, 8
  %1969 = icmp ne i32 %1968, 0
  br i1 %1969, label %1974, label %1970

1970:                                             ; preds = %1966
  %1971 = load i32, ptr %7, align 4, !tbaa !9
  %1972 = and i32 %1971, 2048
  %1973 = icmp ne i32 %1972, 0
  br label %1974

1974:                                             ; preds = %1970, %1966, %1962
  %1975 = phi i1 [ false, %1966 ], [ false, %1962 ], [ %1973, %1970 ]
  br label %1976

1976:                                             ; preds = %1974, %1941
  %1977 = phi i1 [ true, %1941 ], [ %1975, %1974 ]
  %1978 = load ptr, ptr %10, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ImGuiWindow, ptr %1978, i32 0, i32 35
  %1980 = zext i1 %1977 to i8
  store i8 %1980, ptr %1979, align 8, !tbaa !234
  %1981 = load ptr, ptr %10, align 8, !tbaa !5
  %1982 = getelementptr inbounds %struct.ImGuiWindow, ptr %1981, i32 0, i32 35
  %1983 = load i8, ptr %1982, align 8, !tbaa !234, !range !87, !noundef !88
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1985, label %2005

1985:                                             ; preds = %1976
  %1986 = load ptr, ptr %10, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiWindow, ptr %1986, i32 0, i32 36
  %1988 = load i8, ptr %1987, align 1, !tbaa !232, !range !87, !noundef !88
  %1989 = trunc i8 %1988 to i1
  br i1 %1989, label %2005, label %1990

1990:                                             ; preds = %1985
  %1991 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 1
  %1992 = load float, ptr %1991, align 4, !tbaa !212
  %1993 = load float, ptr %78, align 4, !tbaa !140
  %1994 = fcmp ogt float %1992, %1993
  br i1 %1994, label %1995, label %2000

1995:                                             ; preds = %1990
  %1996 = load i32, ptr %7, align 4, !tbaa !9
  %1997 = and i32 %1996, 8
  %1998 = icmp ne i32 %1997, 0
  %1999 = xor i1 %1998, true
  br label %2000

2000:                                             ; preds = %1995, %1990
  %2001 = phi i1 [ false, %1990 ], [ %1999, %1995 ]
  %2002 = load ptr, ptr %10, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ImGuiWindow, ptr %2002, i32 0, i32 36
  %2004 = zext i1 %2001 to i8
  store i8 %2004, ptr %2003, align 1, !tbaa !232
  br label %2005

2005:                                             ; preds = %2000, %1985, %1976
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %2006 = load ptr, ptr %10, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.ImGuiWindow, ptr %2006, i32 0, i32 36
  %2008 = load i8, ptr %2007, align 1, !tbaa !232, !range !87, !noundef !88
  %2009 = trunc i8 %2008 to i1
  br i1 %2009, label %2010, label %2014

2010:                                             ; preds = %2005
  %2011 = load ptr, ptr %9, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.ImGuiStyle, ptr %2011, i32 0, i32 21
  %2013 = load float, ptr %2012, align 4, !tbaa !233
  br label %2015

2014:                                             ; preds = %2005
  br label %2015

2015:                                             ; preds = %2014, %2010
  %2016 = phi float [ %2013, %2010 ], [ 0.000000e+00, %2014 ]
  %2017 = load ptr, ptr %10, align 8, !tbaa !5
  %2018 = getelementptr inbounds %struct.ImGuiWindow, ptr %2017, i32 0, i32 35
  %2019 = load i8, ptr %2018, align 8, !tbaa !234, !range !87, !noundef !88
  %2020 = trunc i8 %2019 to i1
  br i1 %2020, label %2021, label %2025

2021:                                             ; preds = %2015
  %2022 = load ptr, ptr %9, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiStyle, ptr %2022, i32 0, i32 21
  %2024 = load float, ptr %2023, align 4, !tbaa !233
  br label %2026

2025:                                             ; preds = %2015
  br label %2026

2026:                                             ; preds = %2025, %2021
  %2027 = phi float [ %2024, %2021 ], [ 0.000000e+00, %2025 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %79, float noundef %2016, float noundef %2027)
  %2028 = load ptr, ptr %10, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.ImGuiWindow, ptr %2028, i32 0, i32 34
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2029, ptr align 4 %79, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  %2030 = load ptr, ptr %10, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.ImGuiWindow, ptr %2030, i32 0, i32 34
  %2032 = getelementptr inbounds %struct.ImVec2, ptr %2031, i32 0, i32 0
  %2033 = load float, ptr %2032, align 8, !tbaa !235
  %2034 = load ptr, ptr %10, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.ImGuiWindow, ptr %2034, i32 0, i32 21
  %2036 = load float, ptr %2035, align 8, !tbaa !208
  %2037 = fadd float %2036, %2033
  store float %2037, ptr %2035, align 8, !tbaa !208
  %2038 = load ptr, ptr %10, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.ImGuiWindow, ptr %2038, i32 0, i32 34
  %2040 = getelementptr inbounds %struct.ImVec2, ptr %2039, i32 0, i32 1
  %2041 = load float, ptr %2040, align 4, !tbaa !236
  %2042 = load ptr, ptr %10, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.ImGuiWindow, ptr %2042, i32 0, i32 22
  %2044 = load float, ptr %2043, align 4, !tbaa !210
  %2045 = fadd float %2044, %2041
  store float %2045, ptr %2043, align 4, !tbaa !210
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #13
  br label %2046

2046:                                             ; preds = %2026, %1863
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #13
  %2047 = load i32, ptr %7, align 4, !tbaa !9
  %2048 = and i32 %2047, 16777216
  %2049 = icmp ne i32 %2048, 0
  br i1 %2049, label %2050, label %2060

2050:                                             ; preds = %2046
  %2051 = load i32, ptr %7, align 4, !tbaa !9
  %2052 = and i32 %2051, 67108864
  %2053 = icmp ne i32 %2052, 0
  br i1 %2053, label %2060, label %2054

2054:                                             ; preds = %2050
  %2055 = load i8, ptr %29, align 1, !tbaa !91, !range !87, !noundef !88
  %2056 = trunc i8 %2055 to i1
  br i1 %2056, label %2060, label %2057

2057:                                             ; preds = %2054
  %2058 = load ptr, ptr %22, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.ImGuiWindow, ptr %2058, i32 0, i32 75
  br label %2061

2060:                                             ; preds = %2054, %2050, %2046
  br label %2061

2061:                                             ; preds = %2060, %2057
  %2062 = phi ptr [ %2059, %2057 ], [ %54, %2060 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %80, ptr align 4 %2062, i64 16, i1 false), !tbaa.struct !165
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #13
  %2063 = load ptr, ptr %10, align 8, !tbaa !5
  %2064 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %2063)
  %2065 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 0
  %2066 = extractvalue { <2 x float>, <2 x float> } %2064, 0
  store <2 x float> %2066, ptr %2065, align 4
  %2067 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 1
  %2068 = extractvalue { <2 x float>, <2 x float> } %2064, 1
  store <2 x float> %2068, ptr %2067, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #13
  %2069 = load ptr, ptr %10, align 8, !tbaa !5
  %2070 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %2069)
  %2071 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 0
  %2072 = extractvalue { <2 x float>, <2 x float> } %2070, 0
  store <2 x float> %2072, ptr %2071, align 4
  %2073 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %82, i32 0, i32 1
  %2074 = extractvalue { <2 x float>, <2 x float> } %2070, 1
  store <2 x float> %2074, ptr %2073, align 4
  %2075 = load ptr, ptr %10, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiWindow, ptr %2075, i32 0, i32 70
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2076, ptr align 4 %81, i64 16, i1 false), !tbaa.struct !165
  %2077 = load ptr, ptr %10, align 8, !tbaa !5
  %2078 = getelementptr inbounds %struct.ImGuiWindow, ptr %2077, i32 0, i32 105
  %2079 = load i8, ptr %2078, align 1
  %2080 = and i8 %2079, 1
  %2081 = trunc i8 %2080 to i1
  br i1 %2081, label %2082, label %2091

2082:                                             ; preds = %2061
  %2083 = load ptr, ptr %10, align 8, !tbaa !5
  %2084 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %2083)
  %2085 = load ptr, ptr %10, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.ImGuiWindow, ptr %2085, i32 0, i32 70
  %2087 = getelementptr inbounds %struct.ImRect, ptr %2086, i32 0, i32 0
  %2088 = getelementptr inbounds %struct.ImVec2, ptr %2087, i32 0, i32 1
  %2089 = load float, ptr %2088, align 4, !tbaa !237
  %2090 = fadd float %2089, %2084
  store float %2090, ptr %2088, align 4, !tbaa !237
  br label %2091

2091:                                             ; preds = %2082, %2061
  %2092 = load ptr, ptr %10, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiWindow, ptr %2092, i32 0, i32 70
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2093, ptr noundef nonnull align 4 dereferenceable(16) %80)
  %2094 = load ptr, ptr %10, align 8, !tbaa !5
  %2095 = getelementptr inbounds %struct.ImGuiWindow, ptr %2094, i32 0, i32 10
  %2096 = getelementptr inbounds %struct.ImVec2, ptr %2095, i32 0, i32 0
  %2097 = load float, ptr %2096, align 8, !tbaa !238
  %2098 = load ptr, ptr %10, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.ImGuiWindow, ptr %2098, i32 0, i32 19
  %2100 = load float, ptr %2099, align 8, !tbaa !207
  %2101 = fadd float %2097, %2100
  %2102 = load ptr, ptr %10, align 8, !tbaa !5
  %2103 = getelementptr inbounds %struct.ImGuiWindow, ptr %2102, i32 0, i32 71
  %2104 = getelementptr inbounds %struct.ImRect, ptr %2103, i32 0, i32 0
  %2105 = getelementptr inbounds %struct.ImVec2, ptr %2104, i32 0, i32 0
  store float %2101, ptr %2105, align 8, !tbaa !239
  %2106 = load ptr, ptr %10, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.ImGuiWindow, ptr %2106, i32 0, i32 10
  %2108 = getelementptr inbounds %struct.ImVec2, ptr %2107, i32 0, i32 1
  %2109 = load float, ptr %2108, align 4, !tbaa !240
  %2110 = load ptr, ptr %10, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.ImGuiWindow, ptr %2110, i32 0, i32 20
  %2112 = load float, ptr %2111, align 4, !tbaa !209
  %2113 = fadd float %2109, %2112
  %2114 = load ptr, ptr %10, align 8, !tbaa !5
  %2115 = getelementptr inbounds %struct.ImGuiWindow, ptr %2114, i32 0, i32 71
  %2116 = getelementptr inbounds %struct.ImRect, ptr %2115, i32 0, i32 0
  %2117 = getelementptr inbounds %struct.ImVec2, ptr %2116, i32 0, i32 1
  store float %2113, ptr %2117, align 4, !tbaa !241
  %2118 = load ptr, ptr %10, align 8, !tbaa !5
  %2119 = getelementptr inbounds %struct.ImGuiWindow, ptr %2118, i32 0, i32 10
  %2120 = getelementptr inbounds %struct.ImVec2, ptr %2119, i32 0, i32 0
  %2121 = load float, ptr %2120, align 8, !tbaa !238
  %2122 = load ptr, ptr %10, align 8, !tbaa !5
  %2123 = getelementptr inbounds %struct.ImGuiWindow, ptr %2122, i32 0, i32 11
  %2124 = getelementptr inbounds %struct.ImVec2, ptr %2123, i32 0, i32 0
  %2125 = load float, ptr %2124, align 8, !tbaa !184
  %2126 = fadd float %2121, %2125
  %2127 = load ptr, ptr %10, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.ImGuiWindow, ptr %2127, i32 0, i32 21
  %2129 = load float, ptr %2128, align 8, !tbaa !208
  %2130 = fsub float %2126, %2129
  %2131 = load ptr, ptr %10, align 8, !tbaa !5
  %2132 = getelementptr inbounds %struct.ImGuiWindow, ptr %2131, i32 0, i32 71
  %2133 = getelementptr inbounds %struct.ImRect, ptr %2132, i32 0, i32 1
  %2134 = getelementptr inbounds %struct.ImVec2, ptr %2133, i32 0, i32 0
  store float %2130, ptr %2134, align 8, !tbaa !242
  %2135 = load ptr, ptr %10, align 8, !tbaa !5
  %2136 = getelementptr inbounds %struct.ImGuiWindow, ptr %2135, i32 0, i32 10
  %2137 = getelementptr inbounds %struct.ImVec2, ptr %2136, i32 0, i32 1
  %2138 = load float, ptr %2137, align 4, !tbaa !240
  %2139 = load ptr, ptr %10, align 8, !tbaa !5
  %2140 = getelementptr inbounds %struct.ImGuiWindow, ptr %2139, i32 0, i32 11
  %2141 = getelementptr inbounds %struct.ImVec2, ptr %2140, i32 0, i32 1
  %2142 = load float, ptr %2141, align 4, !tbaa !186
  %2143 = fadd float %2138, %2142
  %2144 = load ptr, ptr %10, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.ImGuiWindow, ptr %2144, i32 0, i32 22
  %2146 = load float, ptr %2145, align 4, !tbaa !210
  %2147 = fsub float %2143, %2146
  %2148 = load ptr, ptr %10, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.ImGuiWindow, ptr %2148, i32 0, i32 71
  %2150 = getelementptr inbounds %struct.ImRect, ptr %2149, i32 0, i32 1
  %2151 = getelementptr inbounds %struct.ImVec2, ptr %2150, i32 0, i32 1
  store float %2147, ptr %2151, align 4, !tbaa !243
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #13
  %2152 = load i32, ptr %7, align 4, !tbaa !9
  %2153 = and i32 %2152, 1024
  %2154 = icmp ne i32 %2153, 0
  br i1 %2154, label %2159, label %2155

2155:                                             ; preds = %2091
  %2156 = load i32, ptr %7, align 4, !tbaa !9
  %2157 = and i32 %2156, 1
  %2158 = icmp ne i32 %2157, 0
  br i1 %2158, label %2163, label %2159

2159:                                             ; preds = %2155, %2091
  %2160 = load ptr, ptr %9, align 8, !tbaa !5
  %2161 = getelementptr inbounds %struct.ImGuiStyle, ptr %2160, i32 0, i32 14
  %2162 = load float, ptr %2161, align 4, !tbaa !244
  br label %2167

2163:                                             ; preds = %2155
  %2164 = load ptr, ptr %10, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.ImGuiWindow, ptr %2164, i32 0, i32 18
  %2166 = load float, ptr %2165, align 4, !tbaa !191
  br label %2167

2167:                                             ; preds = %2163, %2159
  %2168 = phi float [ %2162, %2159 ], [ %2166, %2163 ]
  store float %2168, ptr %83, align 4, !tbaa !140
  %2169 = load ptr, ptr %10, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 71
  %2171 = getelementptr inbounds %struct.ImRect, ptr %2170, i32 0, i32 0
  %2172 = getelementptr inbounds %struct.ImVec2, ptr %2171, i32 0, i32 0
  %2173 = load float, ptr %2172, align 8, !tbaa !239
  %2174 = fadd float 5.000000e-01, %2173
  %2175 = load ptr, ptr %10, align 8, !tbaa !5
  %2176 = getelementptr inbounds %struct.ImGuiWindow, ptr %2175, i32 0, i32 16
  %2177 = getelementptr inbounds %struct.ImVec2, ptr %2176, i32 0, i32 0
  %2178 = load float, ptr %2177, align 8, !tbaa !195
  %2179 = fmul float %2178, 5.000000e-01
  %2180 = call noundef float @_ZL7ImFloorf(float noundef %2179)
  %2181 = load ptr, ptr %10, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.ImGuiWindow, ptr %2181, i32 0, i32 18
  %2183 = load float, ptr %2182, align 4, !tbaa !191
  %2184 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2180, float noundef %2183)
  %2185 = fadd float %2174, %2184
  %2186 = call noundef float @_ZL7ImFloorf(float noundef %2185)
  %2187 = load ptr, ptr %10, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiWindow, ptr %2187, i32 0, i32 72
  %2189 = getelementptr inbounds %struct.ImRect, ptr %2188, i32 0, i32 0
  %2190 = getelementptr inbounds %struct.ImVec2, ptr %2189, i32 0, i32 0
  store float %2186, ptr %2190, align 8, !tbaa !245
  %2191 = load ptr, ptr %10, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 71
  %2193 = getelementptr inbounds %struct.ImRect, ptr %2192, i32 0, i32 0
  %2194 = getelementptr inbounds %struct.ImVec2, ptr %2193, i32 0, i32 1
  %2195 = load float, ptr %2194, align 4, !tbaa !241
  %2196 = fadd float 5.000000e-01, %2195
  %2197 = load float, ptr %83, align 4, !tbaa !140
  %2198 = fadd float %2196, %2197
  %2199 = call noundef float @_ZL7ImFloorf(float noundef %2198)
  %2200 = load ptr, ptr %10, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.ImGuiWindow, ptr %2200, i32 0, i32 72
  %2202 = getelementptr inbounds %struct.ImRect, ptr %2201, i32 0, i32 0
  %2203 = getelementptr inbounds %struct.ImVec2, ptr %2202, i32 0, i32 1
  store float %2199, ptr %2203, align 4, !tbaa !246
  %2204 = load ptr, ptr %10, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiWindow, ptr %2204, i32 0, i32 71
  %2206 = getelementptr inbounds %struct.ImRect, ptr %2205, i32 0, i32 1
  %2207 = getelementptr inbounds %struct.ImVec2, ptr %2206, i32 0, i32 0
  %2208 = load float, ptr %2207, align 8, !tbaa !242
  %2209 = fadd float 5.000000e-01, %2208
  %2210 = load ptr, ptr %10, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiWindow, ptr %2210, i32 0, i32 16
  %2212 = getelementptr inbounds %struct.ImVec2, ptr %2211, i32 0, i32 0
  %2213 = load float, ptr %2212, align 8, !tbaa !195
  %2214 = fmul float %2213, 5.000000e-01
  %2215 = call noundef float @_ZL7ImFloorf(float noundef %2214)
  %2216 = load ptr, ptr %10, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiWindow, ptr %2216, i32 0, i32 18
  %2218 = load float, ptr %2217, align 4, !tbaa !191
  %2219 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2215, float noundef %2218)
  %2220 = fsub float %2209, %2219
  %2221 = call noundef float @_ZL7ImFloorf(float noundef %2220)
  %2222 = load ptr, ptr %10, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.ImGuiWindow, ptr %2222, i32 0, i32 72
  %2224 = getelementptr inbounds %struct.ImRect, ptr %2223, i32 0, i32 1
  %2225 = getelementptr inbounds %struct.ImVec2, ptr %2224, i32 0, i32 0
  store float %2221, ptr %2225, align 8, !tbaa !247
  %2226 = load ptr, ptr %10, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.ImGuiWindow, ptr %2226, i32 0, i32 71
  %2228 = getelementptr inbounds %struct.ImRect, ptr %2227, i32 0, i32 1
  %2229 = getelementptr inbounds %struct.ImVec2, ptr %2228, i32 0, i32 1
  %2230 = load float, ptr %2229, align 4, !tbaa !243
  %2231 = fadd float 5.000000e-01, %2230
  %2232 = load ptr, ptr %10, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 18
  %2234 = load float, ptr %2233, align 4, !tbaa !191
  %2235 = fsub float %2231, %2234
  %2236 = call noundef float @_ZL7ImFloorf(float noundef %2235)
  %2237 = load ptr, ptr %10, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.ImGuiWindow, ptr %2237, i32 0, i32 72
  %2239 = getelementptr inbounds %struct.ImRect, ptr %2238, i32 0, i32 1
  %2240 = getelementptr inbounds %struct.ImVec2, ptr %2239, i32 0, i32 1
  store float %2236, ptr %2240, align 4, !tbaa !248
  %2241 = load ptr, ptr %10, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.ImGuiWindow, ptr %2241, i32 0, i32 72
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2242, ptr noundef nonnull align 4 dereferenceable(16) %80)
  %2243 = load ptr, ptr %10, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiWindow, ptr %2243, i32 0, i32 11
  %2245 = getelementptr inbounds %struct.ImVec2, ptr %2244, i32 0, i32 0
  %2246 = load float, ptr %2245, align 8, !tbaa !184
  %2247 = fcmp ogt float %2246, 0.000000e+00
  br i1 %2247, label %2248, label %2265

2248:                                             ; preds = %2167
  %2249 = load i32, ptr %7, align 4, !tbaa !9
  %2250 = and i32 %2249, 33554432
  %2251 = icmp ne i32 %2250, 0
  br i1 %2251, label %2265, label %2252

2252:                                             ; preds = %2248
  %2253 = load i32, ptr %7, align 4, !tbaa !9
  %2254 = and i32 %2253, 64
  %2255 = icmp ne i32 %2254, 0
  br i1 %2255, label %2265, label %2256

2256:                                             ; preds = %2252
  %2257 = load ptr, ptr %10, align 8, !tbaa !5
  %2258 = getelementptr inbounds %struct.ImGuiWindow, ptr %2257, i32 0, i32 11
  %2259 = getelementptr inbounds %struct.ImVec2, ptr %2258, i32 0, i32 0
  %2260 = load float, ptr %2259, align 8, !tbaa !184
  %2261 = fmul float %2260, 0x3FE4CCCCC0000000
  %2262 = call noundef float @_ZL7ImFloorf(float noundef %2261)
  %2263 = load ptr, ptr %10, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiWindow, ptr %2263, i32 0, i32 82
  store float %2262, ptr %2264, align 4, !tbaa !249
  br label %2273

2265:                                             ; preds = %2252, %2248, %2167
  %2266 = load ptr, ptr %8, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.ImGuiContext, ptr %2266, i32 0, i32 8
  %2268 = load float, ptr %2267, align 8, !tbaa !228
  %2269 = fmul float %2268, 1.600000e+01
  %2270 = call noundef float @_ZL7ImFloorf(float noundef %2269)
  %2271 = load ptr, ptr %10, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.ImGuiWindow, ptr %2271, i32 0, i32 82
  store float %2270, ptr %2272, align 4, !tbaa !249
  br label %2273

2273:                                             ; preds = %2265, %2256
  %2274 = load ptr, ptr %10, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.ImGuiWindow, ptr %2274, i32 0, i32 13
  %2276 = getelementptr inbounds %struct.ImVec2, ptr %2275, i32 0, i32 0
  %2277 = load float, ptr %2276, align 8, !tbaa !250
  %2278 = load ptr, ptr %10, align 8, !tbaa !5
  %2279 = getelementptr inbounds %struct.ImGuiWindow, ptr %2278, i32 0, i32 16
  %2280 = getelementptr inbounds %struct.ImVec2, ptr %2279, i32 0, i32 0
  %2281 = load float, ptr %2280, align 8, !tbaa !195
  %2282 = call float @llvm.fmuladd.f32(float %2281, float 2.000000e+00, float %2277)
  %2283 = load ptr, ptr %10, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.ImGuiWindow, ptr %2283, i32 0, i32 71
  %2285 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2284)
  %2286 = fsub float %2282, %2285
  %2287 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2286)
  %2288 = load ptr, ptr %10, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 30
  %2290 = getelementptr inbounds %struct.ImVec2, ptr %2289, i32 0, i32 0
  store float %2287, ptr %2290, align 8, !tbaa !251
  %2291 = load ptr, ptr %10, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiWindow, ptr %2291, i32 0, i32 13
  %2293 = getelementptr inbounds %struct.ImVec2, ptr %2292, i32 0, i32 1
  %2294 = load float, ptr %2293, align 4, !tbaa !252
  %2295 = load ptr, ptr %10, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.ImGuiWindow, ptr %2295, i32 0, i32 16
  %2297 = getelementptr inbounds %struct.ImVec2, ptr %2296, i32 0, i32 1
  %2298 = load float, ptr %2297, align 4, !tbaa !253
  %2299 = call float @llvm.fmuladd.f32(float %2298, float 2.000000e+00, float %2294)
  %2300 = load ptr, ptr %10, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.ImGuiWindow, ptr %2300, i32 0, i32 71
  %2302 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2301)
  %2303 = fsub float %2299, %2302
  %2304 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2303)
  %2305 = load ptr, ptr %10, align 8, !tbaa !5
  %2306 = getelementptr inbounds %struct.ImGuiWindow, ptr %2305, i32 0, i32 30
  %2307 = getelementptr inbounds %struct.ImVec2, ptr %2306, i32 0, i32 1
  store float %2304, ptr %2307, align 4, !tbaa !254
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %2308 = load ptr, ptr %10, align 8, !tbaa !5
  %2309 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2308)
  store <2 x float> %2309, ptr %84, align 4
  %2310 = load ptr, ptr %10, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 29
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2311, ptr align 4 %84, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %85, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2312 = load ptr, ptr %10, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ImGuiWindow, ptr %2312, i32 0, i32 31
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2313, ptr align 4 %85, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #13
  %2314 = load ptr, ptr %10, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.ImGuiWindow, ptr %2314, i32 0, i32 24
  store float 0.000000e+00, ptr %2315, align 4, !tbaa !255
  %2316 = load ptr, ptr %10, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiWindow, ptr %2316, i32 0, i32 23
  store float 0.000000e+00, ptr %2317, align 8, !tbaa !256
  %2318 = load ptr, ptr %10, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiWindow, ptr %2318, i32 0, i32 88
  %2320 = load ptr, ptr %2319, align 8, !tbaa !166
  %2321 = getelementptr inbounds %struct.ImDrawList, ptr %2320, i32 0, i32 0
  %2322 = getelementptr inbounds %struct.ImVector.37, ptr %2321, i32 0, i32 0
  %2323 = load i32, ptr %2322, align 8, !tbaa !257
  %2324 = icmp eq i32 %2323, 1
  br i1 %2324, label %2325, label %2334

2325:                                             ; preds = %2273
  %2326 = load ptr, ptr %10, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiWindow, ptr %2326, i32 0, i32 88
  %2328 = load ptr, ptr %2327, align 8, !tbaa !166
  %2329 = getelementptr inbounds %struct.ImDrawList, ptr %2328, i32 0, i32 0
  %2330 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2329, i32 noundef 0)
  %2331 = getelementptr inbounds %struct.ImDrawCmd, ptr %2330, i32 0, i32 4
  %2332 = load i32, ptr %2331, align 8, !tbaa !258
  %2333 = icmp eq i32 %2332, 0
  br label %2334

2334:                                             ; preds = %2325, %2273
  %2335 = phi i1 [ false, %2273 ], [ %2333, %2325 ]
  br i1 %2335, label %2336, label %2337

2336:                                             ; preds = %2334
  br label %2339

2337:                                             ; preds = %2334
  call void @__assert_fail(ptr noundef @.str.145, ptr noundef @.str.3, i32 noundef 7167, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2338:                                             ; No predecessors!
  br label %2339

2339:                                             ; preds = %2338, %2336
  %2340 = load ptr, ptr %10, align 8, !tbaa !5
  %2341 = getelementptr inbounds %struct.ImGuiWindow, ptr %2340, i32 0, i32 88
  %2342 = load ptr, ptr %2341, align 8, !tbaa !166
  %2343 = load ptr, ptr %8, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.ImGuiContext, ptr %2343, i32 0, i32 7
  %2345 = load ptr, ptr %2344, align 8, !tbaa !260
  %2346 = getelementptr inbounds %struct.ImFont, ptr %2345, i32 0, i32 6
  %2347 = load ptr, ptr %2346, align 8, !tbaa !261
  %2348 = getelementptr inbounds %struct.ImFontAtlas, ptr %2347, i32 0, i32 2
  %2349 = load ptr, ptr %2348, align 8, !tbaa !262
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %2342, ptr noundef %2349)
  %2350 = getelementptr inbounds %struct.ImRect, ptr %80, i32 0, i32 0
  %2351 = getelementptr inbounds %struct.ImRect, ptr %80, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2350, ptr noundef nonnull align 4 dereferenceable(8) %2351, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  %2352 = load ptr, ptr %10, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiWindow, ptr %2352, i32 0, i32 105
  %2354 = load i8, ptr %2353, align 1
  %2355 = and i8 %2354, 1
  %2356 = trunc i8 %2355 to i1
  br i1 %2356, label %2357, label %2364

2357:                                             ; preds = %2339
  %2358 = load ptr, ptr %10, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiWindow, ptr %2358, i32 0, i32 105
  %2360 = load i8, ptr %2359, align 1
  %2361 = lshr i8 %2360, 2
  %2362 = and i8 %2361, 1
  %2363 = trunc i8 %2362 to i1
  br label %2364

2364:                                             ; preds = %2357, %2339
  %2365 = phi i1 [ true, %2339 ], [ %2363, %2357 ]
  %2366 = zext i1 %2365 to i8
  store i8 %2366, ptr %86, align 1, !tbaa !91
  %2367 = load i8, ptr %86, align 1, !tbaa !91, !range !87, !noundef !88
  %2368 = trunc i8 %2367 to i1
  br i1 %2368, label %2369, label %2521

2369:                                             ; preds = %2364
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #13
  store i8 0, ptr %87, align 1, !tbaa !91
  %2370 = load i32, ptr %7, align 4, !tbaa !9
  %2371 = and i32 %2370, 16777216
  %2372 = icmp ne i32 %2371, 0
  br i1 %2372, label %2373, label %2446

2373:                                             ; preds = %2369
  %2374 = load i32, ptr %7, align 4, !tbaa !9
  %2375 = and i32 %2374, 67108864
  %2376 = icmp ne i32 %2375, 0
  br i1 %2376, label %2446, label %2377

2377:                                             ; preds = %2373
  %2378 = load i8, ptr %29, align 1, !tbaa !91, !range !87, !noundef !88
  %2379 = trunc i8 %2378 to i1
  br i1 %2379, label %2446, label %2380

2380:                                             ; preds = %2377
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #13
  %2381 = load ptr, ptr %22, align 8, !tbaa !5
  %2382 = getelementptr inbounds %struct.ImGuiWindow, ptr %2381, i32 0, i32 69
  %2383 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2382, i32 0, i32 26
  %2384 = getelementptr inbounds %struct.ImVector.4, ptr %2383, i32 0, i32 0
  %2385 = load i32, ptr %2384, align 8, !tbaa !217
  %2386 = icmp sge i32 %2385, 2
  br i1 %2386, label %2387, label %2399

2387:                                             ; preds = %2380
  %2388 = load ptr, ptr %22, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.ImGuiWindow, ptr %2388, i32 0, i32 69
  %2390 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2389, i32 0, i32 26
  %2391 = load ptr, ptr %22, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.ImGuiWindow, ptr %2391, i32 0, i32 69
  %2393 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2392, i32 0, i32 26
  %2394 = getelementptr inbounds %struct.ImVector.4, ptr %2393, i32 0, i32 0
  %2395 = load i32, ptr %2394, align 8, !tbaa !217
  %2396 = sub nsw i32 %2395, 2
  %2397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2390, i32 noundef %2396)
  %2398 = load ptr, ptr %2397, align 8, !tbaa !5
  br label %2400

2399:                                             ; preds = %2380
  br label %2400

2400:                                             ; preds = %2399, %2387
  %2401 = phi ptr [ %2398, %2387 ], [ null, %2399 ]
  store ptr %2401, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  %2402 = load ptr, ptr %88, align 8, !tbaa !5
  %2403 = icmp ne ptr %2402, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #13
  br i1 %2403, label %2404, label %2418

2404:                                             ; preds = %2400
  %2405 = load ptr, ptr %88, align 8, !tbaa !5
  %2406 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %2405)
  %2407 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %90, i32 0, i32 0
  %2408 = extractvalue { <2 x float>, <2 x float> } %2406, 0
  store <2 x float> %2408, ptr %2407, align 4
  %2409 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %90, i32 0, i32 1
  %2410 = extractvalue { <2 x float>, <2 x float> } %2406, 1
  store <2 x float> %2410, ptr %2409, align 4
  %2411 = load ptr, ptr %10, align 8, !tbaa !5
  %2412 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %2411)
  %2413 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 0
  %2414 = extractvalue { <2 x float>, <2 x float> } %2412, 0
  store <2 x float> %2414, ptr %2413, align 4
  %2415 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %91, i32 0, i32 1
  %2416 = extractvalue { <2 x float>, <2 x float> } %2412, 1
  store <2 x float> %2416, ptr %2415, align 4
  %2417 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %91)
  br label %2419

2418:                                             ; preds = %2400
  br label %2419

2419:                                             ; preds = %2418, %2404
  %2420 = phi i1 [ %2417, %2404 ], [ false, %2418 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #13
  %2421 = zext i1 %2420 to i8
  store i8 %2421, ptr %89, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #13
  %2422 = load ptr, ptr %22, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiWindow, ptr %2422, i32 0, i32 88
  %2424 = load ptr, ptr %2423, align 8, !tbaa !166
  %2425 = getelementptr inbounds %struct.ImDrawList, ptr %2424, i32 0, i32 2
  %2426 = getelementptr inbounds %struct.ImVector.38, ptr %2425, i32 0, i32 0
  %2427 = load i32, ptr %2426, align 8, !tbaa !266
  %2428 = icmp eq i32 %2427, 0
  %2429 = zext i1 %2428 to i8
  store i8 %2429, ptr %92, align 1, !tbaa !91
  %2430 = load ptr, ptr %10, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiWindow, ptr %2430, i32 0, i32 88
  %2432 = load ptr, ptr %2431, align 8, !tbaa !166
  %2433 = getelementptr inbounds %struct.ImDrawList, ptr %2432, i32 0, i32 0
  %2434 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2433)
  %2435 = getelementptr inbounds %struct.ImDrawCmd, ptr %2434, i32 0, i32 4
  %2436 = load i32, ptr %2435, align 8, !tbaa !258
  %2437 = icmp eq i32 %2436, 0
  br i1 %2437, label %2438, label %2445

2438:                                             ; preds = %2419
  %2439 = load i8, ptr %92, align 1, !tbaa !91, !range !87, !noundef !88
  %2440 = trunc i8 %2439 to i1
  br i1 %2440, label %2445, label %2441

2441:                                             ; preds = %2438
  %2442 = load i8, ptr %89, align 1, !tbaa !91, !range !87, !noundef !88
  %2443 = trunc i8 %2442 to i1
  br i1 %2443, label %2445, label %2444

2444:                                             ; preds = %2441
  store i8 1, ptr %87, align 1, !tbaa !91
  br label %2445

2445:                                             ; preds = %2444, %2441, %2438, %2419
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #13
  br label %2446

2446:                                             ; preds = %2445, %2377, %2373, %2369
  %2447 = load i8, ptr %87, align 1, !tbaa !91, !range !87, !noundef !88
  %2448 = trunc i8 %2447 to i1
  br i1 %2448, label %2449, label %2455

2449:                                             ; preds = %2446
  %2450 = load ptr, ptr %22, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ImGuiWindow, ptr %2450, i32 0, i32 88
  %2452 = load ptr, ptr %2451, align 8, !tbaa !166
  %2453 = load ptr, ptr %10, align 8, !tbaa !5
  %2454 = getelementptr inbounds %struct.ImGuiWindow, ptr %2453, i32 0, i32 88
  store ptr %2452, ptr %2454, align 8, !tbaa !166
  br label %2455

2455:                                             ; preds = %2449, %2446
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  %2456 = load ptr, ptr %8, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiContext, ptr %2456, i32 0, i32 141
  %2458 = load ptr, ptr %2457, align 8, !tbaa !267
  %2459 = icmp ne ptr %2458, null
  br i1 %2459, label %2460, label %2464

2460:                                             ; preds = %2455
  %2461 = load ptr, ptr %8, align 8, !tbaa !5
  %2462 = getelementptr inbounds %struct.ImGuiContext, ptr %2461, i32 0, i32 141
  %2463 = load ptr, ptr %2462, align 8, !tbaa !267
  br label %2468

2464:                                             ; preds = %2455
  %2465 = load ptr, ptr %8, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiContext, ptr %2465, i32 0, i32 99
  %2467 = load ptr, ptr %2466, align 8, !tbaa !268
  br label %2468

2468:                                             ; preds = %2464, %2460
  %2469 = phi ptr [ %2463, %2460 ], [ %2467, %2464 ]
  store ptr %2469, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #13
  %2470 = load i8, ptr %65, align 1, !tbaa !91, !range !87, !noundef !88
  %2471 = trunc i8 %2470 to i1
  br i1 %2471, label %2502, label %2472

2472:                                             ; preds = %2468
  %2473 = load ptr, ptr %93, align 8, !tbaa !5
  %2474 = icmp ne ptr %2473, null
  br i1 %2474, label %2475, label %2500

2475:                                             ; preds = %2472
  %2476 = load ptr, ptr %10, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 95
  %2478 = load ptr, ptr %2477, align 8, !tbaa !269
  %2479 = load ptr, ptr %93, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiWindow, ptr %2479, i32 0, i32 95
  %2481 = load ptr, ptr %2480, align 8, !tbaa !269
  %2482 = icmp eq ptr %2478, %2481
  br i1 %2482, label %2498, label %2483

2483:                                             ; preds = %2475
  %2484 = load ptr, ptr %10, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.ImGuiWindow, ptr %2484, i32 0, i32 108
  %2486 = load ptr, ptr %2485, align 8, !tbaa !123
  %2487 = icmp ne ptr %2486, null
  br i1 %2487, label %2488, label %2496

2488:                                             ; preds = %2483
  %2489 = load ptr, ptr %10, align 8, !tbaa !5
  %2490 = getelementptr inbounds %struct.ImGuiWindow, ptr %2489, i32 0, i32 108
  %2491 = load ptr, ptr %2490, align 8, !tbaa !123
  %2492 = load ptr, ptr %93, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.ImGuiWindow, ptr %2492, i32 0, i32 108
  %2494 = load ptr, ptr %2493, align 8, !tbaa !123
  %2495 = icmp eq ptr %2491, %2494
  br label %2496

2496:                                             ; preds = %2488, %2483
  %2497 = phi i1 [ false, %2483 ], [ %2495, %2488 ]
  br label %2498

2498:                                             ; preds = %2496, %2475
  %2499 = phi i1 [ true, %2475 ], [ %2497, %2496 ]
  br label %2500

2500:                                             ; preds = %2498, %2472
  %2501 = phi i1 [ false, %2472 ], [ %2499, %2498 ]
  br label %2502

2502:                                             ; preds = %2500, %2468
  %2503 = phi i1 [ true, %2468 ], [ %2501, %2500 ]
  %2504 = zext i1 %2503 to i8
  store i8 %2504, ptr %94, align 1, !tbaa !91
  %2505 = load ptr, ptr %10, align 8, !tbaa !5
  %2506 = load i8, ptr %94, align 1, !tbaa !91, !range !87, !noundef !88
  %2507 = trunc i8 %2506 to i1
  %2508 = load i8, ptr %66, align 1, !tbaa !91, !range !87, !noundef !88
  %2509 = trunc i8 %2508 to i1
  %2510 = load i32, ptr %69, align 4, !tbaa !9
  %2511 = getelementptr inbounds [4 x i32], ptr %68, i64 0, i64 0
  %2512 = load float, ptr %70, align 4, !tbaa !140
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2505, ptr noundef nonnull align 4 dereferenceable(16) %82, i1 noundef zeroext %2507, i1 noundef zeroext %2509, i32 noundef %2510, ptr noundef %2511, float noundef %2512)
  %2513 = load i8, ptr %87, align 1, !tbaa !91, !range !87, !noundef !88
  %2514 = trunc i8 %2513 to i1
  br i1 %2514, label %2515, label %2520

2515:                                             ; preds = %2502
  %2516 = load ptr, ptr %10, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiWindow, ptr %2516, i32 0, i32 89
  %2518 = load ptr, ptr %10, align 8, !tbaa !5
  %2519 = getelementptr inbounds %struct.ImGuiWindow, ptr %2518, i32 0, i32 88
  store ptr %2517, ptr %2519, align 8, !tbaa !166
  br label %2520

2520:                                             ; preds = %2515, %2502
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #13
  br label %2521

2521:                                             ; preds = %2520, %2364
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #13
  %2522 = load i32, ptr %7, align 4, !tbaa !9
  %2523 = and i32 %2522, 8
  %2524 = icmp ne i32 %2523, 0
  br i1 %2524, label %2529, label %2525

2525:                                             ; preds = %2521
  %2526 = load i32, ptr %7, align 4, !tbaa !9
  %2527 = and i32 %2526, 2048
  %2528 = icmp ne i32 %2527, 0
  br label %2529

2529:                                             ; preds = %2525, %2521
  %2530 = phi i1 [ false, %2521 ], [ %2528, %2525 ]
  %2531 = zext i1 %2530 to i8
  store i8 %2531, ptr %95, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #13
  %2532 = load i32, ptr %7, align 4, !tbaa !9
  %2533 = and i32 %2532, 8
  %2534 = icmp ne i32 %2533, 0
  %2535 = xor i1 %2534, true
  %2536 = zext i1 %2535 to i8
  store i8 %2536, ptr %96, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #13
  %2537 = load ptr, ptr %10, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiWindow, ptr %2537, i32 0, i32 15
  %2539 = getelementptr inbounds %struct.ImVec2, ptr %2538, i32 0, i32 0
  %2540 = load float, ptr %2539, align 8, !tbaa !270
  %2541 = fcmp une float %2540, 0.000000e+00
  br i1 %2541, label %2542, label %2547

2542:                                             ; preds = %2529
  %2543 = load ptr, ptr %10, align 8, !tbaa !5
  %2544 = getelementptr inbounds %struct.ImGuiWindow, ptr %2543, i32 0, i32 15
  %2545 = getelementptr inbounds %struct.ImVec2, ptr %2544, i32 0, i32 0
  %2546 = load float, ptr %2545, align 8, !tbaa !270
  br label %2577

2547:                                             ; preds = %2529
  %2548 = load i8, ptr %95, align 1, !tbaa !91, !range !87, !noundef !88
  %2549 = trunc i8 %2548 to i1
  br i1 %2549, label %2550, label %2555

2550:                                             ; preds = %2547
  %2551 = load ptr, ptr %10, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiWindow, ptr %2551, i32 0, i32 13
  %2553 = getelementptr inbounds %struct.ImVec2, ptr %2552, i32 0, i32 0
  %2554 = load float, ptr %2553, align 8, !tbaa !250
  br label %2556

2555:                                             ; preds = %2547
  br label %2556

2556:                                             ; preds = %2555, %2550
  %2557 = phi float [ %2554, %2550 ], [ 0.000000e+00, %2555 ]
  %2558 = load ptr, ptr %10, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiWindow, ptr %2558, i32 0, i32 11
  %2560 = getelementptr inbounds %struct.ImVec2, ptr %2559, i32 0, i32 0
  %2561 = load float, ptr %2560, align 8, !tbaa !184
  %2562 = load ptr, ptr %10, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiWindow, ptr %2562, i32 0, i32 16
  %2564 = getelementptr inbounds %struct.ImVec2, ptr %2563, i32 0, i32 0
  %2565 = load float, ptr %2564, align 8, !tbaa !195
  %2566 = fneg float %2565
  %2567 = call float @llvm.fmuladd.f32(float %2566, float 2.000000e+00, float %2561)
  %2568 = load ptr, ptr %10, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiWindow, ptr %2568, i32 0, i32 19
  %2570 = load float, ptr %2569, align 8, !tbaa !207
  %2571 = load ptr, ptr %10, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.ImGuiWindow, ptr %2571, i32 0, i32 21
  %2573 = load float, ptr %2572, align 8, !tbaa !208
  %2574 = fadd float %2570, %2573
  %2575 = fsub float %2567, %2574
  %2576 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2557, float noundef %2575)
  br label %2577

2577:                                             ; preds = %2556, %2542
  %2578 = phi float [ %2546, %2542 ], [ %2576, %2556 ]
  store float %2578, ptr %97, align 4, !tbaa !140
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #13
  %2579 = load ptr, ptr %10, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiWindow, ptr %2579, i32 0, i32 15
  %2581 = getelementptr inbounds %struct.ImVec2, ptr %2580, i32 0, i32 1
  %2582 = load float, ptr %2581, align 4, !tbaa !271
  %2583 = fcmp une float %2582, 0.000000e+00
  br i1 %2583, label %2584, label %2589

2584:                                             ; preds = %2577
  %2585 = load ptr, ptr %10, align 8, !tbaa !5
  %2586 = getelementptr inbounds %struct.ImGuiWindow, ptr %2585, i32 0, i32 15
  %2587 = getelementptr inbounds %struct.ImVec2, ptr %2586, i32 0, i32 1
  %2588 = load float, ptr %2587, align 4, !tbaa !271
  br label %2619

2589:                                             ; preds = %2577
  %2590 = load i8, ptr %96, align 1, !tbaa !91, !range !87, !noundef !88
  %2591 = trunc i8 %2590 to i1
  br i1 %2591, label %2592, label %2597

2592:                                             ; preds = %2589
  %2593 = load ptr, ptr %10, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ImGuiWindow, ptr %2593, i32 0, i32 13
  %2595 = getelementptr inbounds %struct.ImVec2, ptr %2594, i32 0, i32 1
  %2596 = load float, ptr %2595, align 4, !tbaa !252
  br label %2598

2597:                                             ; preds = %2589
  br label %2598

2598:                                             ; preds = %2597, %2592
  %2599 = phi float [ %2596, %2592 ], [ 0.000000e+00, %2597 ]
  %2600 = load ptr, ptr %10, align 8, !tbaa !5
  %2601 = getelementptr inbounds %struct.ImGuiWindow, ptr %2600, i32 0, i32 11
  %2602 = getelementptr inbounds %struct.ImVec2, ptr %2601, i32 0, i32 1
  %2603 = load float, ptr %2602, align 4, !tbaa !186
  %2604 = load ptr, ptr %10, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 16
  %2606 = getelementptr inbounds %struct.ImVec2, ptr %2605, i32 0, i32 1
  %2607 = load float, ptr %2606, align 4, !tbaa !253
  %2608 = fneg float %2607
  %2609 = call float @llvm.fmuladd.f32(float %2608, float 2.000000e+00, float %2603)
  %2610 = load ptr, ptr %10, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiWindow, ptr %2610, i32 0, i32 20
  %2612 = load float, ptr %2611, align 4, !tbaa !209
  %2613 = load ptr, ptr %10, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiWindow, ptr %2613, i32 0, i32 22
  %2615 = load float, ptr %2614, align 4, !tbaa !210
  %2616 = fadd float %2612, %2615
  %2617 = fsub float %2609, %2616
  %2618 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2599, float noundef %2617)
  br label %2619

2619:                                             ; preds = %2598, %2584
  %2620 = phi float [ %2588, %2584 ], [ %2618, %2598 ]
  store float %2620, ptr %98, align 4, !tbaa !140
  %2621 = load ptr, ptr %10, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.ImGuiWindow, ptr %2621, i32 0, i32 71
  %2623 = getelementptr inbounds %struct.ImRect, ptr %2622, i32 0, i32 0
  %2624 = getelementptr inbounds %struct.ImVec2, ptr %2623, i32 0, i32 0
  %2625 = load float, ptr %2624, align 8, !tbaa !239
  %2626 = load ptr, ptr %10, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.ImGuiWindow, ptr %2626, i32 0, i32 29
  %2628 = getelementptr inbounds %struct.ImVec2, ptr %2627, i32 0, i32 0
  %2629 = load float, ptr %2628, align 8, !tbaa !272
  %2630 = fsub float %2625, %2629
  %2631 = load ptr, ptr %10, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 16
  %2633 = getelementptr inbounds %struct.ImVec2, ptr %2632, i32 0, i32 0
  %2634 = load float, ptr %2633, align 8, !tbaa !195
  %2635 = load ptr, ptr %10, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.ImGuiWindow, ptr %2635, i32 0, i32 18
  %2637 = load float, ptr %2636, align 4, !tbaa !191
  %2638 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2634, float noundef %2637)
  %2639 = fadd float %2630, %2638
  %2640 = call noundef float @_ZL7ImFloorf(float noundef %2639)
  %2641 = load ptr, ptr %10, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiWindow, ptr %2641, i32 0, i32 73
  %2643 = getelementptr inbounds %struct.ImRect, ptr %2642, i32 0, i32 0
  %2644 = getelementptr inbounds %struct.ImVec2, ptr %2643, i32 0, i32 0
  store float %2640, ptr %2644, align 8, !tbaa !273
  %2645 = load ptr, ptr %10, align 8, !tbaa !5
  %2646 = getelementptr inbounds %struct.ImGuiWindow, ptr %2645, i32 0, i32 71
  %2647 = getelementptr inbounds %struct.ImRect, ptr %2646, i32 0, i32 0
  %2648 = getelementptr inbounds %struct.ImVec2, ptr %2647, i32 0, i32 1
  %2649 = load float, ptr %2648, align 4, !tbaa !241
  %2650 = load ptr, ptr %10, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.ImGuiWindow, ptr %2650, i32 0, i32 29
  %2652 = getelementptr inbounds %struct.ImVec2, ptr %2651, i32 0, i32 1
  %2653 = load float, ptr %2652, align 4, !tbaa !274
  %2654 = fsub float %2649, %2653
  %2655 = load ptr, ptr %10, align 8, !tbaa !5
  %2656 = getelementptr inbounds %struct.ImGuiWindow, ptr %2655, i32 0, i32 16
  %2657 = getelementptr inbounds %struct.ImVec2, ptr %2656, i32 0, i32 1
  %2658 = load float, ptr %2657, align 4, !tbaa !253
  %2659 = load ptr, ptr %10, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.ImGuiWindow, ptr %2659, i32 0, i32 18
  %2661 = load float, ptr %2660, align 4, !tbaa !191
  %2662 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2658, float noundef %2661)
  %2663 = fadd float %2654, %2662
  %2664 = call noundef float @_ZL7ImFloorf(float noundef %2663)
  %2665 = load ptr, ptr %10, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiWindow, ptr %2665, i32 0, i32 73
  %2667 = getelementptr inbounds %struct.ImRect, ptr %2666, i32 0, i32 0
  %2668 = getelementptr inbounds %struct.ImVec2, ptr %2667, i32 0, i32 1
  store float %2664, ptr %2668, align 4, !tbaa !275
  %2669 = load ptr, ptr %10, align 8, !tbaa !5
  %2670 = getelementptr inbounds %struct.ImGuiWindow, ptr %2669, i32 0, i32 73
  %2671 = getelementptr inbounds %struct.ImRect, ptr %2670, i32 0, i32 0
  %2672 = getelementptr inbounds %struct.ImVec2, ptr %2671, i32 0, i32 0
  %2673 = load float, ptr %2672, align 8, !tbaa !273
  %2674 = load float, ptr %97, align 4, !tbaa !140
  %2675 = fadd float %2673, %2674
  %2676 = load ptr, ptr %10, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.ImGuiWindow, ptr %2676, i32 0, i32 73
  %2678 = getelementptr inbounds %struct.ImRect, ptr %2677, i32 0, i32 1
  %2679 = getelementptr inbounds %struct.ImVec2, ptr %2678, i32 0, i32 0
  store float %2675, ptr %2679, align 8, !tbaa !276
  %2680 = load ptr, ptr %10, align 8, !tbaa !5
  %2681 = getelementptr inbounds %struct.ImGuiWindow, ptr %2680, i32 0, i32 73
  %2682 = getelementptr inbounds %struct.ImRect, ptr %2681, i32 0, i32 0
  %2683 = getelementptr inbounds %struct.ImVec2, ptr %2682, i32 0, i32 1
  %2684 = load float, ptr %2683, align 4, !tbaa !275
  %2685 = load float, ptr %98, align 4, !tbaa !140
  %2686 = fadd float %2684, %2685
  %2687 = load ptr, ptr %10, align 8, !tbaa !5
  %2688 = getelementptr inbounds %struct.ImGuiWindow, ptr %2687, i32 0, i32 73
  %2689 = getelementptr inbounds %struct.ImRect, ptr %2688, i32 0, i32 1
  %2690 = getelementptr inbounds %struct.ImVec2, ptr %2689, i32 0, i32 1
  store float %2686, ptr %2690, align 4, !tbaa !277
  %2691 = load ptr, ptr %10, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiWindow, ptr %2691, i32 0, i32 73
  %2693 = load ptr, ptr %10, align 8, !tbaa !5
  %2694 = getelementptr inbounds %struct.ImGuiWindow, ptr %2693, i32 0, i32 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2694, ptr align 8 %2692, i64 16, i1 false), !tbaa.struct !165
  %2695 = load ptr, ptr %10, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.ImGuiWindow, ptr %2695, i32 0, i32 10
  %2697 = getelementptr inbounds %struct.ImVec2, ptr %2696, i32 0, i32 0
  %2698 = load float, ptr %2697, align 8, !tbaa !238
  %2699 = load ptr, ptr %10, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.ImGuiWindow, ptr %2699, i32 0, i32 29
  %2701 = getelementptr inbounds %struct.ImVec2, ptr %2700, i32 0, i32 0
  %2702 = load float, ptr %2701, align 8, !tbaa !272
  %2703 = fsub float %2698, %2702
  %2704 = load ptr, ptr %10, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.ImGuiWindow, ptr %2704, i32 0, i32 16
  %2706 = getelementptr inbounds %struct.ImVec2, ptr %2705, i32 0, i32 0
  %2707 = load float, ptr %2706, align 8, !tbaa !195
  %2708 = fadd float %2703, %2707
  %2709 = load ptr, ptr %10, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.ImGuiWindow, ptr %2709, i32 0, i32 19
  %2711 = load float, ptr %2710, align 8, !tbaa !207
  %2712 = fadd float %2708, %2711
  %2713 = load ptr, ptr %10, align 8, !tbaa !5
  %2714 = getelementptr inbounds %struct.ImGuiWindow, ptr %2713, i32 0, i32 76
  %2715 = getelementptr inbounds %struct.ImRect, ptr %2714, i32 0, i32 0
  %2716 = getelementptr inbounds %struct.ImVec2, ptr %2715, i32 0, i32 0
  store float %2712, ptr %2716, align 8, !tbaa !278
  %2717 = load ptr, ptr %10, align 8, !tbaa !5
  %2718 = getelementptr inbounds %struct.ImGuiWindow, ptr %2717, i32 0, i32 10
  %2719 = getelementptr inbounds %struct.ImVec2, ptr %2718, i32 0, i32 1
  %2720 = load float, ptr %2719, align 4, !tbaa !240
  %2721 = load ptr, ptr %10, align 8, !tbaa !5
  %2722 = getelementptr inbounds %struct.ImGuiWindow, ptr %2721, i32 0, i32 29
  %2723 = getelementptr inbounds %struct.ImVec2, ptr %2722, i32 0, i32 1
  %2724 = load float, ptr %2723, align 4, !tbaa !274
  %2725 = fsub float %2720, %2724
  %2726 = load ptr, ptr %10, align 8, !tbaa !5
  %2727 = getelementptr inbounds %struct.ImGuiWindow, ptr %2726, i32 0, i32 16
  %2728 = getelementptr inbounds %struct.ImVec2, ptr %2727, i32 0, i32 1
  %2729 = load float, ptr %2728, align 4, !tbaa !253
  %2730 = fadd float %2725, %2729
  %2731 = load ptr, ptr %10, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiWindow, ptr %2731, i32 0, i32 20
  %2733 = load float, ptr %2732, align 4, !tbaa !209
  %2734 = fadd float %2730, %2733
  %2735 = load ptr, ptr %10, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiWindow, ptr %2735, i32 0, i32 76
  %2737 = getelementptr inbounds %struct.ImRect, ptr %2736, i32 0, i32 0
  %2738 = getelementptr inbounds %struct.ImVec2, ptr %2737, i32 0, i32 1
  store float %2734, ptr %2738, align 4, !tbaa !279
  %2739 = load ptr, ptr %10, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.ImGuiWindow, ptr %2739, i32 0, i32 76
  %2741 = getelementptr inbounds %struct.ImRect, ptr %2740, i32 0, i32 0
  %2742 = getelementptr inbounds %struct.ImVec2, ptr %2741, i32 0, i32 0
  %2743 = load float, ptr %2742, align 8, !tbaa !278
  %2744 = load ptr, ptr %10, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.ImGuiWindow, ptr %2744, i32 0, i32 15
  %2746 = getelementptr inbounds %struct.ImVec2, ptr %2745, i32 0, i32 0
  %2747 = load float, ptr %2746, align 8, !tbaa !270
  %2748 = fcmp une float %2747, 0.000000e+00
  br i1 %2748, label %2749, label %2754

2749:                                             ; preds = %2619
  %2750 = load ptr, ptr %10, align 8, !tbaa !5
  %2751 = getelementptr inbounds %struct.ImGuiWindow, ptr %2750, i32 0, i32 15
  %2752 = getelementptr inbounds %struct.ImVec2, ptr %2751, i32 0, i32 0
  %2753 = load float, ptr %2752, align 8, !tbaa !270
  br label %2773

2754:                                             ; preds = %2619
  %2755 = load ptr, ptr %10, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.ImGuiWindow, ptr %2755, i32 0, i32 11
  %2757 = getelementptr inbounds %struct.ImVec2, ptr %2756, i32 0, i32 0
  %2758 = load float, ptr %2757, align 8, !tbaa !184
  %2759 = load ptr, ptr %10, align 8, !tbaa !5
  %2760 = getelementptr inbounds %struct.ImGuiWindow, ptr %2759, i32 0, i32 16
  %2761 = getelementptr inbounds %struct.ImVec2, ptr %2760, i32 0, i32 0
  %2762 = load float, ptr %2761, align 8, !tbaa !195
  %2763 = fneg float %2762
  %2764 = call float @llvm.fmuladd.f32(float %2763, float 2.000000e+00, float %2758)
  %2765 = load ptr, ptr %10, align 8, !tbaa !5
  %2766 = getelementptr inbounds %struct.ImGuiWindow, ptr %2765, i32 0, i32 19
  %2767 = load float, ptr %2766, align 8, !tbaa !207
  %2768 = load ptr, ptr %10, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.ImGuiWindow, ptr %2768, i32 0, i32 21
  %2770 = load float, ptr %2769, align 8, !tbaa !208
  %2771 = fadd float %2767, %2770
  %2772 = fsub float %2764, %2771
  br label %2773

2773:                                             ; preds = %2754, %2749
  %2774 = phi float [ %2753, %2749 ], [ %2772, %2754 ]
  %2775 = fadd float %2743, %2774
  %2776 = load ptr, ptr %10, align 8, !tbaa !5
  %2777 = getelementptr inbounds %struct.ImGuiWindow, ptr %2776, i32 0, i32 76
  %2778 = getelementptr inbounds %struct.ImRect, ptr %2777, i32 0, i32 1
  %2779 = getelementptr inbounds %struct.ImVec2, ptr %2778, i32 0, i32 0
  store float %2775, ptr %2779, align 8, !tbaa !280
  %2780 = load ptr, ptr %10, align 8, !tbaa !5
  %2781 = getelementptr inbounds %struct.ImGuiWindow, ptr %2780, i32 0, i32 76
  %2782 = getelementptr inbounds %struct.ImRect, ptr %2781, i32 0, i32 0
  %2783 = getelementptr inbounds %struct.ImVec2, ptr %2782, i32 0, i32 1
  %2784 = load float, ptr %2783, align 4, !tbaa !279
  %2785 = load ptr, ptr %10, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.ImGuiWindow, ptr %2785, i32 0, i32 15
  %2787 = getelementptr inbounds %struct.ImVec2, ptr %2786, i32 0, i32 1
  %2788 = load float, ptr %2787, align 4, !tbaa !271
  %2789 = fcmp une float %2788, 0.000000e+00
  br i1 %2789, label %2790, label %2795

2790:                                             ; preds = %2773
  %2791 = load ptr, ptr %10, align 8, !tbaa !5
  %2792 = getelementptr inbounds %struct.ImGuiWindow, ptr %2791, i32 0, i32 15
  %2793 = getelementptr inbounds %struct.ImVec2, ptr %2792, i32 0, i32 1
  %2794 = load float, ptr %2793, align 4, !tbaa !271
  br label %2814

2795:                                             ; preds = %2773
  %2796 = load ptr, ptr %10, align 8, !tbaa !5
  %2797 = getelementptr inbounds %struct.ImGuiWindow, ptr %2796, i32 0, i32 11
  %2798 = getelementptr inbounds %struct.ImVec2, ptr %2797, i32 0, i32 1
  %2799 = load float, ptr %2798, align 4, !tbaa !186
  %2800 = load ptr, ptr %10, align 8, !tbaa !5
  %2801 = getelementptr inbounds %struct.ImGuiWindow, ptr %2800, i32 0, i32 16
  %2802 = getelementptr inbounds %struct.ImVec2, ptr %2801, i32 0, i32 1
  %2803 = load float, ptr %2802, align 4, !tbaa !253
  %2804 = fneg float %2803
  %2805 = call float @llvm.fmuladd.f32(float %2804, float 2.000000e+00, float %2799)
  %2806 = load ptr, ptr %10, align 8, !tbaa !5
  %2807 = getelementptr inbounds %struct.ImGuiWindow, ptr %2806, i32 0, i32 20
  %2808 = load float, ptr %2807, align 4, !tbaa !209
  %2809 = load ptr, ptr %10, align 8, !tbaa !5
  %2810 = getelementptr inbounds %struct.ImGuiWindow, ptr %2809, i32 0, i32 22
  %2811 = load float, ptr %2810, align 4, !tbaa !210
  %2812 = fadd float %2808, %2811
  %2813 = fsub float %2805, %2812
  br label %2814

2814:                                             ; preds = %2795, %2790
  %2815 = phi float [ %2794, %2790 ], [ %2813, %2795 ]
  %2816 = fadd float %2784, %2815
  %2817 = load ptr, ptr %10, align 8, !tbaa !5
  %2818 = getelementptr inbounds %struct.ImGuiWindow, ptr %2817, i32 0, i32 76
  %2819 = getelementptr inbounds %struct.ImRect, ptr %2818, i32 0, i32 1
  %2820 = getelementptr inbounds %struct.ImVec2, ptr %2819, i32 0, i32 1
  store float %2816, ptr %2820, align 4, !tbaa !281
  %2821 = load ptr, ptr %10, align 8, !tbaa !5
  %2822 = getelementptr inbounds %struct.ImGuiWindow, ptr %2821, i32 0, i32 19
  %2823 = load float, ptr %2822, align 8, !tbaa !207
  %2824 = load ptr, ptr %10, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiWindow, ptr %2824, i32 0, i32 16
  %2826 = getelementptr inbounds %struct.ImVec2, ptr %2825, i32 0, i32 0
  %2827 = load float, ptr %2826, align 8, !tbaa !195
  %2828 = fadd float %2823, %2827
  %2829 = load ptr, ptr %10, align 8, !tbaa !5
  %2830 = getelementptr inbounds %struct.ImGuiWindow, ptr %2829, i32 0, i32 29
  %2831 = getelementptr inbounds %struct.ImVec2, ptr %2830, i32 0, i32 0
  %2832 = load float, ptr %2831, align 8, !tbaa !272
  %2833 = fsub float %2828, %2832
  %2834 = load ptr, ptr %10, align 8, !tbaa !5
  %2835 = getelementptr inbounds %struct.ImGuiWindow, ptr %2834, i32 0, i32 69
  %2836 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2835, i32 0, i32 11
  %2837 = getelementptr inbounds %struct.ImVec1, ptr %2836, i32 0, i32 0
  store float %2833, ptr %2837, align 4, !tbaa !282
  %2838 = load ptr, ptr %10, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.ImGuiWindow, ptr %2838, i32 0, i32 69
  %2840 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2839, i32 0, i32 13
  %2841 = getelementptr inbounds %struct.ImVec1, ptr %2840, i32 0, i32 0
  store float 0.000000e+00, ptr %2841, align 4, !tbaa !283
  %2842 = load ptr, ptr %10, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.ImGuiWindow, ptr %2842, i32 0, i32 69
  %2844 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2843, i32 0, i32 12
  %2845 = getelementptr inbounds %struct.ImVec1, ptr %2844, i32 0, i32 0
  store float 0.000000e+00, ptr %2845, align 8, !tbaa !284
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %2846 = load ptr, ptr %10, align 8, !tbaa !5
  %2847 = getelementptr inbounds %struct.ImGuiWindow, ptr %2846, i32 0, i32 10
  %2848 = getelementptr inbounds %struct.ImVec2, ptr %2847, i32 0, i32 0
  %2849 = load float, ptr %2848, align 8, !tbaa !238
  %2850 = fpext float %2849 to double
  %2851 = load ptr, ptr %10, align 8, !tbaa !5
  %2852 = getelementptr inbounds %struct.ImGuiWindow, ptr %2851, i32 0, i32 16
  %2853 = getelementptr inbounds %struct.ImVec2, ptr %2852, i32 0, i32 0
  %2854 = load float, ptr %2853, align 8, !tbaa !195
  %2855 = fpext float %2854 to double
  %2856 = fadd double %2850, %2855
  %2857 = load ptr, ptr %10, align 8, !tbaa !5
  %2858 = getelementptr inbounds %struct.ImGuiWindow, ptr %2857, i32 0, i32 29
  %2859 = getelementptr inbounds %struct.ImVec2, ptr %2858, i32 0, i32 0
  %2860 = load float, ptr %2859, align 8, !tbaa !272
  %2861 = fpext float %2860 to double
  %2862 = fsub double %2856, %2861
  %2863 = load ptr, ptr %10, align 8, !tbaa !5
  %2864 = getelementptr inbounds %struct.ImGuiWindow, ptr %2863, i32 0, i32 19
  %2865 = load float, ptr %2864, align 8, !tbaa !207
  %2866 = fpext float %2865 to double
  %2867 = fadd double %2862, %2866
  %2868 = load ptr, ptr %10, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.ImGuiWindow, ptr %2868, i32 0, i32 69
  %2870 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2869, i32 0, i32 12
  %2871 = getelementptr inbounds %struct.ImVec1, ptr %2870, i32 0, i32 0
  %2872 = load float, ptr %2871, align 8, !tbaa !284
  %2873 = fpext float %2872 to double
  %2874 = fadd double %2867, %2873
  store double %2874, ptr %99, align 8, !tbaa !285
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #13
  %2875 = load ptr, ptr %10, align 8, !tbaa !5
  %2876 = getelementptr inbounds %struct.ImGuiWindow, ptr %2875, i32 0, i32 10
  %2877 = getelementptr inbounds %struct.ImVec2, ptr %2876, i32 0, i32 1
  %2878 = load float, ptr %2877, align 4, !tbaa !240
  %2879 = fpext float %2878 to double
  %2880 = load ptr, ptr %10, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.ImGuiWindow, ptr %2880, i32 0, i32 16
  %2882 = getelementptr inbounds %struct.ImVec2, ptr %2881, i32 0, i32 1
  %2883 = load float, ptr %2882, align 4, !tbaa !253
  %2884 = fpext float %2883 to double
  %2885 = fadd double %2879, %2884
  %2886 = load ptr, ptr %10, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.ImGuiWindow, ptr %2886, i32 0, i32 29
  %2888 = getelementptr inbounds %struct.ImVec2, ptr %2887, i32 0, i32 1
  %2889 = load float, ptr %2888, align 4, !tbaa !274
  %2890 = fpext float %2889 to double
  %2891 = fsub double %2885, %2890
  %2892 = load ptr, ptr %10, align 8, !tbaa !5
  %2893 = getelementptr inbounds %struct.ImGuiWindow, ptr %2892, i32 0, i32 20
  %2894 = load float, ptr %2893, align 4, !tbaa !209
  %2895 = fpext float %2894 to double
  %2896 = fadd double %2891, %2895
  store double %2896, ptr %100, align 8, !tbaa !285
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  %2897 = load double, ptr %99, align 8, !tbaa !285
  %2898 = fptrunc double %2897 to float
  %2899 = load double, ptr %100, align 8, !tbaa !285
  %2900 = fptrunc double %2899 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %101, float noundef %2898, float noundef %2900)
  %2901 = load ptr, ptr %10, align 8, !tbaa !5
  %2902 = getelementptr inbounds %struct.ImGuiWindow, ptr %2901, i32 0, i32 69
  %2903 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2902, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2903, ptr align 4 %101, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %2904 = load double, ptr %99, align 8, !tbaa !285
  %2905 = load ptr, ptr %10, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.ImGuiWindow, ptr %2905, i32 0, i32 69
  %2907 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2906, i32 0, i32 2
  %2908 = getelementptr inbounds %struct.ImVec2, ptr %2907, i32 0, i32 0
  %2909 = load float, ptr %2908, align 8, !tbaa !286
  %2910 = fpext float %2909 to double
  %2911 = fsub double %2904, %2910
  %2912 = fptrunc double %2911 to float
  %2913 = load double, ptr %100, align 8, !tbaa !285
  %2914 = load ptr, ptr %10, align 8, !tbaa !5
  %2915 = getelementptr inbounds %struct.ImGuiWindow, ptr %2914, i32 0, i32 69
  %2916 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2915, i32 0, i32 2
  %2917 = getelementptr inbounds %struct.ImVec2, ptr %2916, i32 0, i32 1
  %2918 = load float, ptr %2917, align 4, !tbaa !287
  %2919 = fpext float %2918 to double
  %2920 = fsub double %2913, %2919
  %2921 = fptrunc double %2920 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %102, float noundef %2912, float noundef %2921)
  %2922 = load ptr, ptr %10, align 8, !tbaa !5
  %2923 = getelementptr inbounds %struct.ImGuiWindow, ptr %2922, i32 0, i32 69
  %2924 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2923, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2924, ptr align 4 %102, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  %2925 = load ptr, ptr %10, align 8, !tbaa !5
  %2926 = getelementptr inbounds %struct.ImGuiWindow, ptr %2925, i32 0, i32 69
  %2927 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2926, i32 0, i32 2
  %2928 = load ptr, ptr %10, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.ImGuiWindow, ptr %2928, i32 0, i32 69
  %2930 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2929, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2930, ptr align 8 %2927, i64 8, i1 false), !tbaa.struct !149
  %2931 = load ptr, ptr %10, align 8, !tbaa !5
  %2932 = getelementptr inbounds %struct.ImGuiWindow, ptr %2931, i32 0, i32 69
  %2933 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2932, i32 0, i32 0
  %2934 = load ptr, ptr %10, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.ImGuiWindow, ptr %2934, i32 0, i32 69
  %2936 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2935, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2936, ptr align 8 %2933, i64 8, i1 false), !tbaa.struct !149
  %2937 = load ptr, ptr %10, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.ImGuiWindow, ptr %2937, i32 0, i32 69
  %2939 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2938, i32 0, i32 2
  %2940 = load ptr, ptr %10, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.ImGuiWindow, ptr %2940, i32 0, i32 69
  %2942 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2941, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2942, ptr align 8 %2939, i64 8, i1 false), !tbaa.struct !149
  %2943 = load ptr, ptr %10, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.ImGuiWindow, ptr %2943, i32 0, i32 69
  %2945 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2944, i32 0, i32 2
  %2946 = load ptr, ptr %10, align 8, !tbaa !5
  %2947 = getelementptr inbounds %struct.ImGuiWindow, ptr %2946, i32 0, i32 69
  %2948 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2947, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2948, ptr align 8 %2945, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2949 = load ptr, ptr %10, align 8, !tbaa !5
  %2950 = getelementptr inbounds %struct.ImGuiWindow, ptr %2949, i32 0, i32 69
  %2951 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2950, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2951, ptr align 4 %103, i64 8, i1 false), !tbaa.struct !149
  %2952 = load ptr, ptr %10, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.ImGuiWindow, ptr %2952, i32 0, i32 69
  %2954 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2953, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2954, ptr align 4 %2951, i64 8, i1 false), !tbaa.struct !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  %2955 = load ptr, ptr %10, align 8, !tbaa !5
  %2956 = getelementptr inbounds %struct.ImGuiWindow, ptr %2955, i32 0, i32 69
  %2957 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2956, i32 0, i32 8
  store float 0.000000e+00, ptr %2957, align 4, !tbaa !288
  %2958 = load ptr, ptr %10, align 8, !tbaa !5
  %2959 = getelementptr inbounds %struct.ImGuiWindow, ptr %2958, i32 0, i32 69
  %2960 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2959, i32 0, i32 7
  store float 0.000000e+00, ptr %2960, align 8, !tbaa !289
  %2961 = load ptr, ptr %10, align 8, !tbaa !5
  %2962 = getelementptr inbounds %struct.ImGuiWindow, ptr %2961, i32 0, i32 69
  %2963 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2962, i32 0, i32 10
  store i8 0, ptr %2963, align 1, !tbaa !290
  %2964 = load ptr, ptr %10, align 8, !tbaa !5
  %2965 = getelementptr inbounds %struct.ImGuiWindow, ptr %2964, i32 0, i32 69
  %2966 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2965, i32 0, i32 9
  store i8 0, ptr %2966, align 8, !tbaa !291
  %2967 = load ptr, ptr %10, align 8, !tbaa !5
  %2968 = getelementptr inbounds %struct.ImGuiWindow, ptr %2967, i32 0, i32 69
  %2969 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2968, i32 0, i32 15
  store i32 0, ptr %2969, align 8, !tbaa !146
  %2970 = load ptr, ptr %10, align 8, !tbaa !5
  %2971 = getelementptr inbounds %struct.ImGuiWindow, ptr %2970, i32 0, i32 69
  %2972 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2971, i32 0, i32 17
  %2973 = load i16, ptr %2972, align 2, !tbaa !292
  %2974 = load ptr, ptr %10, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiWindow, ptr %2974, i32 0, i32 69
  %2976 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2975, i32 0, i32 16
  store i16 %2973, ptr %2976, align 4, !tbaa !293
  %2977 = load ptr, ptr %10, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.ImGuiWindow, ptr %2977, i32 0, i32 69
  %2979 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2978, i32 0, i32 17
  store i16 0, ptr %2979, align 2, !tbaa !292
  %2980 = load ptr, ptr %10, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiWindow, ptr %2980, i32 0, i32 69
  %2982 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2981, i32 0, i32 18
  store i8 1, ptr %2982, align 8, !tbaa !294
  %2983 = load ptr, ptr %10, align 8, !tbaa !5
  %2984 = getelementptr inbounds %struct.ImGuiWindow, ptr %2983, i32 0, i32 69
  %2985 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2984, i32 0, i32 19
  store i8 0, ptr %2985, align 1, !tbaa !295
  %2986 = load ptr, ptr %10, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiWindow, ptr %2986, i32 0, i32 30
  %2988 = getelementptr inbounds %struct.ImVec2, ptr %2987, i32 0, i32 1
  %2989 = load float, ptr %2988, align 4, !tbaa !254
  %2990 = fcmp ogt float %2989, 0.000000e+00
  %2991 = load ptr, ptr %10, align 8, !tbaa !5
  %2992 = getelementptr inbounds %struct.ImGuiWindow, ptr %2991, i32 0, i32 69
  %2993 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2992, i32 0, i32 20
  %2994 = zext i1 %2990 to i8
  store i8 %2994, ptr %2993, align 2, !tbaa !296
  %2995 = load ptr, ptr %10, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiWindow, ptr %2995, i32 0, i32 69
  %2997 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2996, i32 0, i32 21
  store i8 0, ptr %2997, align 1, !tbaa !297
  %2998 = load ptr, ptr %10, align 8, !tbaa !5
  %2999 = getelementptr inbounds %struct.ImGuiWindow, ptr %2998, i32 0, i32 69
  %3000 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2999, i32 0, i32 23
  %3001 = load ptr, ptr %9, align 8, !tbaa !5
  %3002 = getelementptr inbounds %struct.ImGuiStyle, ptr %3001, i32 0, i32 15
  %3003 = getelementptr inbounds %struct.ImVec2, ptr %3002, i32 0, i32 0
  %3004 = load float, ptr %3003, align 4, !tbaa !196
  %3005 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %3006 = trunc i8 %3005 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %3000, float noundef %3004, i1 noundef zeroext %3006)
  %3007 = load ptr, ptr %10, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.ImGuiWindow, ptr %3007, i32 0, i32 69
  %3009 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3008, i32 0, i32 24
  store i32 0, ptr %3009, align 8, !tbaa !298
  %3010 = load ptr, ptr %10, align 8, !tbaa !5
  %3011 = getelementptr inbounds %struct.ImGuiWindow, ptr %3010, i32 0, i32 69
  %3012 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3011, i32 0, i32 25
  store i32 0, ptr %3012, align 4, !tbaa !299
  %3013 = load ptr, ptr %10, align 8, !tbaa !5
  %3014 = getelementptr inbounds %struct.ImGuiWindow, ptr %3013, i32 0, i32 69
  %3015 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3014, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3015, i32 noundef 0)
  %3016 = load ptr, ptr %10, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiWindow, ptr %3016, i32 0, i32 83
  %3018 = load ptr, ptr %10, align 8, !tbaa !5
  %3019 = getelementptr inbounds %struct.ImGuiWindow, ptr %3018, i32 0, i32 69
  %3020 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3019, i32 0, i32 27
  store ptr %3017, ptr %3020, align 8, !tbaa !300
  %3021 = load ptr, ptr %10, align 8, !tbaa !5
  %3022 = getelementptr inbounds %struct.ImGuiWindow, ptr %3021, i32 0, i32 69
  %3023 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3022, i32 0, i32 28
  store ptr null, ptr %3023, align 8, !tbaa !301
  %3024 = load ptr, ptr %10, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiWindow, ptr %3024, i32 0, i32 69
  %3026 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3025, i32 0, i32 30
  store i32 1, ptr %3026, align 4, !tbaa !302
  %3027 = load ptr, ptr %22, align 8, !tbaa !5
  %3028 = icmp ne ptr %3027, null
  br i1 %3028, label %3029, label %3034

3029:                                             ; preds = %2814
  %3030 = load ptr, ptr %22, align 8, !tbaa !5
  %3031 = getelementptr inbounds %struct.ImGuiWindow, ptr %3030, i32 0, i32 69
  %3032 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3031, i32 0, i32 30
  %3033 = load i32, ptr %3032, align 4, !tbaa !302
  br label %3035

3034:                                             ; preds = %2814
  br label %3035

3035:                                             ; preds = %3034, %3029
  %3036 = phi i32 [ %3033, %3029 ], [ 1, %3034 ]
  %3037 = load ptr, ptr %10, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.ImGuiWindow, ptr %3037, i32 0, i32 69
  %3039 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3038, i32 0, i32 31
  store i32 %3036, ptr %3039, align 8, !tbaa !303
  %3040 = load ptr, ptr %10, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiWindow, ptr %3040, i32 0, i32 82
  %3042 = load float, ptr %3041, align 4, !tbaa !249
  %3043 = load ptr, ptr %10, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiWindow, ptr %3043, i32 0, i32 69
  %3045 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3044, i32 0, i32 32
  store float %3042, ptr %3045, align 4, !tbaa !304
  %3046 = load ptr, ptr %10, align 8, !tbaa !5
  %3047 = getelementptr inbounds %struct.ImGuiWindow, ptr %3046, i32 0, i32 69
  %3048 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3047, i32 0, i32 33
  store float -1.000000e+00, ptr %3048, align 8, !tbaa !305
  %3049 = load ptr, ptr %10, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiWindow, ptr %3049, i32 0, i32 69
  %3051 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3050, i32 0, i32 34
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3051, i32 noundef 0)
  %3052 = load ptr, ptr %10, align 8, !tbaa !5
  %3053 = getelementptr inbounds %struct.ImGuiWindow, ptr %3052, i32 0, i32 69
  %3054 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3053, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3054, i32 noundef 0)
  %3055 = load ptr, ptr %10, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.ImGuiWindow, ptr %3055, i32 0, i32 56
  %3057 = load i8, ptr %3056, align 8, !tbaa !213
  %3058 = sext i8 %3057 to i32
  %3059 = icmp sgt i32 %3058, 0
  br i1 %3059, label %3060, label %3065

3060:                                             ; preds = %3035
  %3061 = load ptr, ptr %10, align 8, !tbaa !5
  %3062 = getelementptr inbounds %struct.ImGuiWindow, ptr %3061, i32 0, i32 56
  %3063 = load i8, ptr %3062, align 8, !tbaa !213
  %3064 = add i8 %3063, -1
  store i8 %3064, ptr %3062, align 8, !tbaa !213
  br label %3065

3065:                                             ; preds = %3060, %3035
  %3066 = load ptr, ptr %10, align 8, !tbaa !5
  %3067 = getelementptr inbounds %struct.ImGuiWindow, ptr %3066, i32 0, i32 57
  %3068 = load i8, ptr %3067, align 1, !tbaa !214
  %3069 = sext i8 %3068 to i32
  %3070 = icmp sgt i32 %3069, 0
  br i1 %3070, label %3071, label %3076

3071:                                             ; preds = %3065
  %3072 = load ptr, ptr %10, align 8, !tbaa !5
  %3073 = getelementptr inbounds %struct.ImGuiWindow, ptr %3072, i32 0, i32 57
  %3074 = load i8, ptr %3073, align 1, !tbaa !214
  %3075 = add i8 %3074, -1
  store i8 %3075, ptr %3073, align 1, !tbaa !214
  br label %3076

3076:                                             ; preds = %3071, %3065
  %3077 = load i8, ptr %65, align 1, !tbaa !91, !range !87, !noundef !88
  %3078 = trunc i8 %3077 to i1
  br i1 %3078, label %3079, label %3081

3079:                                             ; preds = %3076
  %3080 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %3080, i32 noundef 2)
  br label %3081

3081:                                             ; preds = %3079, %3076
  %3082 = load i8, ptr %65, align 1, !tbaa !91, !range !87, !noundef !88
  %3083 = trunc i8 %3082 to i1
  br i1 %3083, label %3084, label %3092

3084:                                             ; preds = %3081
  %3085 = load ptr, ptr %10, align 8, !tbaa !5
  %3086 = load ptr, ptr %8, align 8, !tbaa !5
  %3087 = getelementptr inbounds %struct.ImGuiContext, ptr %3086, i32 0, i32 99
  %3088 = load ptr, ptr %3087, align 8, !tbaa !268
  %3089 = icmp eq ptr %3085, %3088
  br i1 %3089, label %3090, label %3092

3090:                                             ; preds = %3084
  %3091 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %3091, i1 noundef zeroext false)
  br label %3092

3092:                                             ; preds = %3090, %3084, %3081
  %3093 = load ptr, ptr %6, align 8, !tbaa !5
  %3094 = icmp ne ptr %3093, null
  br i1 %3094, label %3095, label %3125

3095:                                             ; preds = %3092
  %3096 = load ptr, ptr %10, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.ImGuiWindow, ptr %3096, i32 0, i32 6
  %3098 = load ptr, ptr %3097, align 8, !tbaa !169
  %3099 = getelementptr inbounds %struct.ImGuiViewport, ptr %3098, i32 0, i32 16
  %3100 = load i8, ptr %3099, align 1, !tbaa !306, !range !87, !noundef !88
  %3101 = trunc i8 %3100 to i1
  br i1 %3101, label %3102, label %3125

3102:                                             ; preds = %3095
  %3103 = load ptr, ptr %10, align 8, !tbaa !5
  %3104 = getelementptr inbounds %struct.ImGuiWindow, ptr %3103, i32 0, i32 6
  %3105 = load ptr, ptr %3104, align 8, !tbaa !169
  %3106 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %3107 = icmp ne ptr %3105, %3106
  br i1 %3107, label %3108, label %3125

3108:                                             ; preds = %3102
  br label %3109

3109:                                             ; preds = %3108
  %3110 = load ptr, ptr %8, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.ImGuiContext, ptr %3110, i32 0, i32 239
  %3112 = load i32, ptr %3111, align 4, !tbaa !307
  %3113 = and i32 %3112, 256
  %3114 = icmp ne i32 %3113, 0
  br i1 %3114, label %3115, label %3119

3115:                                             ; preds = %3109
  %3116 = load ptr, ptr %10, align 8, !tbaa !5
  %3117 = getelementptr inbounds %struct.ImGuiWindow, ptr %3116, i32 0, i32 1
  %3118 = load ptr, ptr %3117, align 8, !tbaa !177
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef @.str.146, ptr noundef %3118)
  br label %3119

3119:                                             ; preds = %3115, %3109
  br label %3120

3120:                                             ; preds = %3119
  br label %3121

3121:                                             ; preds = %3120
  %3122 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 0, ptr %3122, align 1, !tbaa !91
  %3123 = load ptr, ptr %8, align 8, !tbaa !5
  %3124 = getelementptr inbounds %struct.ImGuiContext, ptr %3123, i32 0, i32 146
  store i8 0, ptr %3124, align 8, !tbaa !308
  br label %3125

3125:                                             ; preds = %3121, %3102, %3095, %3092
  %3126 = load i32, ptr %7, align 4, !tbaa !9
  %3127 = and i32 %3126, 1
  %3128 = icmp ne i32 %3127, 0
  br i1 %3128, label %3159, label %3129

3129:                                             ; preds = %3125
  %3130 = load ptr, ptr %10, align 8, !tbaa !5
  %3131 = getelementptr inbounds %struct.ImGuiWindow, ptr %3130, i32 0, i32 105
  %3132 = load i8, ptr %3131, align 1
  %3133 = and i8 %3132, 1
  %3134 = trunc i8 %3133 to i1
  br i1 %3134, label %3159, label %3135

3135:                                             ; preds = %3129
  %3136 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #13
  %3137 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 0
  %3138 = getelementptr inbounds %struct.ImVec2, ptr %3137, i32 0, i32 0
  %3139 = load float, ptr %3138, align 4, !tbaa !309
  %3140 = load ptr, ptr %10, align 8, !tbaa !5
  %3141 = getelementptr inbounds %struct.ImGuiWindow, ptr %3140, i32 0, i32 18
  %3142 = load float, ptr %3141, align 4, !tbaa !191
  %3143 = fadd float %3139, %3142
  %3144 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 0
  %3145 = getelementptr inbounds %struct.ImVec2, ptr %3144, i32 0, i32 1
  %3146 = load float, ptr %3145, align 4, !tbaa !310
  %3147 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 1
  %3148 = getelementptr inbounds %struct.ImVec2, ptr %3147, i32 0, i32 0
  %3149 = load float, ptr %3148, align 4, !tbaa !311
  %3150 = load ptr, ptr %10, align 8, !tbaa !5
  %3151 = getelementptr inbounds %struct.ImGuiWindow, ptr %3150, i32 0, i32 18
  %3152 = load float, ptr %3151, align 4, !tbaa !191
  %3153 = fsub float %3149, %3152
  %3154 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 1
  %3155 = getelementptr inbounds %struct.ImVec2, ptr %3154, i32 0, i32 1
  %3156 = load float, ptr %3155, align 4, !tbaa !312
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %104, float noundef %3143, float noundef %3146, float noundef %3153, float noundef %3156)
  %3157 = load ptr, ptr %5, align 8, !tbaa !5
  %3158 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %3136, ptr noundef nonnull align 4 dereferenceable(16) %104, ptr noundef %3157, ptr noundef %3158)
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #13
  br label %3159

3159:                                             ; preds = %3135, %3129, %3125
  %3160 = load ptr, ptr %10, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.ImGuiWindow, ptr %3160, i32 0, i32 77
  %3162 = getelementptr inbounds %struct.ImVec2ih, ptr %3161, i32 0, i32 1
  store i16 0, ptr %3162, align 2, !tbaa !313
  %3163 = load ptr, ptr %10, align 8, !tbaa !5
  %3164 = getelementptr inbounds %struct.ImGuiWindow, ptr %3163, i32 0, i32 77
  %3165 = getelementptr inbounds %struct.ImVec2ih, ptr %3164, i32 0, i32 0
  store i16 0, ptr %3165, align 8, !tbaa !314
  %3166 = load ptr, ptr %8, align 8, !tbaa !5
  %3167 = getelementptr inbounds %struct.ImGuiContext, ptr %3166, i32 0, i32 2
  %3168 = getelementptr inbounds %struct.ImGuiIO, ptr %3167, i32 0, i32 0
  %3169 = load i32, ptr %3168, align 8, !tbaa !187
  %3170 = and i32 %3169, 64
  %3171 = icmp ne i32 %3170, 0
  br i1 %3171, label %3172, label %3242

3172:                                             ; preds = %3159
  %3173 = load ptr, ptr %8, align 8, !tbaa !5
  %3174 = getelementptr inbounds %struct.ImGuiContext, ptr %3173, i32 0, i32 36
  %3175 = load ptr, ptr %3174, align 8, !tbaa !315
  %3176 = load ptr, ptr %10, align 8, !tbaa !5
  %3177 = icmp eq ptr %3175, %3176
  br i1 %3177, label %3178, label %3203

3178:                                             ; preds = %3172
  %3179 = load ptr, ptr %8, align 8, !tbaa !5
  %3180 = getelementptr inbounds %struct.ImGuiContext, ptr %3179, i32 0, i32 2
  %3181 = getelementptr inbounds %struct.ImGuiIO, ptr %3180, i32 0, i32 14
  %3182 = load i8, ptr %3181, align 1, !tbaa !316, !range !87, !noundef !88
  %3183 = trunc i8 %3182 to i1
  %3184 = zext i1 %3183 to i32
  %3185 = load ptr, ptr %8, align 8, !tbaa !5
  %3186 = getelementptr inbounds %struct.ImGuiContext, ptr %3185, i32 0, i32 2
  %3187 = getelementptr inbounds %struct.ImGuiIO, ptr %3186, i32 0, i32 74
  %3188 = load i8, ptr %3187, align 1, !tbaa !317, !range !87, !noundef !88
  %3189 = trunc i8 %3188 to i1
  %3190 = zext i1 %3189 to i32
  %3191 = icmp eq i32 %3184, %3190
  br i1 %3191, label %3192, label %3203

3192:                                             ; preds = %3178
  %3193 = load ptr, ptr %10, align 8, !tbaa !5
  %3194 = getelementptr inbounds %struct.ImGuiWindow, ptr %3193, i32 0, i32 94
  %3195 = load ptr, ptr %3194, align 8, !tbaa !318
  %3196 = getelementptr inbounds %struct.ImGuiWindow, ptr %3195, i32 0, i32 3
  %3197 = load i32, ptr %3196, align 4, !tbaa !116
  %3198 = and i32 %3197, 2097152
  %3199 = icmp eq i32 %3198, 0
  br i1 %3199, label %3200, label %3202

3200:                                             ; preds = %3192
  %3201 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef %3201)
  br label %3202

3202:                                             ; preds = %3200, %3192
  br label %3203

3203:                                             ; preds = %3202, %3178, %3172
  %3204 = load ptr, ptr %8, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.ImGuiContext, ptr %3204, i32 0, i32 150
  %3206 = load i8, ptr %3205, align 8, !tbaa !319, !range !87, !noundef !88
  %3207 = trunc i8 %3206 to i1
  br i1 %3207, label %3208, label %3241

3208:                                             ; preds = %3203
  %3209 = load i32, ptr %7, align 4, !tbaa !9
  %3210 = and i32 %3209, 2097152
  %3211 = icmp ne i32 %3210, 0
  br i1 %3211, label %3241, label %3212

3212:                                             ; preds = %3208
  %3213 = load ptr, ptr %8, align 8, !tbaa !5
  %3214 = getelementptr inbounds %struct.ImGuiContext, ptr %3213, i32 0, i32 36
  %3215 = load ptr, ptr %3214, align 8, !tbaa !315
  %3216 = icmp eq ptr %3215, null
  br i1 %3216, label %3225, label %3217

3217:                                             ; preds = %3212
  %3218 = load ptr, ptr %8, align 8, !tbaa !5
  %3219 = getelementptr inbounds %struct.ImGuiContext, ptr %3218, i32 0, i32 36
  %3220 = load ptr, ptr %3219, align 8, !tbaa !315
  %3221 = getelementptr inbounds %struct.ImGuiWindow, ptr %3220, i32 0, i32 94
  %3222 = load ptr, ptr %3221, align 8, !tbaa !318
  %3223 = load ptr, ptr %10, align 8, !tbaa !5
  %3224 = icmp ne ptr %3222, %3223
  br i1 %3224, label %3225, label %3240

3225:                                             ; preds = %3217, %3212
  %3226 = load ptr, ptr %10, align 8, !tbaa !5
  %3227 = load ptr, ptr %10, align 8, !tbaa !5
  %3228 = getelementptr inbounds %struct.ImGuiWindow, ptr %3227, i32 0, i32 94
  %3229 = load ptr, ptr %3228, align 8, !tbaa !318
  %3230 = icmp eq ptr %3226, %3229
  br i1 %3230, label %3231, label %3239

3231:                                             ; preds = %3225
  %3232 = load ptr, ptr %10, align 8, !tbaa !5
  %3233 = getelementptr inbounds %struct.ImGuiWindow, ptr %3232, i32 0, i32 3
  %3234 = load i32, ptr %3233, align 4, !tbaa !116
  %3235 = and i32 %3234, 536870912
  %3236 = icmp ne i32 %3235, 0
  br i1 %3236, label %3239, label %3237

3237:                                             ; preds = %3231
  %3238 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef %3238)
  br label %3239

3239:                                             ; preds = %3237, %3231, %3225
  br label %3240

3240:                                             ; preds = %3239, %3217
  br label %3241

3241:                                             ; preds = %3240, %3208, %3203
  br label %3242

3242:                                             ; preds = %3241, %3159
  %3243 = load ptr, ptr %10, align 8, !tbaa !5
  %3244 = getelementptr inbounds %struct.ImGuiWindow, ptr %3243, i32 0, i32 105
  %3245 = load i8, ptr %3244, align 1
  %3246 = and i8 %3245, 1
  %3247 = trunc i8 %3246 to i1
  br i1 %3247, label %3248, label %3260

3248:                                             ; preds = %3242
  %3249 = load ptr, ptr %10, align 8, !tbaa !5
  %3250 = getelementptr inbounds %struct.ImGuiWindow, ptr %3249, i32 0, i32 26
  %3251 = load i32, ptr %3250, align 4, !tbaa !320
  %3252 = load ptr, ptr %8, align 8, !tbaa !5
  %3253 = getelementptr inbounds %struct.ImGuiContext, ptr %3252, i32 0, i32 75
  %3254 = load i32, ptr %3253, align 8, !tbaa !321
  %3255 = load ptr, ptr %10, align 8, !tbaa !5
  %3256 = getelementptr inbounds %struct.ImGuiWindow, ptr %3255, i32 0, i32 111
  %3257 = load i32, ptr %3256, align 4, !tbaa !322
  %3258 = load ptr, ptr %10, align 8, !tbaa !5
  %3259 = getelementptr inbounds %struct.ImGuiWindow, ptr %3258, i32 0, i32 112
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3251, i32 noundef %3254, i32 noundef %3257, ptr noundef nonnull align 4 dereferenceable(16) %3259)
  br label %3272

3260:                                             ; preds = %3242
  %3261 = load ptr, ptr %10, align 8, !tbaa !5
  %3262 = getelementptr inbounds %struct.ImGuiWindow, ptr %3261, i32 0, i32 26
  %3263 = load i32, ptr %3262, align 4, !tbaa !320
  %3264 = load ptr, ptr %8, align 8, !tbaa !5
  %3265 = getelementptr inbounds %struct.ImGuiContext, ptr %3264, i32 0, i32 75
  %3266 = load i32, ptr %3265, align 8, !tbaa !321
  %3267 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 0
  %3268 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 1
  %3269 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3267, ptr noundef nonnull align 4 dereferenceable(8) %3268, i1 noundef zeroext false)
  %3270 = zext i1 %3269 to i64
  %3271 = select i1 %3269, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3263, i32 noundef %3266, i32 noundef %3271, ptr noundef nonnull align 4 dereferenceable(16) %82)
  br label %3272

3272:                                             ; preds = %3260, %3248
  %3273 = load ptr, ptr %8, align 8, !tbaa !5
  %3274 = getelementptr inbounds %struct.ImGuiContext, ptr %3273, i32 0, i32 76
  %3275 = load i32, ptr %3274, align 4, !tbaa !323
  %3276 = icmp ne i32 %3275, 0
  br i1 %3276, label %3277, label %3294

3277:                                             ; preds = %3272
  %3278 = load ptr, ptr %10, align 8, !tbaa !5
  %3279 = getelementptr inbounds %struct.ImGuiWindow, ptr %3278, i32 0, i32 2
  %3280 = load i32, ptr %3279, align 8, !tbaa !143
  %3281 = load ptr, ptr %8, align 8, !tbaa !5
  %3282 = getelementptr inbounds %struct.ImGuiContext, ptr %3281, i32 0, i32 76
  %3283 = load i32, ptr %3282, align 4, !tbaa !323
  %3284 = icmp eq i32 %3280, %3283
  br i1 %3284, label %3293, label %3285

3285:                                             ; preds = %3277
  %3286 = load ptr, ptr %10, align 8, !tbaa !5
  %3287 = getelementptr inbounds %struct.ImGuiWindow, ptr %3286, i32 0, i32 26
  %3288 = load i32, ptr %3287, align 4, !tbaa !320
  %3289 = load ptr, ptr %8, align 8, !tbaa !5
  %3290 = getelementptr inbounds %struct.ImGuiContext, ptr %3289, i32 0, i32 76
  %3291 = load i32, ptr %3290, align 4, !tbaa !323
  %3292 = icmp eq i32 %3288, %3291
  br i1 %3292, label %3293, label %3294

3293:                                             ; preds = %3285, %3277
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %3294

3294:                                             ; preds = %3293, %3285, %3272
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #13
  br label %3301

3295:                                             ; preds = %818
  %3296 = load ptr, ptr %10, align 8, !tbaa !5
  %3297 = load ptr, ptr %10, align 8, !tbaa !5
  %3298 = getelementptr inbounds %struct.ImGuiWindow, ptr %3297, i32 0, i32 6
  %3299 = load ptr, ptr %3298, align 8, !tbaa !169
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %3296, ptr noundef %3299)
  %3300 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %3300)
  br label %3301

3301:                                             ; preds = %3295, %3294
  %3302 = load i32, ptr %7, align 4, !tbaa !9
  %3303 = and i32 %3302, 536870912
  %3304 = icmp ne i32 %3303, 0
  br i1 %3304, label %3312, label %3305

3305:                                             ; preds = %3301
  %3306 = load ptr, ptr %10, align 8, !tbaa !5
  %3307 = getelementptr inbounds %struct.ImGuiWindow, ptr %3306, i32 0, i32 72
  %3308 = getelementptr inbounds %struct.ImRect, ptr %3307, i32 0, i32 0
  %3309 = load ptr, ptr %10, align 8, !tbaa !5
  %3310 = getelementptr inbounds %struct.ImGuiWindow, ptr %3309, i32 0, i32 72
  %3311 = getelementptr inbounds %struct.ImRect, ptr %3310, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3308, ptr noundef nonnull align 4 dereferenceable(8) %3311, i1 noundef zeroext true)
  br label %3312

3312:                                             ; preds = %3305, %3301
  %3313 = load ptr, ptr %10, align 8, !tbaa !5
  %3314 = getelementptr inbounds %struct.ImGuiWindow, ptr %3313, i32 0, i32 40
  store i8 0, ptr %3314, align 1, !tbaa !324
  %3315 = load ptr, ptr %10, align 8, !tbaa !5
  %3316 = getelementptr inbounds %struct.ImGuiWindow, ptr %3315, i32 0, i32 50
  %3317 = load i16, ptr %3316, align 8, !tbaa !325
  %3318 = add i16 %3317, 1
  store i16 %3318, ptr %3316, align 8, !tbaa !325
  %3319 = load ptr, ptr %8, align 8, !tbaa !5
  %3320 = getelementptr inbounds %struct.ImGuiContext, ptr %3319, i32 0, i32 79
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144) %3320)
  %3321 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %3322 = trunc i8 %3321 to i1
  br i1 %3322, label %3323, label %3609

3323:                                             ; preds = %3312
  %3324 = load ptr, ptr %10, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.ImGuiWindow, ptr %3324, i32 0, i32 105
  %3326 = load i8, ptr %3325, align 1
  %3327 = and i8 %3326, 1
  %3328 = trunc i8 %3327 to i1
  br i1 %3328, label %3329, label %3351

3329:                                             ; preds = %3323
  %3330 = load ptr, ptr %10, align 8, !tbaa !5
  %3331 = getelementptr inbounds %struct.ImGuiWindow, ptr %3330, i32 0, i32 105
  %3332 = load i8, ptr %3331, align 1
  %3333 = lshr i8 %3332, 2
  %3334 = and i8 %3333, 1
  %3335 = trunc i8 %3334 to i1
  br i1 %3335, label %3351, label %3336

3336:                                             ; preds = %3329
  %3337 = load ptr, ptr %10, align 8, !tbaa !5
  %3338 = getelementptr inbounds %struct.ImGuiWindow, ptr %3337, i32 0, i32 80
  %3339 = load i32, ptr %3338, align 4, !tbaa !326
  %3340 = load ptr, ptr %8, align 8, !tbaa !5
  %3341 = getelementptr inbounds %struct.ImGuiContext, ptr %3340, i32 0, i32 12
  %3342 = load i32, ptr %3341, align 8, !tbaa !90
  %3343 = icmp eq i32 %3339, %3342
  br i1 %3343, label %3344, label %3347

3344:                                             ; preds = %3336
  %3345 = load ptr, ptr %10, align 8, !tbaa !5
  %3346 = getelementptr inbounds %struct.ImGuiWindow, ptr %3345, i32 0, i32 62
  store i8 1, ptr %3346, align 1, !tbaa !162
  br label %3350

3347:                                             ; preds = %3336
  %3348 = load ptr, ptr %10, align 8, !tbaa !5
  %3349 = getelementptr inbounds %struct.ImGuiWindow, ptr %3348, i32 0, i32 61
  store i8 1, ptr %3349, align 8, !tbaa !181
  br label %3350

3350:                                             ; preds = %3347, %3344
  br label %3351

3351:                                             ; preds = %3350, %3329, %3323
  %3352 = load i32, ptr %7, align 4, !tbaa !9
  %3353 = and i32 %3352, 16777216
  %3354 = icmp ne i32 %3353, 0
  br i1 %3354, label %3355, label %3486

3355:                                             ; preds = %3351
  %3356 = load i32, ptr %7, align 4, !tbaa !9
  %3357 = and i32 %3356, 1
  %3358 = icmp ne i32 %3357, 0
  br i1 %3358, label %3365, label %3359

3359:                                             ; preds = %3355
  %3360 = load ptr, ptr %10, align 8, !tbaa !5
  %3361 = getelementptr inbounds %struct.ImGuiWindow, ptr %3360, i32 0, i32 105
  %3362 = load i8, ptr %3361, align 1
  %3363 = and i8 %3362, 1
  %3364 = trunc i8 %3363 to i1
  br label %3365

3365:                                             ; preds = %3359, %3355
  %3366 = phi i1 [ true, %3355 ], [ %3364, %3359 ]
  br i1 %3366, label %3367, label %3368

3367:                                             ; preds = %3365
  br label %3370

3368:                                             ; preds = %3365
  call void @__assert_fail(ptr noundef @.str.147, ptr noundef @.str.3, i32 noundef 7376, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3369:                                             ; No predecessors!
  br label %3370

3370:                                             ; preds = %3369, %3367
  %3371 = load i32, ptr %7, align 4, !tbaa !9
  %3372 = and i32 %3371, 64
  %3373 = icmp ne i32 %3372, 0
  br i1 %3373, label %3451, label %3374

3374:                                             ; preds = %3370
  %3375 = load ptr, ptr %10, align 8, !tbaa !5
  %3376 = getelementptr inbounds %struct.ImGuiWindow, ptr %3375, i32 0, i32 56
  %3377 = load i8, ptr %3376, align 8, !tbaa !213
  %3378 = sext i8 %3377 to i32
  %3379 = icmp sle i32 %3378, 0
  br i1 %3379, label %3380, label %3451

3380:                                             ; preds = %3374
  %3381 = load ptr, ptr %10, align 8, !tbaa !5
  %3382 = getelementptr inbounds %struct.ImGuiWindow, ptr %3381, i32 0, i32 57
  %3383 = load i8, ptr %3382, align 1, !tbaa !214
  %3384 = sext i8 %3383 to i32
  %3385 = icmp sle i32 %3384, 0
  br i1 %3385, label %3386, label %3451

3386:                                             ; preds = %3380
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #13
  %3387 = load i32, ptr %7, align 4, !tbaa !9
  %3388 = and i32 %3387, 8388608
  %3389 = icmp ne i32 %3388, 0
  br i1 %3389, label %3390, label %3412

3390:                                             ; preds = %3386
  %3391 = load ptr, ptr %8, align 8, !tbaa !5
  %3392 = getelementptr inbounds %struct.ImGuiContext, ptr %3391, i32 0, i32 117
  %3393 = load i8, ptr %3392, align 8, !tbaa !327, !range !87, !noundef !88
  %3394 = trunc i8 %3393 to i1
  br i1 %3394, label %3395, label %3410

3395:                                             ; preds = %3390
  %3396 = load ptr, ptr %8, align 8, !tbaa !5
  %3397 = getelementptr inbounds %struct.ImGuiContext, ptr %3396, i32 0, i32 99
  %3398 = load ptr, ptr %3397, align 8, !tbaa !268
  %3399 = icmp ne ptr %3398, null
  br i1 %3399, label %3400, label %3410

3400:                                             ; preds = %3395
  %3401 = load ptr, ptr %8, align 8, !tbaa !5
  %3402 = getelementptr inbounds %struct.ImGuiContext, ptr %3401, i32 0, i32 99
  %3403 = load ptr, ptr %3402, align 8, !tbaa !268
  %3404 = getelementptr inbounds %struct.ImGuiWindow, ptr %3403, i32 0, i32 96
  %3405 = load ptr, ptr %3404, align 8, !tbaa !328
  %3406 = load ptr, ptr %10, align 8, !tbaa !5
  %3407 = getelementptr inbounds %struct.ImGuiWindow, ptr %3406, i32 0, i32 96
  %3408 = load ptr, ptr %3407, align 8, !tbaa !328
  %3409 = icmp eq ptr %3405, %3408
  br label %3410

3410:                                             ; preds = %3400, %3395, %3390
  %3411 = phi i1 [ false, %3395 ], [ false, %3390 ], [ %3409, %3400 ]
  br label %3412

3412:                                             ; preds = %3410, %3386
  %3413 = phi i1 [ false, %3386 ], [ %3411, %3410 ]
  %3414 = zext i1 %3413 to i8
  store i8 %3414, ptr %105, align 1, !tbaa !91
  %3415 = load ptr, ptr %8, align 8, !tbaa !5
  %3416 = getelementptr inbounds %struct.ImGuiContext, ptr %3415, i32 0, i32 228
  %3417 = load i8, ptr %3416, align 8, !tbaa !329, !range !87, !noundef !88
  %3418 = trunc i8 %3417 to i1
  br i1 %3418, label %3450, label %3419

3419:                                             ; preds = %3412
  %3420 = load i8, ptr %105, align 1, !tbaa !91, !range !87, !noundef !88
  %3421 = trunc i8 %3420 to i1
  br i1 %3421, label %3450, label %3422

3422:                                             ; preds = %3419
  %3423 = load ptr, ptr %10, align 8, !tbaa !5
  %3424 = getelementptr inbounds %struct.ImGuiWindow, ptr %3423, i32 0, i32 70
  %3425 = getelementptr inbounds %struct.ImRect, ptr %3424, i32 0, i32 0
  %3426 = getelementptr inbounds %struct.ImVec2, ptr %3425, i32 0, i32 0
  %3427 = load float, ptr %3426, align 8, !tbaa !330
  %3428 = load ptr, ptr %10, align 8, !tbaa !5
  %3429 = getelementptr inbounds %struct.ImGuiWindow, ptr %3428, i32 0, i32 70
  %3430 = getelementptr inbounds %struct.ImRect, ptr %3429, i32 0, i32 1
  %3431 = getelementptr inbounds %struct.ImVec2, ptr %3430, i32 0, i32 0
  %3432 = load float, ptr %3431, align 8, !tbaa !331
  %3433 = fcmp oge float %3427, %3432
  br i1 %3433, label %3446, label %3434

3434:                                             ; preds = %3422
  %3435 = load ptr, ptr %10, align 8, !tbaa !5
  %3436 = getelementptr inbounds %struct.ImGuiWindow, ptr %3435, i32 0, i32 70
  %3437 = getelementptr inbounds %struct.ImRect, ptr %3436, i32 0, i32 0
  %3438 = getelementptr inbounds %struct.ImVec2, ptr %3437, i32 0, i32 1
  %3439 = load float, ptr %3438, align 4, !tbaa !237
  %3440 = load ptr, ptr %10, align 8, !tbaa !5
  %3441 = getelementptr inbounds %struct.ImGuiWindow, ptr %3440, i32 0, i32 70
  %3442 = getelementptr inbounds %struct.ImRect, ptr %3441, i32 0, i32 1
  %3443 = getelementptr inbounds %struct.ImVec2, ptr %3442, i32 0, i32 1
  %3444 = load float, ptr %3443, align 4, !tbaa !332
  %3445 = fcmp oge float %3439, %3444
  br i1 %3445, label %3446, label %3449

3446:                                             ; preds = %3434, %3422
  %3447 = load ptr, ptr %10, align 8, !tbaa !5
  %3448 = getelementptr inbounds %struct.ImGuiWindow, ptr %3447, i32 0, i32 61
  store i8 1, ptr %3448, align 8, !tbaa !181
  br label %3449

3449:                                             ; preds = %3446, %3434
  br label %3450

3450:                                             ; preds = %3449, %3419, %3412
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #13
  br label %3451

3451:                                             ; preds = %3450, %3380, %3374, %3370
  %3452 = load ptr, ptr %22, align 8, !tbaa !5
  %3453 = icmp ne ptr %3452, null
  br i1 %3453, label %3454, label %3468

3454:                                             ; preds = %3451
  %3455 = load ptr, ptr %22, align 8, !tbaa !5
  %3456 = getelementptr inbounds %struct.ImGuiWindow, ptr %3455, i32 0, i32 41
  %3457 = load i8, ptr %3456, align 2, !tbaa !206, !range !87, !noundef !88
  %3458 = trunc i8 %3457 to i1
  br i1 %3458, label %3465, label %3459

3459:                                             ; preds = %3454
  %3460 = load ptr, ptr %22, align 8, !tbaa !5
  %3461 = getelementptr inbounds %struct.ImGuiWindow, ptr %3460, i32 0, i32 61
  %3462 = load i8, ptr %3461, align 8, !tbaa !181
  %3463 = sext i8 %3462 to i32
  %3464 = icmp sgt i32 %3463, 0
  br i1 %3464, label %3465, label %3468

3465:                                             ; preds = %3459, %3454
  %3466 = load ptr, ptr %10, align 8, !tbaa !5
  %3467 = getelementptr inbounds %struct.ImGuiWindow, ptr %3466, i32 0, i32 61
  store i8 1, ptr %3467, align 8, !tbaa !181
  br label %3468

3468:                                             ; preds = %3465, %3459, %3451
  %3469 = load ptr, ptr %22, align 8, !tbaa !5
  %3470 = icmp ne ptr %3469, null
  br i1 %3470, label %3471, label %3485

3471:                                             ; preds = %3468
  %3472 = load ptr, ptr %22, align 8, !tbaa !5
  %3473 = getelementptr inbounds %struct.ImGuiWindow, ptr %3472, i32 0, i32 41
  %3474 = load i8, ptr %3473, align 2, !tbaa !206, !range !87, !noundef !88
  %3475 = trunc i8 %3474 to i1
  br i1 %3475, label %3482, label %3476

3476:                                             ; preds = %3471
  %3477 = load ptr, ptr %22, align 8, !tbaa !5
  %3478 = getelementptr inbounds %struct.ImGuiWindow, ptr %3477, i32 0, i32 62
  %3479 = load i8, ptr %3478, align 1, !tbaa !162
  %3480 = sext i8 %3479 to i32
  %3481 = icmp sgt i32 %3480, 0
  br i1 %3481, label %3482, label %3485

3482:                                             ; preds = %3476, %3471
  %3483 = load ptr, ptr %10, align 8, !tbaa !5
  %3484 = getelementptr inbounds %struct.ImGuiWindow, ptr %3483, i32 0, i32 62
  store i8 1, ptr %3484, align 1, !tbaa !162
  br label %3485

3485:                                             ; preds = %3482, %3476, %3468
  br label %3486

3486:                                             ; preds = %3485, %3351
  %3487 = load ptr, ptr %9, align 8, !tbaa !5
  %3488 = getelementptr inbounds %struct.ImGuiStyle, ptr %3487, i32 0, i32 0
  %3489 = load float, ptr %3488, align 4, !tbaa !333
  %3490 = fcmp ole float %3489, 0.000000e+00
  br i1 %3490, label %3491, label %3494

3491:                                             ; preds = %3486
  %3492 = load ptr, ptr %10, align 8, !tbaa !5
  %3493 = getelementptr inbounds %struct.ImGuiWindow, ptr %3492, i32 0, i32 61
  store i8 1, ptr %3493, align 8, !tbaa !181
  br label %3494

3494:                                             ; preds = %3491, %3486
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #13
  %3495 = load ptr, ptr %10, align 8, !tbaa !5
  %3496 = getelementptr inbounds %struct.ImGuiWindow, ptr %3495, i32 0, i32 61
  %3497 = load i8, ptr %3496, align 8, !tbaa !181
  %3498 = sext i8 %3497 to i32
  %3499 = icmp sgt i32 %3498, 0
  br i1 %3499, label %3506, label %3500

3500:                                             ; preds = %3494
  %3501 = load ptr, ptr %10, align 8, !tbaa !5
  %3502 = getelementptr inbounds %struct.ImGuiWindow, ptr %3501, i32 0, i32 62
  %3503 = load i8, ptr %3502, align 1, !tbaa !162
  %3504 = sext i8 %3503 to i32
  %3505 = icmp sgt i32 %3504, 0
  br label %3506

3506:                                             ; preds = %3500, %3494
  %3507 = phi i1 [ true, %3494 ], [ %3505, %3500 ]
  %3508 = zext i1 %3507 to i8
  store i8 %3508, ptr %106, align 1, !tbaa !91
  %3509 = load i8, ptr %106, align 1, !tbaa !91, !range !87, !noundef !88
  %3510 = trunc i8 %3509 to i1
  br i1 %3510, label %3517, label %3511

3511:                                             ; preds = %3506
  %3512 = load ptr, ptr %10, align 8, !tbaa !5
  %3513 = getelementptr inbounds %struct.ImGuiWindow, ptr %3512, i32 0, i32 63
  %3514 = load i8, ptr %3513, align 2, !tbaa !182
  %3515 = sext i8 %3514 to i32
  %3516 = icmp sgt i32 %3515, 0
  br label %3517

3517:                                             ; preds = %3511, %3506
  %3518 = phi i1 [ true, %3506 ], [ %3516, %3511 ]
  %3519 = load ptr, ptr %10, align 8, !tbaa !5
  %3520 = getelementptr inbounds %struct.ImGuiWindow, ptr %3519, i32 0, i32 45
  %3521 = zext i1 %3518 to i8
  store i8 %3521, ptr %3520, align 2, !tbaa !334
  %3522 = load ptr, ptr %10, align 8, !tbaa !5
  %3523 = getelementptr inbounds %struct.ImGuiWindow, ptr %3522, i32 0, i32 64
  %3524 = load i8, ptr %3523, align 1, !tbaa !335
  %3525 = sext i8 %3524 to i32
  %3526 = icmp sgt i32 %3525, 0
  br i1 %3526, label %3527, label %3536

3527:                                             ; preds = %3517
  %3528 = load ptr, ptr %10, align 8, !tbaa !5
  %3529 = getelementptr inbounds %struct.ImGuiWindow, ptr %3528, i32 0, i32 64
  %3530 = load i8, ptr %3529, align 1, !tbaa !335
  %3531 = add i8 %3530, -1
  store i8 %3531, ptr %3529, align 1, !tbaa !335
  %3532 = load ptr, ptr %10, align 8, !tbaa !5
  %3533 = getelementptr inbounds %struct.ImGuiWindow, ptr %3532, i32 0, i32 3
  %3534 = load i32, ptr %3533, align 4, !tbaa !116
  %3535 = or i32 %3534, 786944
  store i32 %3535, ptr %3533, align 4, !tbaa !116
  br label %3536

3536:                                             ; preds = %3527, %3517
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #13
  store i8 0, ptr %107, align 1, !tbaa !91
  %3537 = load ptr, ptr %10, align 8, !tbaa !5
  %3538 = getelementptr inbounds %struct.ImGuiWindow, ptr %3537, i32 0, i32 41
  %3539 = load i8, ptr %3538, align 2, !tbaa !206, !range !87, !noundef !88
  %3540 = trunc i8 %3539 to i1
  br i1 %3540, label %3549, label %3541

3541:                                             ; preds = %3536
  %3542 = load ptr, ptr %10, align 8, !tbaa !5
  %3543 = getelementptr inbounds %struct.ImGuiWindow, ptr %3542, i32 0, i32 38
  %3544 = load i8, ptr %3543, align 1, !tbaa !163, !range !87, !noundef !88
  %3545 = trunc i8 %3544 to i1
  br i1 %3545, label %3546, label %3549

3546:                                             ; preds = %3541
  %3547 = load i8, ptr %106, align 1, !tbaa !91, !range !87, !noundef !88
  %3548 = trunc i8 %3547 to i1
  br i1 %3548, label %3549, label %3569

3549:                                             ; preds = %3546, %3541, %3536
  %3550 = load ptr, ptr %10, align 8, !tbaa !5
  %3551 = getelementptr inbounds %struct.ImGuiWindow, ptr %3550, i32 0, i32 56
  %3552 = load i8, ptr %3551, align 8, !tbaa !213
  %3553 = sext i8 %3552 to i32
  %3554 = icmp sle i32 %3553, 0
  br i1 %3554, label %3555, label %3568

3555:                                             ; preds = %3549
  %3556 = load ptr, ptr %10, align 8, !tbaa !5
  %3557 = getelementptr inbounds %struct.ImGuiWindow, ptr %3556, i32 0, i32 57
  %3558 = load i8, ptr %3557, align 1, !tbaa !214
  %3559 = sext i8 %3558 to i32
  %3560 = icmp sle i32 %3559, 0
  br i1 %3560, label %3561, label %3568

3561:                                             ; preds = %3555
  %3562 = load ptr, ptr %10, align 8, !tbaa !5
  %3563 = getelementptr inbounds %struct.ImGuiWindow, ptr %3562, i32 0, i32 62
  %3564 = load i8, ptr %3563, align 1, !tbaa !162
  %3565 = sext i8 %3564 to i32
  %3566 = icmp sle i32 %3565, 0
  br i1 %3566, label %3567, label %3568

3567:                                             ; preds = %3561
  store i8 1, ptr %107, align 1, !tbaa !91
  br label %3568

3568:                                             ; preds = %3567, %3561, %3555, %3549
  br label %3569

3569:                                             ; preds = %3568, %3546
  %3570 = load i8, ptr %107, align 1, !tbaa !91, !range !87, !noundef !88
  %3571 = trunc i8 %3570 to i1
  %3572 = load ptr, ptr %10, align 8, !tbaa !5
  %3573 = getelementptr inbounds %struct.ImGuiWindow, ptr %3572, i32 0, i32 43
  %3574 = zext i1 %3571 to i8
  store i8 %3574, ptr %3573, align 8, !tbaa !336
  %3575 = load ptr, ptr %10, align 8, !tbaa !5
  %3576 = getelementptr inbounds %struct.ImGuiWindow, ptr %3575, i32 0, i32 43
  %3577 = load i8, ptr %3576, align 8, !tbaa !336, !range !87, !noundef !88
  %3578 = trunc i8 %3577 to i1
  br i1 %3578, label %3579, label %3587

3579:                                             ; preds = %3569
  %3580 = load ptr, ptr %10, align 8, !tbaa !5
  %3581 = getelementptr inbounds %struct.ImGuiWindow, ptr %3580, i32 0, i32 69
  %3582 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3581, i32 0, i32 16
  %3583 = load i16, ptr %3582, align 4, !tbaa !293
  %3584 = load ptr, ptr %10, align 8, !tbaa !5
  %3585 = getelementptr inbounds %struct.ImGuiWindow, ptr %3584, i32 0, i32 69
  %3586 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3585, i32 0, i32 17
  store i16 %3583, ptr %3586, align 2, !tbaa !292
  br label %3587

3587:                                             ; preds = %3579, %3569
  %3588 = load ptr, ptr %10, align 8, !tbaa !5
  %3589 = getelementptr inbounds %struct.ImGuiWindow, ptr %3588, i32 0, i32 43
  %3590 = load i8, ptr %3589, align 8, !tbaa !336, !range !87, !noundef !88
  %3591 = trunc i8 %3590 to i1
  br i1 %3591, label %3592, label %3608

3592:                                             ; preds = %3587
  %3593 = load ptr, ptr %10, align 8, !tbaa !5
  %3594 = getelementptr inbounds %struct.ImGuiWindow, ptr %3593, i32 0, i32 44
  %3595 = load i8, ptr %3594, align 1, !tbaa !115, !range !87, !noundef !88
  %3596 = trunc i8 %3595 to i1
  br i1 %3596, label %3608, label %3597

3597:                                             ; preds = %3592
  %3598 = load ptr, ptr %10, align 8, !tbaa !5
  %3599 = getelementptr inbounds %struct.ImGuiWindow, ptr %3598, i32 0, i32 44
  %3600 = load i8, ptr %3599, align 1, !tbaa !115, !range !87, !noundef !88
  %3601 = trunc i8 %3600 to i1
  %3602 = zext i1 %3601 to i32
  %3603 = icmp eq i32 %3602, 0
  br i1 %3603, label %3604, label %3605

3604:                                             ; preds = %3597
  br label %3607

3605:                                             ; preds = %3597
  call void @__assert_fail(ptr noundef @.str.148, ptr noundef @.str.3, i32 noundef 7422, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3606:                                             ; No predecessors!
  br label %3607

3607:                                             ; preds = %3606, %3604
  br label %3608

3608:                                             ; preds = %3607, %3592, %3587
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #13
  br label %3609

3609:                                             ; preds = %3608, %3312
  %3610 = load ptr, ptr %10, align 8, !tbaa !5
  %3611 = getelementptr inbounds %struct.ImGuiWindow, ptr %3610, i32 0, i32 46
  %3612 = load i8, ptr %3611, align 1, !tbaa !109, !range !87, !noundef !88
  %3613 = trunc i8 %3612 to i1
  br i1 %3613, label %3662, label %3614

3614:                                             ; preds = %3609
  %3615 = load ptr, ptr %8, align 8, !tbaa !5
  %3616 = getelementptr inbounds %struct.ImGuiContext, ptr %3615, i32 0, i32 2
  %3617 = getelementptr inbounds %struct.ImGuiIO, ptr %3616, i32 0, i32 35
  %3618 = load i8, ptr %3617, align 8, !tbaa !337, !range !87, !noundef !88
  %3619 = trunc i8 %3618 to i1
  br i1 %3619, label %3620, label %3623

3620:                                             ; preds = %3614
  %3621 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %3622 = trunc i8 %3621 to i1
  br i1 %3622, label %3639, label %3623

3623:                                             ; preds = %3620, %3614
  %3624 = load ptr, ptr %8, align 8, !tbaa !5
  %3625 = getelementptr inbounds %struct.ImGuiContext, ptr %3624, i32 0, i32 2
  %3626 = getelementptr inbounds %struct.ImGuiIO, ptr %3625, i32 0, i32 36
  %3627 = load i8, ptr %3626, align 1, !tbaa !338, !range !87, !noundef !88
  %3628 = trunc i8 %3627 to i1
  br i1 %3628, label %3629, label %3662

3629:                                             ; preds = %3623
  %3630 = load ptr, ptr %8, align 8, !tbaa !5
  %3631 = getelementptr inbounds %struct.ImGuiContext, ptr %3630, i32 0, i32 244
  %3632 = load i8, ptr %3631, align 2, !tbaa !339
  %3633 = sext i8 %3632 to i32
  %3634 = load ptr, ptr %8, align 8, !tbaa !5
  %3635 = getelementptr inbounds %struct.ImGuiContext, ptr %3634, i32 0, i32 29
  %3636 = getelementptr inbounds %struct.ImVector.5, ptr %3635, i32 0, i32 0
  %3637 = load i32, ptr %3636, align 8, !tbaa !107
  %3638 = icmp eq i32 %3633, %3637
  br i1 %3638, label %3639, label %3662

3639:                                             ; preds = %3629, %3620
  %3640 = load ptr, ptr %10, align 8, !tbaa !5
  %3641 = getelementptr inbounds %struct.ImGuiWindow, ptr %3640, i32 0, i32 56
  %3642 = load i8, ptr %3641, align 8, !tbaa !213
  %3643 = sext i8 %3642 to i32
  %3644 = icmp sgt i32 %3643, 0
  br i1 %3644, label %3645, label %3650

3645:                                             ; preds = %3639
  %3646 = load ptr, ptr %10, align 8, !tbaa !5
  %3647 = getelementptr inbounds %struct.ImGuiWindow, ptr %3646, i32 0, i32 56
  %3648 = load i8, ptr %3647, align 8, !tbaa !213
  %3649 = add i8 %3648, 1
  store i8 %3649, ptr %3647, align 8, !tbaa !213
  br label %3650

3650:                                             ; preds = %3645, %3639
  %3651 = load ptr, ptr %10, align 8, !tbaa !5
  %3652 = getelementptr inbounds %struct.ImGuiWindow, ptr %3651, i32 0, i32 57
  %3653 = load i8, ptr %3652, align 1, !tbaa !214
  %3654 = sext i8 %3653 to i32
  %3655 = icmp sgt i32 %3654, 0
  br i1 %3655, label %3656, label %3661

3656:                                             ; preds = %3650
  %3657 = load ptr, ptr %10, align 8, !tbaa !5
  %3658 = getelementptr inbounds %struct.ImGuiWindow, ptr %3657, i32 0, i32 57
  %3659 = load i8, ptr %3658, align 1, !tbaa !214
  %3660 = add i8 %3659, 1
  store i8 %3660, ptr %3658, align 1, !tbaa !214
  br label %3661

3661:                                             ; preds = %3656, %3650
  store i1 false, ptr %4, align 1
  store i32 1, ptr %108, align 4
  br label %3668

3662:                                             ; preds = %3629, %3623, %3609
  %3663 = load ptr, ptr %10, align 8, !tbaa !5
  %3664 = getelementptr inbounds %struct.ImGuiWindow, ptr %3663, i32 0, i32 43
  %3665 = load i8, ptr %3664, align 8, !tbaa !336, !range !87, !noundef !88
  %3666 = trunc i8 %3665 to i1
  %3667 = xor i1 %3666, true
  store i1 %3667, ptr %4, align 1
  store i32 1, ptr %108, align 4
  br label %3668

3668:                                             ; preds = %3662, %3661
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 88, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #13
  %3669 = load i1, ptr %4, align 1
  ret i1 %3669
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui15GetMainViewportEv() #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef, ptr noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #11 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef, ptr noundef, ptr noundef) #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef, i32 noundef) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef, i32 noundef, i32 noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef, ptr noundef) #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86)) unnamed_addr #11 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(86)) #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui14PushFocusScopeEj(i32 noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(52)) #11 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) #1

declare void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196)) #10

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #12

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136)) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136)) #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136)) #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef, ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320)) #8 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) #9

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

; Function Attrs: mustprogress uwtable
declare hidden <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef) #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext, i1 noundef zeroext, i32 noundef, ptr noundef, float noundef) #9

declare void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26), float noundef, i1 noundef zeroext) #10

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #11 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef, ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv() #8

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

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

!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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 16256}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14336, !24, i64 14552, !10, i64 15676, !10, i64 15680, !6, i64 15688, !17, i64 15696, !17, i64 15700, !25, i64 15704, !28, i64 16232, !10, i64 16240, !10, i64 16244, !10, i64 16248, !10, i64 16252, !14, i64 16256, !14, i64 16257, !14, i64 16258, !14, i64 16259, !14, i64 16260, !6, i64 16264, !29, i64 16272, !29, i64 16288, !18, i64 16304, !10, i64 16308, !30, i64 16312, !30, i64 16328, !30, i64 16344, !31, i64 16360, !32, i64 16376, !10, i64 16392, !16, i64 16396, !6, i64 16408, !6, i64 16416, !6, i64 16424, !6, i64 16432, !6, i64 16440, !16, i64 16448, !10, i64 16456, !17, i64 16460, !16, i64 16464, !16, i64 16472, !10, i64 16480, !10, i64 16484, !10, i64 16488, !14, i64 16492, !14, i64 16493, !17, i64 16496, !17, i64 16500, !10, i64 16504, !10, i64 16508, !17, i64 16512, !14, i64 16516, !14, i64 16517, !14, i64 16518, !14, i64 16519, !14, i64 16520, !14, i64 16521, !16, i64 16524, !6, i64 16536, !34, i64 16544, !10, i64 16548, !10, i64 16552, !14, i64 16556, !14, i64 16557, !6, i64 16560, !10, i64 16568, !17, i64 16572, !7, i64 16576, !35, i64 18256, !10, i64 18568, !14, i64 18572, !10, i64 18576, !10, i64 18580, !10, i64 18584, !10, i64 18588, !37, i64 18592, !38, i64 18616, !40, i64 18680, !42, i64 18824, !43, i64 18840, !44, i64 18856, !45, i64 18872, !46, i64 18888, !47, i64 18904, !48, i64 18920, !48, i64 18936, !10, i64 18952, !49, i64 18960, !17, i64 18976, !6, i64 18984, !6, i64 18992, !6, i64 19000, !10, i64 19008, !50, i64 19016, !10, i64 19064, !10, i64 19068, !10, i64 19072, !6, i64 19080, !10, i64 19088, !10, i64 19092, !10, i64 19096, !10, i64 19100, !10, i64 19104, !10, i64 19108, !10, i64 19112, !10, i64 19116, !10, i64 19120, !10, i64 19124, !10, i64 19128, !34, i64 19132, !51, i64 19136, !14, i64 19140, !14, i64 19141, !14, i64 19142, !14, i64 19143, !14, i64 19144, !14, i64 19145, !14, i64 19146, !52, i64 19152, !14, i64 19200, !14, i64 19201, !14, i64 19202, !10, i64 19204, !10, i64 19208, !10, i64 19212, !10, i64 19216, !10, i64 19220, !10, i64 19224, !39, i64 19228, !39, i64 19244, !10, i64 19260, !10, i64 19264, !10, i64 19268, !52, i64 19272, !52, i64 19320, !52, i64 19368, !52, i64 19416, !10, i64 19464, !10, i64 19468, !6, i64 19472, !6, i64 19480, !6, i64 19488, !17, i64 19496, !17, i64 19500, !14, i64 19504, !16, i64 19508, !16, i64 19516, !17, i64 19524, !14, i64 19528, !14, i64 19529, !14, i64 19530, !10, i64 19532, !10, i64 19536, !10, i64 19540, !53, i64 19544, !39, i64 19608, !10, i64 19624, !10, i64 19628, !17, i64 19632, !10, i64 19636, !10, i64 19640, !10, i64 19644, !10, i64 19648, !54, i64 19656, !7, i64 19672, !10, i64 19688, !55, i64 19696, !6, i64 19712, !10, i64 19720, !56, i64 19728, !57, i64 19744, !59, i64 19784, !60, i64 19800, !6, i64 19816, !61, i64 19824, !63, i64 19864, !64, i64 19880, !10, i64 19896, !10, i64 19900, !17, i64 19904, !17, i64 19908, !10, i64 19912, !10, i64 19916, !10, i64 19920, !17, i64 19924, !16, i64 19928, !65, i64 19936, !69, i64 23664, !70, i64 23688, !10, i64 23808, !10, i64 23812, !10, i64 23816, !10, i64 23820, !17, i64 23824, !17, i64 23828, !10, i64 23832, !26, i64 23836, !72, i64 23852, !17, i64 23900, !17, i64 23904, !14, i64 23908, !14, i64 23909, !17, i64 23912, !17, i64 23916, !17, i64 23920, !17, i64 23924, !19, i64 23928, !19, i64 23930, !66, i64 23936, !45, i64 23952, !73, i64 23968, !73, i64 23984, !10, i64 24000, !7, i64 24004, !74, i64 24008, !6, i64 24064, !14, i64 24072, !17, i64 24076, !77, i64 24080, !78, i64 24096, !79, i64 24112, !80, i64 24128, !81, i64 24144, !10, i64 24160, !7, i64 24168, !14, i64 24240, !82, i64 24244, !6, i64 24248, !77, i64 24256, !6, i64 24272, !6, i64 24280, !17, i64 24288, !14, i64 24292, !10, i64 24296, !10, i64 24300, !10, i64 24304, !10, i64 24308, !77, i64 24312, !83, i64 24328, !7, i64 24352, !7, i64 24353, !7, i64 24354, !14, i64 24355, !7, i64 24356, !10, i64 24360, !84, i64 24364, !85, i64 24384, !6, i64 24424, !7, i64 24432, !10, i64 24672, !10, i64 24676, !17, i64 24680, !10, i64 24684, !10, i64 24688, !10, i64 24692, !66, i64 24696}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !17, i64 56, !14, i64 60, !6, i64 64, !16, i64 72, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91, !14, i64 92, !14, i64 93, !14, i64 94, !14, i64 95, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !14, i64 120, !14, i64 121, !14, i64 122, !14, i64 123, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !14, i64 208, !14, i64 209, !14, i64 210, !14, i64 211, !14, i64 212, !14, i64 213, !14, i64 214, !17, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !16, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !16, i64 3584, !7, i64 3592, !17, i64 3600, !17, i64 3604, !18, i64 3608, !10, i64 3612, !14, i64 3616, !14, i64 3617, !14, i64 3618, !14, i64 3619, !10, i64 3620, !7, i64 3624, !14, i64 14056, !16, i64 14060, !7, i64 14068, !7, i64 14112, !7, i64 14152, !7, i64 14157, !7, i64 14162, !7, i64 14172, !7, i64 14182, !7, i64 14187, !7, i64 14192, !14, i64 14197, !7, i64 14200, !7, i64 14220, !7, i64 14240, !7, i64 14280, !17, i64 14300, !14, i64 14304, !14, i64 14305, !7, i64 14306, !14, i64 14307, !19, i64 14308, !20, i64 14312}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS15ImGuiPlatformIO", !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, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !22, i64 184, !23, i64 200}
!22 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !10, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !10, i64 148, !16, i64 152, !16, i64 160, !17, i64 168, !16, i64 172, !16, i64 180, !16, i64 188, !16, i64 196, !17, i64 204, !17, i64 208, !14, i64 212, !14, i64 213, !14, i64 214, !17, i64 216, !17, i64 220, !7, i64 224, !17, i64 1104, !17, i64 1108, !17, i64 1112, !10, i64 1116, !10, i64 1120}
!25 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !26, i64 28, !10, i64 44, !27, i64 48, !7, i64 64, !17, i64 448, !7, i64 452, !6, i64 520}
!26 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!27 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"double", !7, i64 0}
!29 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS12ImGuiStorage", !33, i64 0}
!33 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!35 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !36, i64 280, !36, i64 296}
!36 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !17, i64 8, !10, i64 12, !10, i64 16, !14, i64 20}
!38 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !39, i64 12, !39, i64 28, !39, i64 44}
!39 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!40 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !16, i64 20, !16, i64 28, !16, i64 36, !16, i64 44, !16, i64 52, !14, i64 60, !14, i64 61, !39, i64 64, !6, i64 80, !6, i64 88, !17, i64 96, !10, i64 100, !10, i64 104, !41, i64 108, !16, i64 136}
!41 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 25}
!42 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS20ImGuiPlatformMonitor", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !17, i64 32, !6, i64 40}
!51 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!52 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !39, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44}
!53 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!54 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS6ImPoolI10ImGuiTableE", !58, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!58 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !62, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!62 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !66, i64 40, !66, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !67, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720}
!66 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !17, i64 28, !68, i64 32}
!68 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !19, i64 3582, !19, i64 3584, !10, i64 3588, !10, i64 3592}
!69 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !66, i64 8}
!70 = !{!"_ZTS6ImFont", !59, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !71, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !17, i64 88, !17, i64 92, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !10, i64 112, !7, i64 116}
!71 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS21ImGuiComboPreviewData", !39, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!73 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!74 = !{!"_ZTS16ImGuiDockContext", !32, i64 0, !75, i64 16, !76, i64 32, !14, i64 48}
!75 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS15ImGuiTextBuffer", !66, i64 0}
!78 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !66, i64 0}
!80 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !66, i64 0}
!81 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!83 = !{!"_ZTS14ImGuiTextIndex", !46, i64 0, !10, i64 16}
!84 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 12, !10, i64 16}
!85 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !86, i64 16, !14, i64 32, !17, i64 36}
!86 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{i8 0, i8 2}
!88 = !{}
!89 = !{!13, !10, i64 16244}
!90 = !{!13, !10, i64 16240}
!91 = !{!14, !14, i64 0}
!92 = !{!93, !10, i64 664}
!93 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !41, i64 28, !6, i64 56, !10, i64 64, !16, i64 68, !10, i64 76, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !16, i64 184, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !14, i64 232, !14, i64 233, !14, i64 234, !14, i64 235, !14, i64 236, !14, i64 237, !14, i64 238, !14, i64 239, !14, i64 240, !14, i64 241, !14, i64 242, !14, i64 243, !14, i64 244, !14, i64 245, !7, i64 246, !19, i64 248, !19, i64 250, !19, i64 252, !19, i64 254, !19, i64 256, !10, i64 260, !7, i64 264, !7, i64 265, !7, i64 266, !14, i64 267, !10, i64 268, !7, i64 272, !7, i64 273, !7, i64 274, !7, i64 275, !10, i64 276, !10, i64 277, !10, i64 278, !10, i64 279, !16, i64 280, !16, i64 288, !45, i64 296, !94, i64 312, !39, i64 544, !39, i64 560, !39, i64 576, !39, i64 592, !39, i64 608, !39, i64 624, !39, i64 640, !97, i64 656, !97, i64 660, !10, i64 664, !10, i64 668, !17, i64 672, !17, i64 676, !32, i64 680, !98, i64 696, !17, i64 712, !17, i64 716, !10, i64 720, !6, i64 728, !99, i64 736, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !7, i64 1000, !7, i64 1008, !7, i64 1040, !10, i64 1056, !10, i64 1060, !10, i64 1064, !14, i64 1068, !14, i64 1069, !14, i64 1069, !14, i64 1069, !14, i64 1069, !19, i64 1070, !106, i64 1072, !6, i64 1096, !6, i64 1104, !10, i64 1112, !10, i64 1116, !39, i64 1120}
!94 = !{!"_ZTS19ImGuiWindowTempData", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !17, i64 56, !17, i64 60, !14, i64 64, !14, i64 65, !95, i64 68, !95, i64 72, !95, i64 76, !16, i64 80, !51, i64 88, !19, i64 92, !19, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !96, i64 108, !10, i64 136, !10, i64 140, !30, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !17, i64 188, !17, i64 192, !59, i64 200, !59, i64 216}
!95 = !{!"_ZTS6ImVec1", !17, i64 0}
!96 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!97 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!98 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!99 = !{!"_ZTS10ImDrawList", !100, i64 0, !20, i64 16, !101, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !102, i64 88, !103, i64 104, !27, i64 120, !104, i64 136, !105, i64 168, !17, i64 192}
!100 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!101 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!102 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!103 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!104 = !{!"_ZTS15ImDrawCmdHeader", !26, i64 0, !6, i64 16, !10, i64 24}
!105 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !60, i64 8}
!106 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!107 = !{!13, !10, i64 16360}
!108 = !{!13, !14, i64 16257}
!109 = !{!93, !14, i64 243}
!110 = !{!13, !10, i64 18936}
!111 = !{!93, !10, i64 260}
!112 = !{!113, !10, i64 0}
!113 = !{!"_ZTS14ImGuiPopupData", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !16, i64 36, !16, i64 44}
!114 = !{!113, !6, i64 8}
!115 = !{!93, !14, i64 241}
!116 = !{!93, !10, i64 20}
!117 = !{!93, !10, i64 24}
!118 = !{!13, !28, i64 16232}
!119 = !{!93, !17, i64 672}
!120 = !{!93, !19, i64 252}
!121 = !{!13, !10, i64 16392}
!122 = !{!93, !19, i64 254}
!123 = !{!93, !6, i64 1096}
!124 = !{!93, !6, i64 1104}
!125 = !{!13, !10, i64 18680}
!126 = !{!13, !10, i64 18784}
!127 = !{!13, !10, i64 18696}
!128 = !{!93, !10, i64 1112}
!129 = !{!130, !6, i64 136}
!130 = !{!"_ZTS13ImGuiDockNode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !131, i64 20, !6, i64 24, !7, i64 32, !30, i64 48, !6, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !132, i64 96, !41, i64 100, !10, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 200, !10, i64 200, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 202, !14, i64 202, !14, i64 202, !14, i64 202}
!131 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!132 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!133 = !{!134, !6, i64 0}
!134 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !38, i64 8, !135, i64 68}
!135 = !{!"_ZTS15ImGuiStackSizes", !19, i64 0, !19, i64 2, !19, i64 4, !19, i64 6, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16}
!136 = !{!93, !6, i64 936}
!137 = !{!93, !10, i64 296}
!138 = !{!13, !6, i64 16408}
!139 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !140, i64 16, i64 4, !140, i64 20, i64 4, !140, i64 24, i64 4, !140, i64 28, i64 4, !140, i64 32, i64 4, !140, i64 36, i64 4, !140, i64 40, i64 4, !140, i64 44, i64 4, !140, i64 48, i64 4, !140, i64 52, i64 4, !140, i64 56, i64 4, !140}
!140 = !{!17, !17, i64 0}
!141 = !{!13, !10, i64 18952}
!142 = !{!93, !6, i64 944}
!143 = !{!93, !10, i64 16}
!144 = !{!13, !10, i64 18580}
!145 = !{!93, !10, i64 1056}
!146 = !{!93, !51, i64 400}
!147 = !{!113, !10, i64 24}
!148 = !{!13, !10, i64 18684}
!149 = !{i64 0, i64 4, !140, i64 4, i64 4, !140}
!150 = !{!13, !10, i64 18688}
!151 = !{!13, !17, i64 18716}
!152 = !{!13, !17, i64 18720}
!153 = !{!13, !17, i64 18732}
!154 = !{!93, !17, i64 200}
!155 = !{!93, !17, i64 208}
!156 = !{!13, !17, i64 18736}
!157 = !{!93, !17, i64 204}
!158 = !{!93, !17, i64 212}
!159 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 1, !91, i64 25, i64 1, !91}
!160 = !{!13, !14, i64 18741}
!161 = !{!13, !10, i64 18692}
!162 = !{!93, !7, i64 273}
!163 = !{!93, !14, i64 235}
!164 = !{!93, !14, i64 245}
!165 = !{i64 0, i64 4, !140, i64 4, i64 4, !140, i64 8, i64 4, !140, i64 12, i64 4, !140}
!166 = !{!93, !6, i64 728}
!167 = !{!93, !10, i64 488}
!168 = !{!93, !14, i64 1068}
!169 = !{!93, !6, i64 56}
!170 = !{!171, !6, i64 96}
!171 = !{!"_ZTS14ImGuiViewportP", !172, i64 0, !6, i64 96, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !16, i64 120, !17, i64 128, !17, i64 132, !14, i64 136, !19, i64 138, !7, i64 140, !7, i64 152, !173, i64 168, !175, i64 232, !16, i64 264, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296, !16, i64 304, !16, i64 312}
!172 = !{!"_ZTS13ImGuiViewport", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91}
!173 = !{!"_ZTS10ImDrawData", !14, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !174, i64 16, !16, i64 32, !16, i64 40, !16, i64 48, !6, i64 56}
!174 = !{!"_ZTS8ImVectorIP10ImDrawListE", !10, i64 0, !10, i64 4, !6, i64 8}
!175 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !174, i64 16}
!176 = !{!13, !6, i64 19488}
!177 = !{!93, !6, i64 8}
!178 = !{!93, !10, i64 168}
!179 = !{!180, !180, i64 0}
!180 = !{!"long", !7, i64 0}
!181 = !{!93, !7, i64 272}
!182 = !{!93, !7, i64 274}
!183 = !{!93, !17, i64 96}
!184 = !{!93, !17, i64 88}
!185 = !{!93, !17, i64 100}
!186 = !{!93, !17, i64 92}
!187 = !{!13, !10, i64 8}
!188 = !{!172, !17, i64 40}
!189 = !{!93, !17, i64 716}
!190 = !{!24, !17, i64 48}
!191 = !{!93, !17, i64 140}
!192 = !{!24, !17, i64 56}
!193 = !{!24, !17, i64 20}
!194 = !{!24, !17, i64 12}
!195 = !{!93, !17, i64 128}
!196 = !{!24, !17, i64 76}
!197 = !{!13, !17, i64 18816}
!198 = !{!93, !17, i64 412}
!199 = !{!13, !17, i64 18820}
!200 = !{!93, !17, i64 416}
!201 = !{!13, !6, i64 16416}
!202 = !{!13, !10, i64 16484}
!203 = !{!13, !10, i64 16488}
!204 = !{!19, !19, i64 0}
!205 = !{!93, !14, i64 239}
!206 = !{!93, !14, i64 238}
!207 = !{!93, !17, i64 144}
!208 = !{!93, !17, i64 152}
!209 = !{!93, !17, i64 148}
!210 = !{!93, !17, i64 156}
!211 = !{!16, !17, i64 0}
!212 = !{!16, !17, i64 4}
!213 = !{!93, !7, i64 264}
!214 = !{!93, !7, i64 265}
!215 = !{!93, !14, i64 267}
!216 = !{!93, !10, i64 268}
!217 = !{!93, !10, i64 456}
!218 = !{!93, !17, i64 280}
!219 = !{!93, !10, i64 76}
!220 = !{!93, !14, i64 234}
!221 = !{!172, !10, i64 4}
!222 = !{!13, !10, i64 14520}
!223 = !{!93, !17, i64 136}
!224 = !{!24, !17, i64 44}
!225 = !{!24, !17, i64 52}
!226 = !{!24, !17, i64 16}
!227 = !{!13, !14, i64 102}
!228 = !{!13, !17, i64 15696}
!229 = !{!93, !7, i64 246}
!230 = !{!172, !14, i64 89}
!231 = !{!172, !14, i64 90}
!232 = !{!93, !14, i64 233}
!233 = !{!24, !17, i64 116}
!234 = !{!93, !14, i64 232}
!235 = !{!93, !17, i64 224}
!236 = !{!93, !17, i64 228}
!237 = !{!93, !17, i64 548}
!238 = !{!93, !17, i64 80}
!239 = !{!93, !17, i64 560}
!240 = !{!93, !17, i64 84}
!241 = !{!93, !17, i64 564}
!242 = !{!93, !17, i64 568}
!243 = !{!93, !17, i64 572}
!244 = !{!24, !17, i64 72}
!245 = !{!93, !17, i64 576}
!246 = !{!93, !17, i64 580}
!247 = !{!93, !17, i64 584}
!248 = !{!93, !17, i64 588}
!249 = !{!93, !17, i64 676}
!250 = !{!93, !17, i64 104}
!251 = !{!93, !17, i64 192}
!252 = !{!93, !17, i64 108}
!253 = !{!93, !17, i64 132}
!254 = !{!93, !17, i64 196}
!255 = !{!93, !17, i64 164}
!256 = !{!93, !17, i64 160}
!257 = !{!99, !10, i64 0}
!258 = !{!259, !10, i64 32}
!259 = !{!"_ZTS9ImDrawCmd", !26, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!260 = !{!13, !6, i64 15688}
!261 = !{!70, !6, i64 64}
!262 = !{!263, !6, i64 8}
!263 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !14, i64 24, !6, i64 32, !14, i64 40, !14, i64 41, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !16, i64 72, !16, i64 80, !44, i64 88, !264, i64 104, !265, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!264 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!265 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!266 = !{!99, !10, i64 32}
!267 = !{!13, !6, i64 19472}
!268 = !{!13, !6, i64 19080}
!269 = !{!93, !6, i64 976}
!270 = !{!93, !17, i64 120}
!271 = !{!93, !17, i64 124}
!272 = !{!93, !17, i64 184}
!273 = !{!93, !17, i64 592}
!274 = !{!93, !17, i64 188}
!275 = !{!93, !17, i64 596}
!276 = !{!93, !17, i64 600}
!277 = !{!93, !17, i64 604}
!278 = !{!93, !17, i64 640}
!279 = !{!93, !17, i64 644}
!280 = !{!93, !17, i64 648}
!281 = !{!93, !17, i64 652}
!282 = !{!93, !17, i64 380}
!283 = !{!93, !17, i64 388}
!284 = !{!93, !17, i64 384}
!285 = !{!28, !28, i64 0}
!286 = !{!93, !17, i64 328}
!287 = !{!93, !17, i64 332}
!288 = !{!93, !17, i64 372}
!289 = !{!93, !17, i64 368}
!290 = !{!93, !14, i64 377}
!291 = !{!93, !14, i64 376}
!292 = !{!93, !19, i64 406}
!293 = !{!93, !19, i64 404}
!294 = !{!93, !14, i64 408}
!295 = !{!93, !14, i64 409}
!296 = !{!93, !14, i64 410}
!297 = !{!93, !14, i64 411}
!298 = !{!93, !10, i64 448}
!299 = !{!93, !10, i64 452}
!300 = !{!93, !6, i64 472}
!301 = !{!93, !6, i64 480}
!302 = !{!93, !10, i64 492}
!303 = !{!93, !10, i64 496}
!304 = !{!93, !17, i64 500}
!305 = !{!93, !17, i64 504}
!306 = !{!172, !14, i64 91}
!307 = !{!13, !10, i64 24308}
!308 = !{!13, !14, i64 19504}
!309 = !{!39, !17, i64 0}
!310 = !{!39, !17, i64 4}
!311 = !{!39, !17, i64 8}
!312 = !{!39, !17, i64 12}
!313 = !{!93, !19, i64 658}
!314 = !{!93, !19, i64 656}
!315 = !{!13, !6, i64 16432}
!316 = !{!13, !14, i64 89}
!317 = !{!13, !14, i64 3625}
!318 = !{!93, !6, i64 968}
!319 = !{!13, !14, i64 19528}
!320 = !{!93, !10, i64 172}
!321 = !{!13, !10, i64 18584}
!322 = !{!93, !10, i64 1116}
!323 = !{!13, !10, i64 18588}
!324 = !{!93, !14, i64 237}
!325 = !{!93, !19, i64 248}
!326 = !{!93, !10, i64 668}
!327 = !{!13, !14, i64 19144}
!328 = !{!93, !6, i64 984}
!329 = !{!13, !14, i64 24240}
!330 = !{!93, !17, i64 544}
!331 = !{!93, !17, i64 552}
!332 = !{!93, !17, i64 556}
!333 = !{!24, !17, i64 0}
!334 = !{!93, !14, i64 242}
!335 = !{!93, !7, i64 275}
!336 = !{!93, !14, i64 240}
!337 = !{!13, !14, i64 128}
!338 = !{!13, !14, i64 129}
!339 = !{!13, !7, i64 24354}


; 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.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.138 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [68 x i8], align 1

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #4

; 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 #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #7

; 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 #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8DebugLogEPKcz(ptr noundef, ...) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320)) local_unnamed_addr #8 align 2

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

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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef) local_unnamed_addr #10

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320)) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136)) local_unnamed_addr #8 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #9 {
  %4 = alloca ptr, align 8
  %5 = alloca %struct.ImGuiWindowStackData, align 8
  %6 = alloca %struct.ImVec2, align 8
  %7 = alloca %struct.ImRect, align 4
  %8 = alloca %struct.ImVec4, align 4
  %9 = alloca i64, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 8
  %12 = alloca %struct.ImRect, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca %struct.ImRect, align 8
  %17 = alloca %struct.ImVec2, align 8
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImRect, align 8
  %20 = alloca %struct.ImRect, align 8
  %21 = alloca %struct.ImRect, align 8
  %22 = alloca %struct.ImRect, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImRect, align 8
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca i32, align 4
  %29 = alloca [4 x i32], align 16
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 8
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImRect, align 4
  %36 = alloca %struct.ImRect, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImRect, align 8
  %39 = alloca %struct.ImRect, align 8
  %40 = alloca %struct.ImVec2, align 8
  %41 = alloca %struct.ImVec2, align 8
  %42 = alloca %struct.ImVec2, align 8
  %43 = alloca %struct.ImRect, align 4
  %44 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %44, i64 14552
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %46

46:                                               ; preds = %3
  %47 = load i8, ptr %0, align 1, !tbaa !9
  %.not384 = icmp eq i8 %47, 0
  br i1 %.not384, label %.critedge, label %48

.critedge:                                        ; preds = %3, %46
  tail call void @__assert_fail(ptr noundef nonnull @.str.137, ptr noundef nonnull @.str.3, i32 noundef 6596, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

48:                                               ; preds = %46
  %49 = getelementptr inbounds i8, ptr %44, i64 16256
  %50 = load i8, ptr %49, align 8, !tbaa !10, !range !86, !noundef !87
  %51 = trunc nuw i8 %50 to i1
  br i1 %51, label %53, label %52

52:                                               ; preds = %48
  tail call void @__assert_fail(ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.3, i32 noundef 6597, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

53:                                               ; preds = %48
  %54 = getelementptr inbounds i8, ptr %44, i64 16244
  %55 = load i32, ptr %54, align 4, !tbaa !88
  %56 = getelementptr inbounds i8, ptr %44, i64 16240
  %57 = load i32, ptr %56, align 8, !tbaa !89
  %.not385 = icmp eq i32 %55, %57
  br i1 %.not385, label %58, label %59

58:                                               ; preds = %53
  tail call void @__assert_fail(ptr noundef nonnull @.str.139, ptr noundef nonnull @.str.3, i32 noundef 6598, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

59:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #14
  %60 = tail call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef nonnull %0)
  store ptr %60, ptr %4, align 8, !tbaa !5
  %61 = icmp eq ptr %60, null
  br i1 %61, label %62, label %64

62:                                               ; preds = %59
  %63 = tail call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef nonnull %0, i32 noundef %2)
  store ptr %63, ptr %4, align 8, !tbaa !5
  br label %64

64:                                               ; preds = %62, %59
  %65 = phi ptr [ %63, %62 ], [ %60, %59 ]
  %66 = and i32 %2, 786944
  %67 = icmp eq i32 %66, 786944
  %68 = or i32 %2, 6
  %spec.select = select i1 %67, i32 %68, i32 %2
  %69 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %69, 8388608
  br i1 %or.cond, label %70, label %71

70:                                               ; preds = %64
  tail call void @__assert_fail(ptr noundef nonnull @.str.140, ptr noundef nonnull @.str.3, i32 noundef 6611, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

71:                                               ; preds = %64
  %72 = load i32, ptr %56, align 8, !tbaa !89
  %73 = getelementptr inbounds i8, ptr %65, i64 664
  %74 = load i32, ptr %73, align 8, !tbaa !90
  %.not388 = icmp eq i32 %74, %72
  %75 = getelementptr inbounds i8, ptr %44, i64 16360
  %76 = load i32, ptr %75, align 8, !tbaa !105
  %77 = icmp eq i32 %76, 0
  br i1 %77, label %78, label %81

78:                                               ; preds = %71
  %79 = getelementptr inbounds i8, ptr %44, i64 16257
  %80 = load i8, ptr %79, align 1, !tbaa !106, !range !86, !noundef !87
  br label %81

81:                                               ; preds = %78, %71
  %82 = phi i8 [ 0, %71 ], [ %80, %78 ]
  %83 = getelementptr inbounds i8, ptr %65, i64 243
  store i8 %82, ptr %83, align 1, !tbaa !107
  %84 = add nsw i32 %72, -1
  %85 = icmp slt i32 %74, %84
  %86 = and i32 %spec.select, 67108864
  %.not389 = icmp eq i32 %86, 0
  br i1 %.not389, label %101, label %87

87:                                               ; preds = %81
  %88 = getelementptr inbounds i8, ptr %44, i64 18920
  %89 = getelementptr inbounds i8, ptr %44, i64 18936
  %90 = load i32, ptr %89, align 8, !tbaa !108
  %91 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %88, i32 noundef %90)
  %92 = getelementptr inbounds i8, ptr %65, i64 260
  %93 = load i32, ptr %92, align 4, !tbaa !109
  %94 = load i32, ptr %91, align 8, !tbaa !110
  %95 = icmp ne i32 %93, %94
  %96 = getelementptr inbounds i8, ptr %91, i64 8
  %97 = load ptr, ptr %96, align 8, !tbaa !112
  %98 = icmp ne ptr %65, %97
  %99 = or i1 %95, %98
  %100 = or i1 %85, %99
  br label %101

101:                                              ; preds = %87, %81
  %.0340.in = phi i1 [ %100, %87 ], [ %85, %81 ]
  %102 = getelementptr inbounds i8, ptr %65, i64 241
  %103 = load i8, ptr %102, align 1, !tbaa !113, !range !86, !noundef !87
  %104 = trunc nuw i8 %103 to i1
  br i1 %.not388, label %122, label %105

105:                                              ; preds = %101
  tail call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef nonnull %65, i1 noundef zeroext %61, i32 noundef %spec.select)
  %106 = zext i1 %.0340.in to i8
  store i8 %106, ptr %102, align 1, !tbaa !113
  br i1 %.0340.in, label %107, label %108

107:                                              ; preds = %105
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %65, i32 noundef 8, i1 noundef zeroext true)
  br label %108

108:                                              ; preds = %107, %105
  %109 = getelementptr inbounds i8, ptr %65, i64 20
  %110 = load i32, ptr %109, align 4, !tbaa !114
  %111 = getelementptr inbounds i8, ptr %65, i64 24
  store i32 %110, ptr %111, align 8, !tbaa !115
  store i32 %spec.select, ptr %109, align 4, !tbaa !114
  store i32 %72, ptr %73, align 8, !tbaa !90
  %112 = getelementptr inbounds i8, ptr %44, i64 16232
  %113 = load double, ptr %112, align 8, !tbaa !116
  %114 = fptrunc double %113 to float
  %115 = getelementptr inbounds i8, ptr %65, i64 672
  store float %114, ptr %115, align 8, !tbaa !117
  %116 = getelementptr inbounds i8, ptr %65, i64 252
  store i16 0, ptr %116, align 4, !tbaa !118
  %117 = getelementptr inbounds i8, ptr %44, i64 16392
  %118 = load i32, ptr %117, align 8, !tbaa !119
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %117, align 8, !tbaa !119
  %120 = trunc i32 %118 to i16
  %121 = getelementptr inbounds i8, ptr %65, i64 254
  store i16 %120, ptr %121, align 2, !tbaa !120
  br label %125

122:                                              ; preds = %101
  %123 = getelementptr inbounds i8, ptr %65, i64 20
  %124 = load i32, ptr %123, align 4, !tbaa !114
  br label %125

125:                                              ; preds = %122, %108
  %.1 = phi i32 [ %spec.select, %108 ], [ %124, %122 ]
  %126 = getelementptr inbounds i8, ptr %65, i64 1096
  %127 = load ptr, ptr %126, align 8, !tbaa !121
  %128 = icmp eq ptr %127, null
  br i1 %128, label %.critedge2, label %129

129:                                              ; preds = %125
  %130 = getelementptr inbounds i8, ptr %65, i64 1104
  %131 = load ptr, ptr %130, align 8, !tbaa !122
  %132 = icmp eq ptr %131, null
  br i1 %132, label %.critedge2, label %133

133:                                              ; preds = %129
  tail call void @__assert_fail(ptr noundef nonnull @.str.141, ptr noundef nonnull @.str.3, i32 noundef 6648, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

.critedge2:                                       ; preds = %125, %129
  %134 = getelementptr inbounds i8, ptr %44, i64 18680
  %135 = load i32, ptr %134, align 8, !tbaa !123
  %136 = and i32 %135, 512
  %.not390 = icmp eq i32 %136, 0
  br i1 %.not390, label %142, label %137

137:                                              ; preds = %.critedge2
  %138 = getelementptr inbounds i8, ptr %44, i64 18784
  %139 = load i32, ptr %138, align 8, !tbaa !124
  %140 = getelementptr inbounds i8, ptr %44, i64 18696
  %141 = load i32, ptr %140, align 8, !tbaa !125
  tail call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef nonnull %65, i32 noundef %139, i32 noundef %141)
  br label %142

142:                                              ; preds = %137, %.critedge2
  br i1 %.not388, label %177, label %143

143:                                              ; preds = %142
  %144 = getelementptr inbounds i8, ptr %65, i64 1112
  %145 = load i32, ptr %144, align 8, !tbaa !126
  %.not391 = icmp eq i32 %145, 0
  br i1 %.not391, label %146, label %.thread.thread

146:                                              ; preds = %143
  %147 = load ptr, ptr %126, align 8, !tbaa !121
  %.not563 = icmp eq ptr %147, null
  br i1 %.not563, label %.thread, label %.thread.thread

.thread.thread:                                   ; preds = %146, %143
  %148 = getelementptr inbounds i8, ptr %65, i64 1069
  %149 = load i8, ptr %148, align 1
  br label %153

.thread:                                          ; preds = %146
  %150 = tail call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef nonnull %65)
  %151 = getelementptr inbounds i8, ptr %65, i64 1069
  %152 = load i8, ptr %151, align 1
  br i1 %150, label %153, label %175

153:                                              ; preds = %.thread.thread, %.thread
  %154 = phi i8 [ %149, %.thread.thread ], [ %152, %.thread ]
  %155 = phi ptr [ %148, %.thread.thread ], [ %151, %.thread ]
  tail call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef nonnull %65, ptr noundef %1)
  %156 = getelementptr inbounds i8, ptr %65, i64 20
  %157 = load i32, ptr %156, align 4, !tbaa !114
  %158 = load i8, ptr %155, align 1
  %159 = trunc i8 %158 to i1
  br i1 %159, label %160, label %166

160:                                              ; preds = %153
  %161 = load ptr, ptr %126, align 8, !tbaa !121
  %.not394 = icmp eq ptr %161, null
  br i1 %.not394, label %162, label %163

162:                                              ; preds = %160
  tail call void @__assert_fail(ptr noundef nonnull @.str.142, ptr noundef nonnull @.str.3, i32 noundef 6663, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

163:                                              ; preds = %160
  %164 = load i32, ptr %134, align 8, !tbaa !123
  %165 = and i32 %164, -17
  store i32 %165, ptr %134, align 8, !tbaa !123
  %.pre = load i8, ptr %155, align 1
  br label %166

166:                                              ; preds = %163, %153
  %167 = phi i8 [ %.pre, %163 ], [ %158, %153 ]
  %168 = and i8 %167, 4
  %.not395 = icmp eq i8 %168, 0
  %169 = and i8 %154, 6
  %170 = icmp ne i8 %169, 2
  %brmerge474 = select i1 %.not395, i1 true, i1 %170
  br i1 %brmerge474, label %177, label %171

171:                                              ; preds = %166
  %172 = load i8, ptr %102, align 1, !tbaa !113, !range !86, !noundef !87
  %173 = trunc nuw i8 %172 to i1
  %brmerge475 = select i1 %173, i1 true, i1 %104
  br i1 %brmerge475, label %177, label %174

174:                                              ; preds = %171
  store i8 1, ptr %102, align 1, !tbaa !113
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %65, i32 noundef 8, i1 noundef zeroext true)
  br label %177

175:                                              ; preds = %.thread
  %176 = and i8 %152, -8
  store i8 %176, ptr %151, align 1
  br label %177

177:                                              ; preds = %175, %174, %166, %171, %142
  %.3 = phi i32 [ %.1, %142 ], [ %157, %171 ], [ %157, %174 ], [ %157, %166 ], [ %.1, %175 ]
  %178 = getelementptr inbounds i8, ptr %65, i64 1069
  %179 = load i8, ptr %178, align 1
  %180 = trunc i8 %179 to i1
  br i1 %180, label %181, label %185

181:                                              ; preds = %177
  %182 = load ptr, ptr %126, align 8, !tbaa !121
  %183 = getelementptr inbounds i8, ptr %182, i64 136
  %184 = load ptr, ptr %183, align 8, !tbaa !127
  %.not396 = icmp eq ptr %184, null
  br i1 %.not396, label %185, label %190

185:                                              ; preds = %181, %177
  %186 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  br i1 %186, label %190, label %187

187:                                              ; preds = %185
  %188 = tail call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  %189 = load ptr, ptr %188, align 8, !tbaa !131
  br label %190

190:                                              ; preds = %181, %187, %185
  %191 = phi ptr [ %189, %187 ], [ null, %185 ], [ %184, %181 ]
  br i1 %.not388, label %195, label %192

192:                                              ; preds = %190
  %193 = and i32 %.3, 83886080
  %.not397 = icmp eq i32 %193, 0
  %194 = select i1 %.not397, ptr null, ptr %191
  br label %198

195:                                              ; preds = %190
  %196 = getelementptr inbounds i8, ptr %65, i64 936
  %197 = load ptr, ptr %196, align 8, !tbaa !134
  br label %198

198:                                              ; preds = %195, %192
  %199 = phi ptr [ %194, %192 ], [ %197, %195 ]
  %200 = icmp eq ptr %199, null
  %201 = and i32 %.3, 16777216
  %202 = icmp ne i32 %201, 0
  %.not399 = select i1 %200, i1 %202, i1 false
  br i1 %.not399, label %203, label %204

203:                                              ; preds = %198
  tail call void @__assert_fail(ptr noundef nonnull @.str.143, ptr noundef nonnull @.str.3, i32 noundef 6683, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

204:                                              ; preds = %198
  %205 = getelementptr inbounds i8, ptr %65, i64 296
  %206 = load i32, ptr %205, align 8, !tbaa !135
  %207 = icmp eq i32 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = getelementptr inbounds i8, ptr %65, i64 16
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %205, ptr noundef nonnull align 4 dereferenceable(4) %209)
  br label %210

210:                                              ; preds = %208, %204
  %211 = getelementptr inbounds i8, ptr %44, i64 16408
  store ptr %65, ptr %211, align 8, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %5) #14
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %5)
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %212, ptr %5, align 8, !tbaa !131
  %213 = getelementptr inbounds i8, ptr %44, i64 18616
  %214 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(60) %214, ptr noundef nonnull align 8 dereferenceable(60) %213, i64 60, i1 false), !tbaa.struct !137
  %215 = getelementptr inbounds i8, ptr %5, i64 68
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %215, ptr noundef nonnull %44)
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(86) %5)
  %216 = and i32 %.3, 268435456
  %.not400 = icmp eq i32 %216, 0
  br i1 %.not400, label %221, label %217

217:                                              ; preds = %210
  %218 = getelementptr inbounds i8, ptr %44, i64 18952
  %219 = load i32, ptr %218, align 8, !tbaa !140
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %218, align 8, !tbaa !140
  br label %221

221:                                              ; preds = %217, %210
  %.pre579 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not388, label %225, label %222

222:                                              ; preds = %221
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre579, i32 noundef %.3, ptr noundef %199)
  %223 = load ptr, ptr %4, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 944
  store ptr %191, ptr %224, align 8, !tbaa !141
  br label %225

225:                                              ; preds = %222, %221
  %226 = phi ptr [ %223, %222 ], [ %.pre579, %221 ]
  %227 = getelementptr inbounds i8, ptr %226, i64 16
  %228 = load i32, ptr %227, align 8, !tbaa !142
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %228)
  %229 = getelementptr inbounds i8, ptr %44, i64 18580
  %230 = load i32, ptr %229, align 4, !tbaa !143
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %231, i64 1056
  store i32 %230, ptr %232, align 8, !tbaa !144
  store ptr null, ptr %211, align 8, !tbaa !136
  %233 = and i32 %.3, 67108864
  %.not401 = icmp eq i32 %233, 0
  br i1 %.not401, label %247, label %234

234:                                              ; preds = %225
  %235 = getelementptr inbounds i8, ptr %44, i64 18920
  %236 = getelementptr inbounds i8, ptr %44, i64 18936
  %237 = load i32, ptr %236, align 8, !tbaa !108
  %238 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %235, i32 noundef %237)
  %239 = load ptr, ptr %4, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %238, i64 8
  store ptr %239, ptr %240, align 8, !tbaa !112
  %241 = getelementptr inbounds i8, ptr %191, i64 400
  %242 = load i32, ptr %241, align 8, !tbaa !145
  %243 = getelementptr inbounds i8, ptr %238, i64 24
  store i32 %242, ptr %243, align 8, !tbaa !146
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef nonnull align 8 dereferenceable(52) %238)
  %244 = load i32, ptr %238, align 8, !tbaa !110
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %245, i64 260
  store i32 %244, ptr %246, align 4, !tbaa !109
  br label %247

247:                                              ; preds = %234, %225
  %248 = phi ptr [ %245, %234 ], [ %231, %225 ]
  %249 = load i32, ptr %134, align 8, !tbaa !123
  %250 = and i32 %249, 1
  %.not402 = icmp eq i32 %250, 0
  br i1 %.not402, label %277, label %251

251:                                              ; preds = %247
  %252 = getelementptr inbounds i8, ptr %248, i64 276
  %253 = load i32, ptr %252, align 4
  %254 = shl i32 %253, 24
  %255 = ashr exact i32 %254, 24
  %256 = getelementptr inbounds i8, ptr %44, i64 18684
  %257 = load i32, ptr %256, align 4, !tbaa !147
  %258 = and i32 %255, %257
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %260, label %273

260:                                              ; preds = %251
  %261 = getelementptr inbounds i8, ptr %44, i64 18708
  %262 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %261)
  %263 = fcmp ogt float %262, 0x3EE4F8B580000000
  %.pre580 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %263, label %264, label %._crit_edge

._crit_edge:                                      ; preds = %260
  %.pre581 = load i32, ptr %256, align 4, !tbaa !147
  br label %273

264:                                              ; preds = %260
  %265 = getelementptr inbounds i8, ptr %44, i64 18700
  %266 = getelementptr inbounds i8, ptr %.pre580, i64 280
  %267 = load i64, ptr %265, align 4
  store i64 %267, ptr %266, align 8
  %268 = getelementptr inbounds i8, ptr %.pre580, i64 288
  %269 = load i64, ptr %261, align 4
  store i64 %269, ptr %268, align 8
  %270 = getelementptr inbounds i8, ptr %.pre580, i64 276
  %271 = load i32, ptr %270, align 4
  %272 = and i32 %271, -15
  store i32 %272, ptr %270, align 4
  br label %277

273:                                              ; preds = %._crit_edge, %251
  %274 = phi i32 [ %.pre581, %._crit_edge ], [ %257, %251 ]
  %275 = phi ptr [ %.pre580, %._crit_edge ], [ %248, %251 ]
  %276 = getelementptr inbounds i8, ptr %44, i64 18700
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %275, ptr noundef nonnull align 4 dereferenceable(8) %276, i32 noundef %274)
  br label %277

277:                                              ; preds = %264, %273, %247
  %.0341.shrunk = phi i1 [ true, %264 ], [ %259, %273 ], [ false, %247 ]
  %278 = load i32, ptr %134, align 8, !tbaa !123
  %279 = and i32 %278, 2
  %.not403 = icmp eq i32 %279, 0
  br i1 %.not403, label %299, label %280

280:                                              ; preds = %277
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 276
  %283 = load i32, ptr %282, align 4
  %284 = shl i32 %283, 16
  %285 = ashr i32 %284, 24
  %286 = getelementptr inbounds i8, ptr %44, i64 18688
  %287 = load i32, ptr %286, align 8, !tbaa !148
  %288 = and i32 %285, %287
  %.not404 = icmp eq i32 %288, 0
  br i1 %.not404, label %.thread535, label %289

289:                                              ; preds = %280
  %290 = getelementptr inbounds i8, ptr %44, i64 18716
  %291 = load float, ptr %290, align 4, !tbaa !149
  %292 = fcmp ogt float %291, 0.000000e+00
  %293 = getelementptr inbounds i8, ptr %44, i64 18720
  %294 = load float, ptr %293, align 4, !tbaa !150
  %295 = fcmp ogt float %294, 0.000000e+00
  br label %.thread535

.thread535:                                       ; preds = %280, %289
  %296 = phi i1 [ %292, %289 ], [ false, %280 ]
  %297 = phi i1 [ %295, %289 ], [ false, %280 ]
  %298 = getelementptr inbounds i8, ptr %44, i64 18716
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %281, ptr noundef nonnull align 4 dereferenceable(8) %298, i32 noundef %287)
  %.pre582 = load i32, ptr %134, align 8, !tbaa !123
  br label %299

299:                                              ; preds = %.thread535, %277
  %300 = phi i32 [ %.pre582, %.thread535 ], [ %278, %277 ]
  %.0343 = phi i1 [ %297, %.thread535 ], [ false, %277 ]
  %.0342 = phi i1 [ %296, %.thread535 ], [ false, %277 ]
  %301 = and i32 %300, 128
  %.not406 = icmp eq i32 %301, 0
  br i1 %.not406, label %318, label %302

302:                                              ; preds = %299
  %303 = getelementptr inbounds i8, ptr %44, i64 18732
  %304 = load float, ptr %303, align 4, !tbaa !151
  %305 = fcmp ult float %304, 0.000000e+00
  br i1 %305, label %310, label %306

306:                                              ; preds = %302
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i64 200
  store float %304, ptr %308, align 8, !tbaa !152
  %309 = getelementptr inbounds i8, ptr %307, i64 208
  store float 0.000000e+00, ptr %309, align 8, !tbaa !153
  br label %310

310:                                              ; preds = %306, %302
  %311 = getelementptr inbounds i8, ptr %44, i64 18736
  %312 = load float, ptr %311, align 4, !tbaa !154
  %313 = fcmp ult float %312, 0.000000e+00
  br i1 %313, label %318, label %314

314:                                              ; preds = %310
  %315 = load ptr, ptr %4, align 8, !tbaa !5
  %316 = getelementptr inbounds i8, ptr %315, i64 204
  store float %312, ptr %316, align 4, !tbaa !155
  %317 = getelementptr inbounds i8, ptr %315, i64 212
  store float 0.000000e+00, ptr %317, align 4, !tbaa !156
  br label %318

318:                                              ; preds = %310, %314, %299
  %319 = and i32 %300, 4
  %.not407 = icmp eq i32 %319, 0
  br i1 %.not407, label %325, label %320

320:                                              ; preds = %318
  %321 = getelementptr inbounds i8, ptr %44, i64 18724
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i64 120
  %324 = load i64, ptr %321, align 4
  store i64 %324, ptr %323, align 8
  br label %330

325:                                              ; preds = %318
  br i1 %.not388, label %._crit_edge635, label %326

._crit_edge635:                                   ; preds = %325
  %.pre586.pre631.pre.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %330

326:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %327, i64 120
  %329 = load i64, ptr %6, align 8
  store i64 %329, ptr %328, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %330

330:                                              ; preds = %._crit_edge635, %326, %320
  %.pre586.pre631.pre = phi ptr [ %.pre586.pre631.pre.pre, %._crit_edge635 ], [ %327, %326 ], [ %322, %320 ]
  %331 = load i32, ptr %134, align 8, !tbaa !123
  %332 = and i32 %331, 1024
  %.not408 = icmp eq i32 %332, 0
  br i1 %.not408, label %336, label %333

333:                                              ; preds = %330
  %334 = getelementptr inbounds i8, ptr %44, i64 18788
  %335 = getelementptr inbounds i8, ptr %.pre586.pre631.pre, i64 28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(26) %335, ptr noundef nonnull align 4 dereferenceable(26) %334, i64 26, i1 false), !tbaa.struct !157
  %.pre583 = load i32, ptr %134, align 8, !tbaa !123
  br label %336

336:                                              ; preds = %333, %330
  %337 = phi i32 [ %.pre583, %333 ], [ %331, %330 ]
  %338 = and i32 %337, 8
  %.not409 = icmp eq i32 %338, 0
  br i1 %.not409, label %345, label %339

339:                                              ; preds = %336
  %340 = getelementptr inbounds i8, ptr %44, i64 18741
  %341 = load i8, ptr %340, align 1, !tbaa !159, !range !86, !noundef !87
  %342 = trunc nuw i8 %341 to i1
  %343 = getelementptr inbounds i8, ptr %44, i64 18692
  %344 = load i32, ptr %343, align 4, !tbaa !160
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre586.pre631.pre, i1 noundef zeroext %342, i32 noundef %344)
  %.pre584 = load i32, ptr %134, align 8, !tbaa !123
  %.pre586.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %345

345:                                              ; preds = %339, %336
  %.pre586 = phi ptr [ %.pre586.pre, %339 ], [ %.pre586.pre631.pre, %336 ]
  %346 = phi i32 [ %.pre584, %339 ], [ %337, %336 ]
  %347 = and i32 %346, 32
  %.not410 = icmp eq i32 %347, 0
  br i1 %.not410, label %349, label %348

348:                                              ; preds = %345
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre586, i32 noundef 0)
  %.pre585 = load ptr, ptr %4, align 8, !tbaa !5
  br label %349

349:                                              ; preds = %348, %345
  %350 = phi ptr [ %.pre585, %348 ], [ %.pre586, %345 ]
  %351 = getelementptr inbounds i8, ptr %350, i64 241
  %352 = load i8, ptr %351, align 1, !tbaa !113, !range !86, !noundef !87
  %353 = trunc nuw i8 %352 to i1
  br i1 %353, label %354, label %355

354:                                              ; preds = %349
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %350, i32 noundef 8, i1 noundef zeroext false)
  br label %355

355:                                              ; preds = %354, %349
  br i1 %.not388, label %1613, label %356

356:                                              ; preds = %355
  %357 = and i32 %.3, 50331648
  %358 = icmp eq i32 %357, 50331648
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 273
  %361 = load i8, ptr %360, align 1, !tbaa !161
  %362 = icmp slt i8 %361, 1
  %363 = getelementptr inbounds i8, ptr %359, i64 235
  store i8 1, ptr %363, align 1, !tbaa !162
  %364 = icmp ne ptr %1, null
  %365 = getelementptr inbounds i8, ptr %359, i64 245
  %366 = zext i1 %364 to i8
  store i8 %366, ptr %365, align 1, !tbaa !163
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #14
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i64 624
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %368, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !164
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %369 = getelementptr inbounds i8, ptr %367, i64 296
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %369, i32 noundef 1)
  %370 = load ptr, ptr %4, align 8, !tbaa !5
  %371 = getelementptr inbounds i8, ptr %370, i64 728
  %372 = load ptr, ptr %371, align 8, !tbaa !165
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %372)
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  %374 = getelementptr inbounds i8, ptr %373, i64 488
  store i32 -1, ptr %374, align 8, !tbaa !166
  %375 = and i32 %.3, 536870912
  %.not411 = icmp eq i32 %375, 0
  br i1 %.not411, label %382, label %376

376:                                              ; preds = %356
  %377 = getelementptr inbounds i8, ptr %373, i64 728
  %378 = load ptr, ptr %377, align 8, !tbaa !165
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %378, i32 noundef 2)
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 728
  %381 = load ptr, ptr %380, align 8, !tbaa !165
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %381, i32 noundef 1)
  %.pre587 = load ptr, ptr %4, align 8, !tbaa !5
  br label %382

382:                                              ; preds = %376, %356
  %383 = phi ptr [ %.pre587, %376 ], [ %373, %356 ]
  %384 = getelementptr inbounds i8, ptr %383, i64 1068
  %385 = load i8, ptr %384, align 4, !tbaa !167, !range !86, !noundef !87
  %386 = trunc nuw i8 %385 to i1
  br i1 %386, label %387, label %388

387:                                              ; preds = %382
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %383)
  %.pre588 = load ptr, ptr %4, align 8, !tbaa !5
  br label %388

388:                                              ; preds = %387, %382
  %389 = phi ptr [ %.pre588, %387 ], [ %383, %382 ]
  %390 = getelementptr inbounds i8, ptr %389, i64 56
  %391 = load ptr, ptr %390, align 8, !tbaa !168
  %.not412 = icmp eq ptr %391, null
  br i1 %.not412, label %396, label %392

392:                                              ; preds = %388
  %393 = getelementptr inbounds i8, ptr %391, i64 96
  %394 = load ptr, ptr %393, align 8, !tbaa !169
  %395 = icmp eq ptr %394, %389
  br i1 %395, label %.critedge480, label %396

396:                                              ; preds = %392, %388
  %397 = getelementptr inbounds i8, ptr %389, i64 1069
  %398 = load i8, ptr %397, align 1
  %399 = trunc i8 %398 to i1
  br i1 %399, label %.critedge480, label %400

400:                                              ; preds = %396
  %401 = getelementptr inbounds i8, ptr %44, i64 19488
  %402 = load ptr, ptr %401, align 8, !tbaa !175
  %.not413 = icmp eq ptr %402, null
  br i1 %.not413, label %.critedge478, label %403

403:                                              ; preds = %400
  %404 = getelementptr inbounds i8, ptr %389, i64 20
  %405 = load i32, ptr %404, align 4, !tbaa !114
  %406 = and i32 %405, 524288
  %407 = icmp ne i32 %406, 0
  %brmerge481 = or i1 %61, %407
  br i1 %brmerge481, label %.critedge478, label %408

.critedge480:                                     ; preds = %392, %396
  br i1 %61, label %.critedge478, label %408

408:                                              ; preds = %403, %.critedge480
  %409 = getelementptr inbounds i8, ptr %389, i64 8
  %410 = load ptr, ptr %409, align 8, !tbaa !176
  %411 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %410) #15
  %.not414 = icmp eq i32 %411, 0
  br i1 %.not414, label %.critedge478, label %412

412:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %413 = getelementptr inbounds i8, ptr %389, i64 168
  %414 = load i32, ptr %413, align 8, !tbaa !177
  %415 = sext i32 %414 to i64
  store i64 %415, ptr %9, align 8, !tbaa !178
  %416 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %410, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds i8, ptr %417, i64 8
  store ptr %416, ptr %418, align 8, !tbaa !176
  %419 = load i64, ptr %9, align 8, !tbaa !178
  %420 = trunc i64 %419 to i32
  %421 = getelementptr inbounds i8, ptr %417, i64 168
  store i32 %420, ptr %421, align 8, !tbaa !177
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %.critedge478

.critedge478:                                     ; preds = %400, %403, %412, %408, %.critedge480
  %422 = phi ptr [ %389, %400 ], [ %389, %403 ], [ %417, %412 ], [ %389, %408 ], [ %389, %.critedge480 ]
  %423 = getelementptr inbounds i8, ptr %422, i64 104
  %424 = getelementptr inbounds i8, ptr %422, i64 112
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef nonnull %422, ptr noundef nonnull %423, ptr noundef nonnull %424)
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds i8, ptr %425, i64 272
  %427 = load i8, ptr %426, align 8, !tbaa !180
  %428 = icmp sgt i8 %427, 0
  br i1 %428, label %429, label %431

429:                                              ; preds = %.critedge478
  %430 = add nsw i8 %427, -1
  store i8 %430, ptr %426, align 8, !tbaa !180
  br label %431

431:                                              ; preds = %429, %.critedge478
  %432 = getelementptr inbounds i8, ptr %425, i64 273
  %433 = load i8, ptr %432, align 1, !tbaa !161
  %434 = icmp sgt i8 %433, 0
  br i1 %434, label %435, label %437

435:                                              ; preds = %431
  %436 = add nsw i8 %433, -1
  store i8 %436, ptr %432, align 1, !tbaa !161
  br label %437

437:                                              ; preds = %435, %431
  %438 = getelementptr inbounds i8, ptr %425, i64 274
  %439 = load i8, ptr %438, align 2, !tbaa !181
  %440 = icmp sgt i8 %439, 0
  br i1 %440, label %441, label %443

441:                                              ; preds = %437
  %442 = add nsw i8 %439, -1
  store i8 %442, ptr %438, align 2, !tbaa !181
  br label %443

443:                                              ; preds = %441, %437
  %.not577 = xor i1 %61, true
  %444 = select i1 %.0342, i1 %.0343, i1 false
  %or.cond578 = select i1 %.not577, i1 true, i1 %444
  br i1 %or.cond578, label %446, label %445

445:                                              ; preds = %443
  store i8 1, ptr %432, align 1, !tbaa !161
  br label %446

446:                                              ; preds = %445, %443
  %447 = and i32 %.3, 100663296
  %.not415 = icmp ne i32 %447, 0
  %or.cond483.not = select i1 %.0340.in, i1 %.not415, i1 false
  br i1 %or.cond483.not, label %448, label %463

448:                                              ; preds = %446
  store i8 1, ptr %432, align 1, !tbaa !161
  %449 = and i32 %.3, 64
  %.not416 = icmp eq i32 %449, 0
  br i1 %.not416, label %463, label %450

450:                                              ; preds = %448
  br i1 %.0342, label %454, label %451

451:                                              ; preds = %450
  %452 = getelementptr inbounds i8, ptr %425, i64 96
  store float 0.000000e+00, ptr %452, align 8, !tbaa !182
  %453 = getelementptr inbounds i8, ptr %425, i64 88
  store float 0.000000e+00, ptr %453, align 8, !tbaa !183
  br label %454

454:                                              ; preds = %451, %450
  br i1 %.0343, label %458, label %455

455:                                              ; preds = %454
  %456 = getelementptr inbounds i8, ptr %425, i64 100
  store float 0.000000e+00, ptr %456, align 4, !tbaa !184
  %457 = getelementptr inbounds i8, ptr %425, i64 92
  store float 0.000000e+00, ptr %457, align 4, !tbaa !185
  br label %458

458:                                              ; preds = %455, %454
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds i8, ptr %459, i64 112
  %461 = load i64, ptr %10, align 8
  store i64 %461, ptr %460, align 8
  %462 = getelementptr inbounds i8, ptr %459, i64 104
  store i64 %461, ptr %462, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %463

463:                                              ; preds = %448, %458, %446
  %464 = phi ptr [ %425, %448 ], [ %459, %458 ], [ %425, %446 ]
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef nonnull %464)
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds i8, ptr %465, i64 56
  %467 = load ptr, ptr %466, align 8, !tbaa !168
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %465, ptr noundef %467)
  %468 = getelementptr inbounds i8, ptr %44, i64 8
  %469 = load i32, ptr %468, align 8, !tbaa !186
  %470 = and i32 %469, 32768
  %.not417 = icmp eq i32 %470, 0
  %.pre589 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not417, label %476, label %471

471:                                              ; preds = %463
  %472 = getelementptr inbounds i8, ptr %.pre589, i64 56
  %473 = load ptr, ptr %472, align 8, !tbaa !168
  %474 = getelementptr inbounds i8, ptr %473, i64 40
  %475 = load float, ptr %474, align 8, !tbaa !187
  br label %476

476:                                              ; preds = %463, %471
  %477 = phi float [ %475, %471 ], [ 1.000000e+00, %463 ]
  %478 = getelementptr inbounds i8, ptr %.pre589, i64 716
  store float %477, ptr %478, align 4, !tbaa !188
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre589)
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds i8, ptr %479, i64 20
  %481 = load i32, ptr %480, align 4, !tbaa !114
  %482 = getelementptr inbounds i8, ptr %479, i64 1069
  %483 = load i8, ptr %482, align 1
  %484 = trunc i8 %483 to i1
  %485 = and i32 %481, 16777216
  %.not418 = icmp eq i32 %485, 0
  %or.cond484 = select i1 %484, i1 true, i1 %.not418
  br i1 %or.cond484, label %486, label %489

486:                                              ; preds = %476
  %487 = and i32 %481, 100663296
  %.not419 = icmp ne i32 %487, 0
  %488 = and i32 %481, 134217728
  %.not420 = icmp eq i32 %488, 0
  %or.cond485 = and i1 %.not419, %.not420
  %.in.v = select i1 %or.cond485, i64 14608, i64 14572
  br label %489

489:                                              ; preds = %476, %486
  %.in.v.sink = phi i64 [ %.in.v, %486 ], [ 14600, %476 ]
  %.in = getelementptr inbounds i8, ptr %44, i64 %.in.v.sink
  %490 = load float, ptr %.in, align 4, !tbaa !139
  %491 = getelementptr inbounds i8, ptr %479, i64 140
  store float %490, ptr %491, align 4
  %492 = and i32 %481, 83951616
  %493 = icmp eq i32 %492, 16777216
  %not. = xor i1 %484, true
  %or.cond487.not = select i1 %not., i1 %493, i1 false
  %494 = fcmp oeq float %490, 0.000000e+00
  %or.cond649 = select i1 %or.cond487.not, i1 %494, i1 false
  br i1 %or.cond649, label %495, label %505

495:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #14
  %496 = and i32 %481, 1024
  %.not423 = icmp eq i32 %496, 0
  br i1 %.not423, label %500, label %497

497:                                              ; preds = %495
  %498 = getelementptr inbounds i8, ptr %44, i64 14564
  %499 = load float, ptr %498, align 4, !tbaa !189
  br label %500

500:                                              ; preds = %495, %497
  %501 = phi float [ %499, %497 ], [ 0.000000e+00, %495 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %501)
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = getelementptr inbounds i8, ptr %502, i64 128
  %504 = load i64, ptr %11, align 8
  store i64 %504, ptr %503, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #14
  br label %509

505:                                              ; preds = %489
  %506 = getelementptr inbounds i8, ptr %44, i64 14560
  %507 = getelementptr inbounds i8, ptr %479, i64 128
  %508 = load i64, ptr %506, align 4
  store i64 %508, ptr %507, align 8
  br label %509

509:                                              ; preds = %505, %500
  %.in641.in = phi i64 [ %508, %505 ], [ %504, %500 ]
  %.in641 = trunc i64 %.in641.in to i32
  %510 = bitcast i32 %.in641 to float
  %511 = getelementptr inbounds i8, ptr %44, i64 14628
  %512 = load float, ptr %511, align 4, !tbaa !190
  %513 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %510, float noundef %512)
  %514 = getelementptr inbounds i8, ptr %44, i64 18816
  %515 = load float, ptr %514, align 8, !tbaa !191
  %516 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %513, float noundef %515)
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %517, i64 412
  store float %516, ptr %518, align 4, !tbaa !192
  %519 = getelementptr inbounds i8, ptr %44, i64 18820
  %520 = load float, ptr %519, align 4, !tbaa !193
  %521 = getelementptr inbounds i8, ptr %517, i64 416
  store float %520, ptr %521, align 4, !tbaa !194
  %522 = and i32 %481, 1
  %.not424 = icmp eq i32 %522, 0
  %523 = and i32 %481, 33
  %or.cond488 = icmp eq i32 %523, 0
  br i1 %or.cond488, label %524, label %563

524:                                              ; preds = %509
  %525 = getelementptr inbounds i8, ptr %517, i64 1069
  %526 = load i8, ptr %525, align 1
  %527 = trunc i8 %526 to i1
  br i1 %527, label %563, label %528

528:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #14
  %529 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %517)
  %530 = extractvalue { <2 x float>, <2 x float> } %529, 0
  store <2 x float> %530, ptr %12, align 8
  %531 = getelementptr inbounds i8, ptr %12, i64 8
  %532 = extractvalue { <2 x float>, <2 x float> } %529, 1
  store <2 x float> %532, ptr %531, align 8
  %533 = getelementptr inbounds i8, ptr %44, i64 16416
  %534 = load ptr, ptr %533, align 8, !tbaa !195
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = icmp eq ptr %534, %535
  br i1 %536, label %537, label %553

537:                                              ; preds = %528
  %538 = getelementptr inbounds i8, ptr %44, i64 16484
  %539 = load i32, ptr %538, align 4, !tbaa !196
  %540 = icmp eq i32 %539, 0
  br i1 %540, label %541, label %553

541:                                              ; preds = %537
  %542 = getelementptr inbounds i8, ptr %44, i64 16488
  %543 = load i32, ptr %542, align 8, !tbaa !197
  %544 = icmp eq i32 %543, 0
  br i1 %544, label %545, label %553

545:                                              ; preds = %541
  %546 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %531, i1 noundef zeroext true)
  br i1 %546, label %547, label %._crit_edge590

._crit_edge590:                                   ; preds = %545
  %.pre591 = load ptr, ptr %4, align 8, !tbaa !5
  br label %553

547:                                              ; preds = %545
  %548 = getelementptr inbounds i8, ptr %44, i64 14170
  %549 = load i16, ptr %548, align 2, !tbaa !198
  %550 = icmp eq i16 %549, 2
  %.pre592 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %550, label %551, label %553

551:                                              ; preds = %547
  %552 = getelementptr inbounds i8, ptr %.pre592, i64 239
  store i8 1, ptr %552, align 1, !tbaa !199
  br label %553

553:                                              ; preds = %._crit_edge590, %551, %547, %541, %537, %528
  %554 = phi ptr [ %.pre591, %._crit_edge590 ], [ %.pre592, %551 ], [ %.pre592, %547 ], [ %535, %541 ], [ %535, %537 ], [ %535, %528 ]
  %555 = getelementptr inbounds i8, ptr %554, i64 239
  %556 = load i8, ptr %555, align 1, !tbaa !199, !range !86, !noundef !87
  %557 = trunc nuw i8 %556 to i1
  br i1 %557, label %558, label %562

558:                                              ; preds = %553
  %559 = getelementptr inbounds i8, ptr %554, i64 238
  %560 = load i8, ptr %559, align 2, !tbaa !200, !range !86, !noundef !87
  %561 = xor i8 %560, 1
  store i8 %561, ptr %559, align 2, !tbaa !200
  %.not564.not = icmp ne i8 %560, 0
  %spec.select489 = or i1 %.not564.not, %61
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %554)
  %.pre593.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %562

562:                                              ; preds = %558, %553
  %.pre593 = phi ptr [ %.pre593.pre, %558 ], [ %554, %553 ]
  %.1350 = phi i1 [ %spec.select489, %558 ], [ %61, %553 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #14
  br label %565

563:                                              ; preds = %524, %509
  %564 = getelementptr inbounds i8, ptr %517, i64 238
  store i8 0, ptr %564, align 2, !tbaa !200
  br label %565

565:                                              ; preds = %563, %562
  %566 = phi ptr [ %517, %563 ], [ %.pre593, %562 ]
  %.2351 = phi i1 [ %61, %563 ], [ %.1350, %562 ]
  %567 = getelementptr inbounds i8, ptr %566, i64 239
  store i8 0, ptr %567, align 1, !tbaa !199
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  %568 = getelementptr inbounds i8, ptr %566, i64 224
  %569 = load i64, ptr %568, align 8
  store i64 %569, ptr %13, align 8
  %570 = getelementptr inbounds i8, ptr %566, i64 144
  store float 0.000000e+00, ptr %570, align 8, !tbaa !201
  %571 = getelementptr inbounds i8, ptr %566, i64 152
  store float 0.000000e+00, ptr %571, align 8, !tbaa !202
  %572 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %566)
  %573 = load ptr, ptr %4, align 8, !tbaa !5
  %574 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %573)
  %575 = fadd float %572, %574
  %576 = load ptr, ptr %4, align 8, !tbaa !5
  %577 = getelementptr inbounds i8, ptr %576, i64 148
  store float %575, ptr %577, align 4, !tbaa !203
  %578 = getelementptr inbounds i8, ptr %576, i64 156
  store float 0.000000e+00, ptr %578, align 4, !tbaa !204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds i8, ptr %579, i64 224
  %581 = load i64, ptr %14, align 8
  store i64 %581, ptr %580, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %582 = getelementptr inbounds i8, ptr %579, i64 112
  %583 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %579, ptr noundef nonnull align 4 dereferenceable(8) %582)
  store <2 x float> %583, ptr %15, align 8
  %584 = and i32 %481, 64
  %.not426.not = icmp eq i32 %584, 0
  %585 = extractelement <2 x float> %583, i64 0
  %586 = extractelement <2 x float> %583, i64 1
  %.pre594 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not426.not, label %597, label %587

587:                                              ; preds = %565
  %588 = getelementptr inbounds i8, ptr %.pre594, i64 238
  %589 = load i8, ptr %588, align 2, !tbaa !200, !range !86, !noundef !87
  %590 = trunc nuw i8 %589 to i1
  br i1 %590, label %597, label %591

591:                                              ; preds = %587
  br i1 %.0342, label %594, label %592

592:                                              ; preds = %591
  %593 = getelementptr inbounds i8, ptr %.pre594, i64 96
  store float %585, ptr %593, align 8, !tbaa !182
  br label %594

594:                                              ; preds = %592, %591
  %.0345 = phi i1 [ %61, %591 ], [ true, %592 ]
  br i1 %.0343, label %646, label %595

595:                                              ; preds = %594
  %596 = getelementptr inbounds i8, ptr %.pre594, i64 100
  store float %586, ptr %596, align 4, !tbaa !184
  br label %646

597:                                              ; preds = %587, %565
  %598 = getelementptr inbounds i8, ptr %.pre594, i64 264
  %599 = load i8, ptr %598, align 8, !tbaa !205
  %600 = icmp sgt i8 %599, 0
  br i1 %600, label %605, label %601

601:                                              ; preds = %597
  %602 = getelementptr inbounds i8, ptr %.pre594, i64 265
  %603 = load i8, ptr %602, align 1, !tbaa !206
  %604 = icmp sgt i8 %603, 0
  br i1 %604, label %.thread537, label %646

605:                                              ; preds = %597
  br i1 %.0342, label %.thread537, label %606

606:                                              ; preds = %605
  %607 = getelementptr inbounds i8, ptr %.pre594, i64 267
  %608 = load i8, ptr %607, align 1, !tbaa !207, !range !86, !noundef !87
  %609 = trunc nuw i8 %608 to i1
  br i1 %609, label %610, label %614

610:                                              ; preds = %606
  %611 = getelementptr inbounds i8, ptr %.pre594, i64 96
  %612 = load float, ptr %611, align 8, !tbaa !182
  %613 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %612, float noundef %585)
  %.pre595 = load ptr, ptr %4, align 8, !tbaa !5
  br label %614

614:                                              ; preds = %606, %610
  %615 = phi ptr [ %.pre595, %610 ], [ %.pre594, %606 ]
  %616 = phi float [ %613, %610 ], [ %585, %606 ]
  %617 = getelementptr inbounds i8, ptr %615, i64 96
  store float %616, ptr %617, align 8, !tbaa !182
  br label %.thread537

.thread537:                                       ; preds = %601, %614, %605
  %618 = phi ptr [ %.pre594, %605 ], [ %615, %614 ], [ %.pre594, %601 ]
  %.1346 = phi i1 [ %61, %605 ], [ true, %614 ], [ %61, %601 ]
  br i1 %.0343, label %640, label %619

619:                                              ; preds = %.thread537
  %620 = getelementptr inbounds i8, ptr %618, i64 265
  %621 = load i8, ptr %620, align 1, !tbaa !206
  %622 = icmp sgt i8 %621, 0
  br i1 %622, label %623, label %640

623:                                              ; preds = %619
  %624 = getelementptr inbounds i8, ptr %618, i64 267
  %625 = load i8, ptr %624, align 1, !tbaa !207, !range !86, !noundef !87
  %626 = trunc nuw i8 %625 to i1
  br i1 %626, label %627, label %633

627:                                              ; preds = %623
  %628 = getelementptr inbounds i8, ptr %618, i64 100
  %629 = load float, ptr %628, align 4, !tbaa !184
  %630 = getelementptr inbounds i8, ptr %15, i64 4
  %631 = load float, ptr %630, align 4, !tbaa !208
  %632 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %629, float noundef %631)
  %.pre596 = load ptr, ptr %4, align 8, !tbaa !5
  br label %636

633:                                              ; preds = %623
  %634 = getelementptr inbounds i8, ptr %15, i64 4
  %635 = load float, ptr %634, align 4, !tbaa !208
  br label %636

636:                                              ; preds = %633, %627
  %637 = phi ptr [ %.pre596, %627 ], [ %618, %633 ]
  %638 = phi float [ %632, %627 ], [ %635, %633 ]
  %639 = getelementptr inbounds i8, ptr %637, i64 100
  store float %638, ptr %639, align 4, !tbaa !184
  br label %640

640:                                              ; preds = %636, %619, %.thread537
  %641 = phi ptr [ %618, %.thread537 ], [ %637, %636 ], [ %618, %619 ]
  %.3352 = phi i1 [ %.2351, %.thread537 ], [ true, %636 ], [ %.2351, %619 ]
  %642 = getelementptr inbounds i8, ptr %641, i64 238
  %643 = load i8, ptr %642, align 2, !tbaa !200, !range !86, !noundef !87
  %644 = trunc nuw i8 %643 to i1
  br i1 %644, label %646, label %645

645:                                              ; preds = %640
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %641)
  %.pre597 = load ptr, ptr %4, align 8, !tbaa !5
  br label %646

646:                                              ; preds = %601, %645, %640, %594, %595
  %647 = phi ptr [ %641, %640 ], [ %.pre597, %645 ], [ %.pre594, %601 ], [ %.pre594, %594 ], [ %.pre594, %595 ]
  %.4353 = phi i1 [ %.3352, %640 ], [ %.3352, %645 ], [ %.2351, %601 ], [ %.2351, %594 ], [ true, %595 ]
  %.2347 = phi i1 [ %.1346, %640 ], [ %.1346, %645 ], [ %61, %601 ], [ %.0345, %594 ], [ %.0345, %595 ]
  %648 = getelementptr inbounds i8, ptr %647, i64 96
  %649 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %647, ptr noundef nonnull align 4 dereferenceable(8) %648)
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds i8, ptr %650, i64 96
  store <2 x float> %649, ptr %651, align 8
  %652 = getelementptr inbounds i8, ptr %650, i64 238
  %653 = load i8, ptr %652, align 2, !tbaa !200, !range !86, !noundef !87
  %654 = trunc nuw i8 %653 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #14
  %or.cond490 = select i1 %654, i1 %.not418, i1 false
  br i1 %or.cond490, label %655, label %661

655:                                              ; preds = %646
  %656 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %650)
  %657 = extractvalue { <2 x float>, <2 x float> } %656, 0
  store <2 x float> %657, ptr %16, align 8
  %658 = getelementptr inbounds i8, ptr %16, i64 8
  %659 = extractvalue { <2 x float>, <2 x float> } %656, 1
  store <2 x float> %659, ptr %658, align 8
  %660 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre598 = load ptr, ptr %4, align 8, !tbaa !5
  br label %661

661:                                              ; preds = %646, %655
  %662 = phi ptr [ %.pre598, %655 ], [ %650, %646 ]
  %.sroa.056.0 = phi <2 x float> [ %660, %655 ], [ %649, %646 ]
  %663 = getelementptr inbounds i8, ptr %662, i64 88
  store <2 x float> %.sroa.056.0, ptr %663, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #14
  br i1 %.0340.in, label %664, label %674

664:                                              ; preds = %661
  %665 = getelementptr inbounds i8, ptr %662, i64 268
  store i32 -1, ptr %665, align 4, !tbaa !209
  %666 = and i32 %481, 201326592
  %or.cond491 = icmp ne i32 %666, 67108864
  %brmerge492 = or i1 %.0341.shrunk, %or.cond491
  br i1 %brmerge492, label %674, label %667

667:                                              ; preds = %664
  %668 = getelementptr inbounds i8, ptr %44, i64 18936
  %669 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %668)
  %670 = getelementptr inbounds i8, ptr %669, i64 36
  %671 = load ptr, ptr %4, align 8, !tbaa !5
  %672 = getelementptr inbounds i8, ptr %671, i64 80
  %673 = load i64, ptr %670, align 4
  store i64 %673, ptr %672, align 8
  br label %674

674:                                              ; preds = %664, %667, %661
  %675 = phi ptr [ %662, %664 ], [ %671, %667 ], [ %662, %661 ]
  br i1 %.not418, label %691, label %676

676:                                              ; preds = %674
  br i1 %200, label %.critedge4, label %677

677:                                              ; preds = %676
  %678 = getelementptr inbounds i8, ptr %199, i64 235
  %679 = load i8, ptr %678, align 1, !tbaa !162, !range !86, !noundef !87
  %680 = trunc nuw i8 %679 to i1
  br i1 %680, label %681, label %.critedge4

.critedge4:                                       ; preds = %676, %677
  call void @__assert_fail(ptr noundef nonnull @.str.144, ptr noundef nonnull @.str.3, i32 noundef 6956, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

681:                                              ; preds = %677
  %682 = getelementptr inbounds i8, ptr %199, i64 456
  %683 = load i32, ptr %682, align 8, !tbaa !210
  %684 = trunc i32 %683 to i16
  %685 = getelementptr inbounds i8, ptr %675, i64 252
  store i16 %684, ptr %685, align 4, !tbaa !118
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %682, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %686 = and i32 %481, 67108864
  %.not431 = icmp ne i32 %686, 0
  %brmerge493 = or i1 %.0341.shrunk, %.not431
  %brmerge494 = select i1 %brmerge493, i1 true, i1 %358
  %.pre599 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge494, label %691, label %687

687:                                              ; preds = %681
  %688 = getelementptr inbounds i8, ptr %199, i64 312
  %689 = getelementptr inbounds i8, ptr %.pre599, i64 80
  %690 = load i64, ptr %688, align 8
  store i64 %690, ptr %689, align 8
  br label %691

691:                                              ; preds = %681, %687, %674
  %692 = phi ptr [ %.pre599, %681 ], [ %.pre599, %687 ], [ %675, %674 ]
  %693 = getelementptr inbounds i8, ptr %692, i64 280
  %694 = load float, ptr %693, align 8, !tbaa !211
  %695 = fcmp une float %694, 0x47EFFFFFE0000000
  br i1 %695, label %696, label %.critedge496

696:                                              ; preds = %691
  %697 = getelementptr inbounds i8, ptr %692, i64 273
  %698 = load i8, ptr %697, align 1, !tbaa !161
  %699 = icmp eq i8 %698, 0
  br i1 %699, label %700, label %.critedge496

700:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %701 = getelementptr inbounds i8, ptr %692, i64 88
  %702 = getelementptr inbounds i8, ptr %692, i64 288
  %703 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %701, ptr noundef nonnull align 4 dereferenceable(8) %702)
  store <2 x float> %703, ptr %18, align 8
  %704 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %693, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %704, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %692, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  %.pre600 = load ptr, ptr %4, align 8, !tbaa !5
  br label %722

.critedge496:                                     ; preds = %691, %696
  %705 = and i32 %481, 268435456
  %.not432 = icmp eq i32 %705, 0
  br i1 %.not432, label %710, label %706

706:                                              ; preds = %.critedge496
  %707 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %692)
  %708 = load ptr, ptr %4, align 8, !tbaa !5
  %709 = getelementptr inbounds i8, ptr %708, i64 80
  store <2 x float> %707, ptr %709, align 8
  br label %722

710:                                              ; preds = %.critedge496
  %711 = and i32 %481, 67108864
  %.not433 = icmp eq i32 %711, 0
  %brmerge497 = or i1 %.0341.shrunk, %.not433
  %brmerge499 = select i1 %brmerge497, i1 true, i1 %362
  br i1 %brmerge499, label %716, label %712

712:                                              ; preds = %710
  %713 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %692)
  %714 = load ptr, ptr %4, align 8, !tbaa !5
  %715 = getelementptr inbounds i8, ptr %714, i64 80
  store <2 x float> %713, ptr %715, align 8
  br label %722

716:                                              ; preds = %710
  %717 = and i32 %481, 33554432
  %.not434 = icmp eq i32 %717, 0
  %brmerge500 = or i1 %.0341.shrunk, %.not434
  %brmerge501 = select i1 %brmerge500, i1 true, i1 %358
  br i1 %brmerge501, label %722, label %718

718:                                              ; preds = %716
  %719 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %692)
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 80
  store <2 x float> %719, ptr %721, align 8
  br label %722

722:                                              ; preds = %716, %706, %718, %712, %700
  %723 = phi ptr [ %692, %716 ], [ %708, %706 ], [ %720, %718 ], [ %714, %712 ], [ %.pre600, %700 ]
  %724 = getelementptr inbounds i8, ptr %723, i64 76
  %725 = load i32, ptr %724, align 4, !tbaa !212
  %726 = icmp sgt i32 %725, -1
  br i1 %726, label %727, label %766

727:                                              ; preds = %722
  %728 = getelementptr inbounds i8, ptr %723, i64 234
  %729 = load i8, ptr %728, align 2, !tbaa !213, !range !86, !noundef !87
  %730 = trunc nuw i8 %729 to i1
  br i1 %730, label %766, label %731

731:                                              ; preds = %727
  %732 = getelementptr inbounds i8, ptr %723, i64 56
  %733 = load ptr, ptr %732, align 8, !tbaa !168
  %734 = getelementptr inbounds i8, ptr %733, i64 4
  %735 = load i32, ptr %734, align 4, !tbaa !214
  %736 = and i32 %735, 4096
  %.not435 = icmp eq i32 %736, 0
  br i1 %.not435, label %737, label %766

737:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #14
  %738 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %733)
  %739 = extractvalue { <2 x float>, <2 x float> } %738, 0
  store <2 x float> %739, ptr %19, align 8
  %740 = getelementptr inbounds i8, ptr %19, i64 8
  %741 = extractvalue { <2 x float>, <2 x float> } %738, 1
  store <2 x float> %741, ptr %740, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #14
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %742)
  %744 = extractvalue { <2 x float>, <2 x float> } %743, 0
  store <2 x float> %744, ptr %20, align 8
  %745 = getelementptr inbounds i8, ptr %20, i64 8
  %746 = extractvalue { <2 x float>, <2 x float> } %743, 1
  store <2 x float> %746, ptr %745, align 8
  %747 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %19, ptr noundef nonnull align 4 dereferenceable(16) %20)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #14
  %.pre603 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %747, label %766, label %748

748:                                              ; preds = %737
  %749 = getelementptr inbounds i8, ptr %.pre603, i64 16
  %750 = load i32, ptr %749, align 8, !tbaa !142
  %751 = getelementptr inbounds i8, ptr %.pre603, i64 80
  %752 = getelementptr inbounds i8, ptr %.pre603, i64 88
  %753 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %.pre603, i32 noundef %750, ptr noundef nonnull align 4 dereferenceable(8) %751, ptr noundef nonnull align 4 dereferenceable(8) %752, i32 noundef 32)
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds i8, ptr %754, i64 56
  store ptr %753, ptr %755, align 8, !tbaa !168
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %754, ptr noundef %753)
  %756 = load i32, ptr %468, align 8, !tbaa !186
  %757 = and i32 %756, 32768
  %.not436 = icmp eq i32 %757, 0
  %.pre601 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not436, label %763, label %758

758:                                              ; preds = %748
  %759 = getelementptr inbounds i8, ptr %.pre601, i64 56
  %760 = load ptr, ptr %759, align 8, !tbaa !168
  %761 = getelementptr inbounds i8, ptr %760, i64 40
  %762 = load float, ptr %761, align 8, !tbaa !187
  br label %763

763:                                              ; preds = %748, %758
  %764 = phi float [ %762, %758 ], [ 1.000000e+00, %748 ]
  %765 = getelementptr inbounds i8, ptr %.pre601, i64 716
  store float %764, ptr %765, align 4, !tbaa !188
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre601)
  %.pre602 = load ptr, ptr %4, align 8, !tbaa !5
  br label %766

766:                                              ; preds = %737, %763, %731, %727, %722
  %767 = phi ptr [ %.pre603, %737 ], [ %.pre602, %763 ], [ %723, %731 ], [ %723, %727 ], [ %723, %722 ]
  %768 = getelementptr inbounds i8, ptr %767, i64 234
  %769 = load i8, ptr %768, align 2, !tbaa !213, !range !86, !noundef !87
  %770 = trunc nuw i8 %769 to i1
  br i1 %770, label %771, label %772

771:                                              ; preds = %766
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef nonnull %767, ptr noundef %191)
  %.pre604 = load ptr, ptr %4, align 8, !tbaa !5
  br label %772

772:                                              ; preds = %771, %766
  %773 = phi ptr [ %.pre604, %771 ], [ %767, %766 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #14
  %774 = getelementptr inbounds i8, ptr %773, i64 56
  %775 = load ptr, ptr %774, align 8, !tbaa !168
  %776 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %775)
  %777 = extractvalue { <2 x float>, <2 x float> } %776, 0
  store <2 x float> %777, ptr %21, align 8
  %778 = getelementptr inbounds i8, ptr %21, i64 8
  %779 = extractvalue { <2 x float>, <2 x float> } %776, 1
  store <2 x float> %779, ptr %778, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #14
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = getelementptr inbounds i8, ptr %780, i64 56
  %782 = load ptr, ptr %781, align 8, !tbaa !168
  %783 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %782)
  %784 = extractvalue { <2 x float>, <2 x float> } %783, 0
  store <2 x float> %784, ptr %22, align 8
  %785 = getelementptr inbounds i8, ptr %22, i64 8
  %786 = extractvalue { <2 x float>, <2 x float> } %783, 1
  store <2 x float> %786, ptr %785, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  %787 = getelementptr inbounds i8, ptr %44, i64 14740
  %788 = getelementptr inbounds i8, ptr %44, i64 14748
  %789 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %787, ptr noundef nonnull align 4 dereferenceable(8) %788)
  store <2 x float> %789, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %790 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %790, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #14
  %791 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %785, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %791, ptr %26, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #14
  %.not430.not = xor i1 %.not418, true
  %brmerge502 = or i1 %.0341.shrunk, %.not430.not
  br i1 %brmerge502, label %823, label %792

792:                                              ; preds = %772
  %793 = load ptr, ptr %4, align 8, !tbaa !5
  %794 = getelementptr inbounds i8, ptr %793, i64 234
  %795 = load i8, ptr %794, align 2, !tbaa !213, !range !86, !noundef !87
  %796 = trunc nuw i8 %795 to i1
  br i1 %796, label %803, label %797

797:                                              ; preds = %792
  %798 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %799 = fcmp ogt float %798, 0.000000e+00
  br i1 %799, label %800, label %._crit_edge605

._crit_edge605:                                   ; preds = %797
  %.pre606 = load ptr, ptr %4, align 8, !tbaa !5
  br label %803

800:                                              ; preds = %797
  %801 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %802 = fcmp ogt float %801, 0.000000e+00
  %.pre607 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %802, label %.sink.split, label %803

803:                                              ; preds = %._crit_edge605, %800, %792
  %804 = phi ptr [ %.pre606, %._crit_edge605 ], [ %.pre607, %800 ], [ %793, %792 ]
  %805 = getelementptr inbounds i8, ptr %804, i64 234
  %806 = load i8, ptr %805, align 2, !tbaa !213, !range !86, !noundef !87
  %807 = trunc nuw i8 %806 to i1
  br i1 %807, label %808, label %823

808:                                              ; preds = %803
  %809 = getelementptr inbounds i8, ptr %44, i64 14520
  %810 = load i32, ptr %809, align 8, !tbaa !215
  %811 = icmp sgt i32 %810, 0
  br i1 %811, label %812, label %823

812:                                              ; preds = %808
  %813 = getelementptr inbounds i8, ptr %804, i64 56
  %814 = load ptr, ptr %813, align 8, !tbaa !168
  %815 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %814)
  %816 = getelementptr inbounds i8, ptr %815, i64 16
  %817 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %816, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %817, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  %818 = getelementptr inbounds i8, ptr %815, i64 24
  %819 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %816, ptr noundef nonnull align 4 dereferenceable(8) %818)
  store <2 x float> %819, ptr %27, align 8
  %820 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %23)
  %821 = getelementptr inbounds i8, ptr %24, i64 8
  store <2 x float> %820, ptr %821, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %800, %812
  %.pre607.sink = phi ptr [ %822, %812 ], [ %.pre607, %800 ]
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %.pre607.sink, ptr noundef nonnull align 4 dereferenceable(16) %24)
  br label %823

823:                                              ; preds = %.sink.split, %772, %808, %803
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds i8, ptr %824, i64 80
  %826 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %825)
  %827 = load ptr, ptr %4, align 8, !tbaa !5
  %828 = getelementptr inbounds i8, ptr %827, i64 80
  store <2 x float> %826, ptr %828, align 8
  %829 = getelementptr inbounds i8, ptr %827, i64 234
  %830 = load i8, ptr %829, align 2, !tbaa !213, !range !86, !noundef !87
  %831 = trunc nuw i8 %830 to i1
  br i1 %831, label %840, label %832

832:                                              ; preds = %823
  %833 = getelementptr inbounds i8, ptr %827, i64 1069
  %834 = load i8, ptr %833, align 1
  %835 = trunc i8 %834 to i1
  br i1 %835, label %840, label %836

836:                                              ; preds = %832
  %837 = and i32 %481, 201326592
  %or.cond503 = icmp eq i32 %837, 67108864
  %. = select i1 %or.cond503, i64 14604, i64 14568
  %.sink = select i1 %.not418, i64 %., i64 14596
  %838 = getelementptr inbounds i8, ptr %44, i64 %.sink
  %839 = load float, ptr %838, align 4, !tbaa !139
  br label %840

840:                                              ; preds = %823, %832, %836
  %.sink650 = phi float [ %839, %836 ], [ 0.000000e+00, %832 ], [ 0.000000e+00, %823 ]
  %841 = getelementptr inbounds i8, ptr %827, i64 136
  store float %.sink650, ptr %841, align 8, !tbaa !216
  %842 = and i32 %481, 4096
  %.not440 = icmp eq i32 %842, 0
  %or.cond504 = select i1 %.0340.in, i1 %.not440, i1 false
  br i1 %or.cond504, label %843, label %850

843:                                              ; preds = %840
  %844 = and i32 %481, 67108864
  %.not441 = icmp eq i32 %844, 0
  br i1 %.not441, label %845, label %850

845:                                              ; preds = %843
  %846 = getelementptr inbounds i8, ptr %827, i64 1069
  %847 = load i8, ptr %846, align 1
  %848 = trunc i8 %847 to i1
  %or.cond505 = or i1 %.not418, %848
  %849 = and i32 %481, 33554432
  %.not442 = icmp eq i32 %849, 0
  %or.cond506 = select i1 %or.cond505, i1 %.not442, i1 false
  br label %850

850:                                              ; preds = %845, %843, %840
  %.0354 = phi i1 [ false, %840 ], [ true, %843 ], [ %or.cond506, %845 ]
  %851 = getelementptr inbounds i8, ptr %827, i64 1104
  %852 = load ptr, ptr %851, align 8, !tbaa !122
  %.not443 = icmp eq ptr %852, null
  br i1 %.not443, label %853, label %858

853:                                              ; preds = %850
  %854 = getelementptr inbounds i8, ptr %827, i64 1069
  %855 = load i8, ptr %854, align 1
  %856 = trunc i8 %855 to i1
  %857 = xor i1 %856, true
  br label %858

858:                                              ; preds = %853, %850
  %859 = phi i1 [ true, %850 ], [ %857, %853 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #14
  store i32 -1, ptr %28, align 4, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %29, i8 0, i64 16, i1 false)
  %860 = getelementptr inbounds i8, ptr %44, i64 102
  %861 = load i8, ptr %860, align 2, !tbaa !217, !range !86, !noundef !87
  %862 = trunc nuw i8 %861 to i1
  %863 = select i1 %862, i32 2, i32 1
  %864 = getelementptr inbounds i8, ptr %44, i64 15696
  %865 = load float, ptr %864, align 8, !tbaa !218
  %866 = fmul float %865, 0x3FF19999A0000000
  %867 = fadd float %.sink650, 1.000000e+00
  %868 = call float @llvm.fmuladd.f32(float %865, float 0x3FC99999A0000000, float %867)
  %869 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %866, float noundef %868)
  %870 = fptosi float %869 to i32
  %871 = sitofp i32 %870 to float
  %.pre609 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %859, label %872, label %878

872:                                              ; preds = %858
  %873 = getelementptr inbounds i8, ptr %.pre609, i64 238
  %874 = load i8, ptr %873, align 2, !tbaa !200, !range !86, !noundef !87
  %875 = trunc nuw i8 %874 to i1
  br i1 %875, label %878, label %876

876:                                              ; preds = %872
  %877 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef nonnull %.pre609, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %28, i32 noundef %863, ptr noundef nonnull %29, ptr noundef nonnull align 4 dereferenceable(16) %24)
  %spec.select507 = or i1 %877, %.4353
  %spec.select508 = or i1 %877, %.2347
  %.pre608 = load ptr, ptr %4, align 8, !tbaa !5
  br label %878

878:                                              ; preds = %876, %872, %858
  %879 = phi ptr [ %.pre609, %872 ], [ %.pre609, %858 ], [ %.pre608, %876 ]
  %.5 = phi i1 [ %.4353, %872 ], [ %.4353, %858 ], [ %spec.select507, %876 ]
  %.3348 = phi i1 [ %.2347, %872 ], [ %.2347, %858 ], [ %spec.select508, %876 ]
  %880 = load i32, ptr %28, align 4, !tbaa !138
  %881 = trunc i32 %880 to i8
  %882 = getelementptr inbounds i8, ptr %879, i64 246
  store i8 %881, ptr %882, align 2, !tbaa !219
  %883 = getelementptr inbounds i8, ptr %879, i64 234
  %884 = load i8, ptr %883, align 2, !tbaa !213, !range !86, !noundef !87
  %885 = trunc nuw i8 %884 to i1
  br i1 %885, label %886, label %913

886:                                              ; preds = %878
  %887 = getelementptr inbounds i8, ptr %879, i64 56
  %888 = load ptr, ptr %887, align 8, !tbaa !168
  %889 = getelementptr inbounds i8, ptr %888, i64 89
  %890 = load i8, ptr %889, align 1, !tbaa !220, !range !86, !noundef !87
  %891 = trunc nuw i8 %890 to i1
  br i1 %891, label %896, label %892

892:                                              ; preds = %886
  %893 = getelementptr inbounds i8, ptr %879, i64 80
  %894 = getelementptr inbounds i8, ptr %888, i64 8
  %895 = load i64, ptr %893, align 8
  store i64 %895, ptr %894, align 8
  %.pre610 = load ptr, ptr %887, align 8, !tbaa !168
  br label %896

896:                                              ; preds = %892, %886
  %897 = phi ptr [ %.pre610, %892 ], [ %888, %886 ]
  %898 = getelementptr inbounds i8, ptr %897, i64 90
  %899 = load i8, ptr %898, align 2, !tbaa !221, !range !86, !noundef !87
  %900 = trunc nuw i8 %899 to i1
  br i1 %900, label %905, label %901

901:                                              ; preds = %896
  %902 = getelementptr inbounds i8, ptr %879, i64 88
  %903 = getelementptr inbounds i8, ptr %897, i64 16
  %904 = load i64, ptr %902, align 8
  store i64 %904, ptr %903, align 8
  %.pre611 = load ptr, ptr %887, align 8, !tbaa !168
  br label %905

905:                                              ; preds = %901, %896
  %906 = phi ptr [ %.pre611, %901 ], [ %897, %896 ]
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %906)
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds i8, ptr %907, i64 56
  %909 = load ptr, ptr %908, align 8, !tbaa !168
  %910 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %909)
  %911 = extractvalue { <2 x float>, <2 x float> } %910, 0
  %912 = extractvalue { <2 x float>, <2 x float> } %910, 1
  store <2 x float> %911, ptr %21, align 8
  store <2 x float> %912, ptr %778, align 8
  %.pre612 = load ptr, ptr %4, align 8, !tbaa !5
  br label %913

913:                                              ; preds = %905, %878
  %914 = phi ptr [ %.pre612, %905 ], [ %879, %878 ]
  %915 = getelementptr inbounds i8, ptr %914, i64 56
  %916 = load ptr, ptr %915, align 8, !tbaa !168
  %917 = getelementptr inbounds i8, ptr %916, i64 8
  %918 = getelementptr inbounds i8, ptr %914, i64 68
  %919 = load i64, ptr %917, align 8
  store i64 %919, ptr %918, align 4
  %920 = getelementptr inbounds i8, ptr %914, i64 238
  %921 = load i8, ptr %920, align 2, !tbaa !200, !range !86, !noundef !87
  %922 = trunc nuw i8 %921 to i1
  br i1 %922, label %1024, label %923

923:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  %924 = getelementptr inbounds i8, ptr %914, i64 96
  %925 = load float, ptr %924, align 8, !tbaa !182
  %926 = getelementptr inbounds i8, ptr %914, i64 100
  %927 = load float, ptr %926, align 4, !tbaa !184
  %928 = getelementptr inbounds i8, ptr %914, i64 148
  %929 = load float, ptr %928, align 4, !tbaa !203
  %930 = getelementptr inbounds i8, ptr %914, i64 156
  %931 = load float, ptr %930, align 4, !tbaa !204
  %932 = fadd float %929, %931
  %933 = fsub float %927, %932
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef %925, float noundef %933)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds i8, ptr %934, i64 560
  %936 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %935)
  store <2 x float> %936, ptr %31, align 8
  %937 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  br i1 %61, label %938, label %939

938:                                              ; preds = %923
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %945

939:                                              ; preds = %923
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds i8, ptr %940, i64 104
  %942 = getelementptr inbounds i8, ptr %940, i64 128
  %943 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %942, float noundef 2.000000e+00)
  store <2 x float> %943, ptr %33, align 8
  %944 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %941, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %944, ptr %32, align 8
  br label %945

945:                                              ; preds = %939, %938
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  %946 = load float, ptr %30, align 4
  %.sroa.035.0.vec.extract = extractelement <2 x float> %937, i64 0
  %947 = select i1 %.3348, float %946, float %.sroa.035.0.vec.extract
  %948 = getelementptr inbounds i8, ptr %30, i64 4
  %949 = load float, ptr %948, align 4
  %.sroa.035.4.vec.extract = extractelement <2 x float> %937, i64 1
  %950 = select i1 %.5, float %949, float %.sroa.035.4.vec.extract
  %951 = and i32 %481, 16384
  %.not444 = icmp eq i32 %951, 0
  br i1 %.not444, label %952, label %.thread538

952:                                              ; preds = %945
  %953 = getelementptr inbounds i8, ptr %32, i64 4
  %954 = load float, ptr %953, align 4, !tbaa !208
  %955 = fcmp ogt float %954, %950
  %956 = and i32 %481, 8
  %.not445 = icmp eq i32 %956, 0
  %957 = select i1 %955, i1 %.not445, i1 false
  %958 = load ptr, ptr %4, align 8, !tbaa !5
  %959 = getelementptr inbounds i8, ptr %958, i64 233
  %960 = zext i1 %957 to i8
  store i8 %960, ptr %959, align 1, !tbaa !222
  %961 = and i32 %481, 32768
  %.not446 = icmp eq i32 %961, 0
  br i1 %.not446, label %967, label %.thread543

.thread538:                                       ; preds = %945
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds i8, ptr %962, i64 233
  store i8 1, ptr %963, align 1, !tbaa !222
  %964 = and i32 %481, 32768
  %.not446539 = icmp eq i32 %964, 0
  br i1 %.not446539, label %.thread540, label %.thread543.thread

.thread543.thread:                                ; preds = %.thread538
  %965 = getelementptr inbounds i8, ptr %962, i64 232
  store i8 1, ptr %965, align 8, !tbaa !223
  br label %.thread648

.thread540:                                       ; preds = %.thread538
  %966 = load float, ptr %32, align 8, !tbaa !224
  %.pre639 = and i32 %481, 8
  br label %969

967:                                              ; preds = %952
  %968 = load float, ptr %32, align 8, !tbaa !224
  br i1 %957, label %969, label %975

969:                                              ; preds = %.thread540, %967
  %.pre637.pre-phi = phi i32 [ %.pre639, %.thread540 ], [ 0, %967 ]
  %970 = phi float [ %966, %.thread540 ], [ %968, %967 ]
  %971 = phi ptr [ %962, %.thread540 ], [ %958, %967 ]
  %972 = phi ptr [ %963, %.thread540 ], [ %959, %967 ]
  %973 = getelementptr inbounds i8, ptr %44, i64 14668
  %974 = load float, ptr %973, align 4, !tbaa !225
  br label %975

975:                                              ; preds = %967, %969
  %.pre-phi = phi i32 [ %956, %967 ], [ %.pre637.pre-phi, %969 ]
  %976 = phi i8 [ 0, %967 ], [ 1, %969 ]
  %977 = phi float [ %968, %967 ], [ %970, %969 ]
  %978 = phi i1 [ false, %967 ], [ true, %969 ]
  %979 = phi ptr [ %958, %967 ], [ %971, %969 ]
  %980 = phi ptr [ %959, %967 ], [ %972, %969 ]
  %981 = phi float [ 0.000000e+00, %967 ], [ %974, %969 ]
  %982 = fsub float %947, %981
  %983 = fcmp ogt float %977, %982
  %.not447 = icmp eq i32 %.pre-phi, 0
  %or.cond509 = select i1 %983, i1 %.not447, i1 false
  br i1 %or.cond509, label %986, label %.thread544

.thread544:                                       ; preds = %975
  %984 = getelementptr inbounds i8, ptr %979, i64 232
  store i8 0, ptr %984, align 8, !tbaa !223
  br label %998

.thread543:                                       ; preds = %952
  %985 = getelementptr inbounds i8, ptr %958, i64 232
  store i8 1, ptr %985, align 8, !tbaa !223
  br i1 %957, label %.thread648, label %990

986:                                              ; preds = %975
  %987 = and i32 %481, 2048
  %.not565 = icmp eq i32 %987, 0
  %988 = getelementptr inbounds i8, ptr %979, i64 232
  %.lobit = lshr exact i32 %987, 11
  %989 = trunc nuw nsw i32 %.lobit to i8
  store i8 %989, ptr %988, align 8, !tbaa !223
  %brmerge561 = or i1 %.not565, %978
  %not..not565 = xor i1 %.not565, true
  br i1 %brmerge561, label %998, label %._crit_edge613

._crit_edge613:                                   ; preds = %986
  %.phi.trans.insert = getelementptr inbounds i8, ptr %32, i64 4
  %.pre614 = load float, ptr %.phi.trans.insert, align 4, !tbaa !208
  br label %990

990:                                              ; preds = %._crit_edge613, %.thread543
  %.pre-phi638 = phi i32 [ 0, %._crit_edge613 ], [ %956, %.thread543 ]
  %991 = phi float [ %.pre614, %._crit_edge613 ], [ %954, %.thread543 ]
  %992 = phi ptr [ %980, %._crit_edge613 ], [ %959, %.thread543 ]
  %993 = fcmp ogt float %991, %950
  %.not448 = icmp eq i32 %.pre-phi638, 0
  %994 = select i1 %993, i1 %.not448, i1 false
  %995 = zext i1 %994 to i8
  store i8 %995, ptr %992, align 1, !tbaa !222
  br label %998

.thread648:                                       ; preds = %.thread543.thread, %.thread543
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %996 = getelementptr inbounds i8, ptr %44, i64 14668
  %997 = load float, ptr %996, align 4, !tbaa !225
  br label %1006

998:                                              ; preds = %986, %.thread544, %990
  %999 = phi i8 [ %995, %990 ], [ %976, %986 ], [ %976, %.thread544 ]
  %1000 = phi i1 [ true, %990 ], [ %not..not565, %986 ], [ false, %.thread544 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %1001 = trunc nuw i8 %999 to i1
  br i1 %1001, label %1002, label %1005

1002:                                             ; preds = %998
  %1003 = getelementptr inbounds i8, ptr %44, i64 14668
  %1004 = load float, ptr %1003, align 4, !tbaa !225
  br i1 %1000, label %1006, label %1010

1005:                                             ; preds = %998
  br i1 %1000, label %1006, label %1010

1006:                                             ; preds = %.thread648, %1002, %1005
  %1007 = phi float [ %1004, %1002 ], [ 0.000000e+00, %1005 ], [ %997, %.thread648 ]
  %1008 = getelementptr inbounds i8, ptr %44, i64 14668
  %1009 = load float, ptr %1008, align 4, !tbaa !225
  br label %1010

1010:                                             ; preds = %1002, %1005, %1006
  %1011 = phi float [ %1007, %1006 ], [ 0.000000e+00, %1005 ], [ %1004, %1002 ]
  %1012 = phi float [ %1009, %1006 ], [ 0.000000e+00, %1005 ], [ 0.000000e+00, %1002 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %1011, float noundef %1012)
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = getelementptr inbounds i8, ptr %1013, i64 224
  %1015 = load i64, ptr %34, align 8
  store i64 %1015, ptr %1014, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  %1016 = getelementptr inbounds i8, ptr %1013, i64 152
  %1017 = lshr i64 %1015, 32
  %1018 = insertelement <2 x i64> poison, i64 %1015, i64 0
  %1019 = insertelement <2 x i64> %1018, i64 %1017, i64 1
  %1020 = trunc <2 x i64> %1019 to <2 x i32>
  %1021 = bitcast <2 x i32> %1020 to <2 x float>
  %1022 = load <2 x float>, ptr %1016, align 8, !tbaa !139
  %1023 = fadd <2 x float> %1022, %1021
  store <2 x float> %1023, ptr %1016, align 8, !tbaa !139
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  br label %1024

1024:                                             ; preds = %1010, %913
  %1025 = phi ptr [ %1013, %1010 ], [ %914, %913 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #14
  %1026 = and i32 %481, 83886080
  %or.cond511.not = icmp ne i32 %1026, 16777216
  %1027 = getelementptr inbounds i8, ptr %199, i64 624
  %1028 = select i1 %or.cond511.not, i1 true, i1 %358
  %1029 = select i1 %1028, ptr %21, ptr %1027
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(16) %1029, i64 16, i1 false), !tbaa.struct !164
  %1030 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1025)
  %1031 = extractvalue { <2 x float>, <2 x float> } %1030, 0
  %1032 = extractvalue { <2 x float>, <2 x float> } %1030, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  %1033 = load ptr, ptr %4, align 8, !tbaa !5
  %1034 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1033)
  %1035 = extractvalue { <2 x float>, <2 x float> } %1034, 0
  store <2 x float> %1035, ptr %36, align 8
  %1036 = getelementptr inbounds i8, ptr %36, i64 8
  %1037 = extractvalue { <2 x float>, <2 x float> } %1034, 1
  store <2 x float> %1037, ptr %1036, align 8
  %1038 = load ptr, ptr %4, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i64 544
  store <2 x float> %1031, ptr %1039, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1038, i64 552
  store <2 x float> %1032, ptr %.sroa.4.0..sroa_idx, align 8
  %1040 = getelementptr inbounds i8, ptr %1038, i64 1069
  %1041 = load i8, ptr %1040, align 1
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1043, label %1049

1043:                                             ; preds = %1024
  %1044 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136) %1038)
  %1045 = load ptr, ptr %4, align 8, !tbaa !5
  %1046 = getelementptr inbounds i8, ptr %1045, i64 548
  %1047 = load float, ptr %1046, align 4, !tbaa !226
  %1048 = fadd float %1044, %1047
  store float %1048, ptr %1046, align 4, !tbaa !226
  br label %1049

1049:                                             ; preds = %1043, %1024
  %1050 = phi ptr [ %1045, %1043 ], [ %1038, %1024 ]
  %1051 = getelementptr inbounds i8, ptr %1050, i64 544
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1051, ptr noundef nonnull align 4 dereferenceable(16) %35)
  %1052 = load ptr, ptr %4, align 8
  %1053 = getelementptr inbounds i8, ptr %1052, i64 80
  %1054 = getelementptr inbounds i8, ptr %1052, i64 144
  %1055 = getelementptr inbounds i8, ptr %1052, i64 560
  %1056 = getelementptr inbounds i8, ptr %1052, i64 88
  %1057 = load <2 x float>, ptr %1053, align 8, !tbaa !139
  %1058 = load <2 x float>, ptr %1056, align 8, !tbaa !139
  %1059 = fadd <2 x float> %1057, %1058
  %1060 = load <4 x float>, ptr %1054, align 8, !tbaa !139
  %1061 = shufflevector <2 x float> %1057, <2 x float> %1059, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %1062 = fadd <4 x float> %1061, %1060
  %1063 = fsub <4 x float> %1061, %1060
  %1064 = shufflevector <4 x float> %1062, <4 x float> %1063, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %1064, ptr %1055, align 8, !tbaa !139
  %1065 = and i32 %481, 1025
  %brmerge513.not = icmp eq i32 %1065, 1
  %1066 = getelementptr inbounds i8, ptr %44, i64 14624
  %1067 = getelementptr inbounds i8, ptr %1052, i64 140
  %.in451 = select i1 %brmerge513.not, ptr %1067, ptr %1066
  %1068 = load float, ptr %.in451, align 4, !tbaa !139
  %1069 = extractelement <4 x float> %1062, i64 0
  %1070 = fadd float %1069, 5.000000e-01
  %1071 = getelementptr inbounds i8, ptr %1052, i64 128
  %1072 = load float, ptr %1071, align 8, !tbaa !227
  %1073 = fmul float %1072, 5.000000e-01
  %1074 = call noundef float @_ZL7ImFloorf(float noundef %1073)
  %1075 = load ptr, ptr %4, align 8, !tbaa !5
  %1076 = getelementptr inbounds i8, ptr %1075, i64 140
  %1077 = load float, ptr %1076, align 4, !tbaa !228
  %1078 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1074, float noundef %1077)
  %1079 = fadd float %1070, %1078
  %1080 = call noundef float @_ZL7ImFloorf(float noundef %1079)
  %1081 = load ptr, ptr %4, align 8, !tbaa !5
  %1082 = getelementptr inbounds i8, ptr %1081, i64 576
  store float %1080, ptr %1082, align 8, !tbaa !229
  %1083 = getelementptr inbounds i8, ptr %1081, i64 564
  %1084 = load float, ptr %1083, align 4, !tbaa !230
  %1085 = fadd float %1084, 5.000000e-01
  %1086 = fadd float %1068, %1085
  %1087 = call noundef float @_ZL7ImFloorf(float noundef %1086)
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = getelementptr inbounds i8, ptr %1088, i64 580
  store float %1087, ptr %1089, align 4, !tbaa !231
  %1090 = getelementptr inbounds i8, ptr %1088, i64 568
  %1091 = load float, ptr %1090, align 8, !tbaa !232
  %1092 = fadd float %1091, 5.000000e-01
  %1093 = getelementptr inbounds i8, ptr %1088, i64 128
  %1094 = load float, ptr %1093, align 8, !tbaa !227
  %1095 = fmul float %1094, 5.000000e-01
  %1096 = call noundef float @_ZL7ImFloorf(float noundef %1095)
  %1097 = load ptr, ptr %4, align 8, !tbaa !5
  %1098 = getelementptr inbounds i8, ptr %1097, i64 140
  %1099 = load float, ptr %1098, align 4, !tbaa !228
  %1100 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1096, float noundef %1099)
  %1101 = fsub float %1092, %1100
  %1102 = call noundef float @_ZL7ImFloorf(float noundef %1101)
  %1103 = load ptr, ptr %4, align 8, !tbaa !5
  %1104 = getelementptr inbounds i8, ptr %1103, i64 584
  store float %1102, ptr %1104, align 8, !tbaa !233
  %1105 = getelementptr inbounds i8, ptr %1103, i64 572
  %1106 = load float, ptr %1105, align 4, !tbaa !234
  %1107 = fadd float %1106, 5.000000e-01
  %1108 = getelementptr inbounds i8, ptr %1103, i64 140
  %1109 = load float, ptr %1108, align 4, !tbaa !228
  %1110 = fsub float %1107, %1109
  %1111 = call noundef float @_ZL7ImFloorf(float noundef %1110)
  %1112 = load ptr, ptr %4, align 8, !tbaa !5
  %1113 = getelementptr inbounds i8, ptr %1112, i64 588
  store float %1111, ptr %1113, align 4, !tbaa !235
  %1114 = getelementptr inbounds i8, ptr %1112, i64 576
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1114, ptr noundef nonnull align 4 dereferenceable(16) %35)
  %1115 = load ptr, ptr %4, align 8, !tbaa !5
  %1116 = getelementptr inbounds i8, ptr %1115, i64 88
  %1117 = load float, ptr %1116, align 8, !tbaa !183
  %1118 = fcmp ule float %1117, 0.000000e+00
  %1119 = and i32 %481, 33554496
  %1120 = icmp ne i32 %1119, 0
  %brmerge515 = select i1 %1118, i1 true, i1 %1120
  br i1 %brmerge515, label %1123, label %1121

1121:                                             ; preds = %1049
  %1122 = fmul float %1117, 0x3FE4CCCCC0000000
  br label %1126

1123:                                             ; preds = %1049
  %1124 = load float, ptr %864, align 8, !tbaa !218
  %1125 = fmul float %1124, 1.600000e+01
  br label %1126

1126:                                             ; preds = %1123, %1121
  %.sink655 = phi float [ %1125, %1123 ], [ %1122, %1121 ]
  %1127 = call noundef float @_ZL7ImFloorf(float noundef %.sink655)
  %.sink654 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %.sink654, i64 676
  store float %1127, ptr %1128, align 4, !tbaa !236
  %1129 = getelementptr inbounds i8, ptr %.sink654, i64 104
  %1130 = load float, ptr %1129, align 8, !tbaa !237
  %1131 = getelementptr inbounds i8, ptr %.sink654, i64 128
  %1132 = load float, ptr %1131, align 8, !tbaa !227
  %1133 = call float @llvm.fmuladd.f32(float %1132, float 2.000000e+00, float %1130)
  %1134 = getelementptr inbounds i8, ptr %.sink654, i64 560
  %1135 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1134)
  %1136 = fsub float %1133, %1135
  %1137 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1136)
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds i8, ptr %1138, i64 192
  store float %1137, ptr %1139, align 8, !tbaa !238
  %1140 = getelementptr inbounds i8, ptr %1138, i64 108
  %1141 = load float, ptr %1140, align 4, !tbaa !239
  %1142 = getelementptr inbounds i8, ptr %1138, i64 132
  %1143 = load float, ptr %1142, align 4, !tbaa !240
  %1144 = call float @llvm.fmuladd.f32(float %1143, float 2.000000e+00, float %1141)
  %1145 = getelementptr inbounds i8, ptr %1138, i64 560
  %1146 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1145)
  %1147 = fsub float %1144, %1146
  %1148 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1147)
  %1149 = load ptr, ptr %4, align 8, !tbaa !5
  %1150 = getelementptr inbounds i8, ptr %1149, i64 196
  store float %1148, ptr %1150, align 4, !tbaa !241
  %1151 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1149)
  %1152 = load ptr, ptr %4, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i64 184
  store <2 x float> %1151, ptr %1153, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds i8, ptr %1154, i64 200
  %1156 = load i64, ptr %37, align 8
  store i64 %1156, ptr %1155, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  %1157 = getelementptr inbounds i8, ptr %1154, i64 160
  store <2 x float> zeroinitializer, ptr %1157, align 8, !tbaa !139
  %1158 = getelementptr inbounds i8, ptr %1154, i64 728
  %1159 = load ptr, ptr %1158, align 8, !tbaa !165
  %1160 = load i32, ptr %1159, align 8, !tbaa !242
  %1161 = icmp eq i32 %1160, 1
  br i1 %1161, label %1162, label %.critedge6

1162:                                             ; preds = %1126
  %1163 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1159, i32 noundef 0)
  %1164 = getelementptr inbounds i8, ptr %1163, i64 32
  %1165 = load i32, ptr %1164, align 8, !tbaa !243
  %1166 = icmp eq i32 %1165, 0
  br i1 %1166, label %1167, label %.critedge6

.critedge6:                                       ; preds = %1126, %1162
  call void @__assert_fail(ptr noundef nonnull @.str.145, ptr noundef nonnull @.str.3, i32 noundef 7167, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1167:                                             ; preds = %1162
  %1168 = load ptr, ptr %4, align 8, !tbaa !5
  %1169 = getelementptr inbounds i8, ptr %1168, i64 728
  %1170 = load ptr, ptr %1169, align 8, !tbaa !165
  %1171 = getelementptr inbounds i8, ptr %44, i64 15688
  %1172 = load ptr, ptr %1171, align 8, !tbaa !245
  %1173 = getelementptr inbounds i8, ptr %1172, i64 64
  %1174 = load ptr, ptr %1173, align 8, !tbaa !246
  %1175 = getelementptr inbounds i8, ptr %1174, i64 8
  %1176 = load ptr, ptr %1175, align 8, !tbaa !247
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1170, ptr noundef %1176)
  %1177 = getelementptr inbounds i8, ptr %35, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %1177, i1 noundef zeroext false)
  %1178 = load ptr, ptr %4, align 8, !tbaa !5
  %1179 = getelementptr inbounds i8, ptr %1178, i64 1069
  %1180 = load i8, ptr %1179, align 1
  %1181 = trunc i8 %1180 to i1
  %1182 = and i8 %1180, 4
  %1183 = icmp eq i8 %1182, 0
  %.not569 = and i1 %1183, %1181
  br i1 %.not569, label %1249, label %1184

1184:                                             ; preds = %1167
  br i1 %1028, label %.thread548, label %1185

1185:                                             ; preds = %1184
  %1186 = getelementptr inbounds i8, ptr %199, i64 456
  %1187 = load i32, ptr %1186, align 8, !tbaa !210
  %1188 = icmp sgt i32 %1187, 1
  br i1 %1188, label %1189, label %.thread545

.thread545:                                       ; preds = %1185
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  br label %1204

1189:                                             ; preds = %1185
  %1190 = add nsw i32 %1187, -2
  %1191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1186, i32 noundef %1190)
  %1192 = load ptr, ptr %1191, align 8, !tbaa !5
  %.not454 = icmp eq ptr %1192, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  br i1 %.not454, label %1204, label %1193

1193:                                             ; preds = %1189
  %1194 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1192)
  %1195 = extractvalue { <2 x float>, <2 x float> } %1194, 0
  store <2 x float> %1195, ptr %38, align 8
  %1196 = getelementptr inbounds i8, ptr %38, i64 8
  %1197 = extractvalue { <2 x float>, <2 x float> } %1194, 1
  store <2 x float> %1197, ptr %1196, align 8
  %1198 = load ptr, ptr %4, align 8, !tbaa !5
  %1199 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136) %1198)
  %1200 = extractvalue { <2 x float>, <2 x float> } %1199, 0
  store <2 x float> %1200, ptr %39, align 8
  %1201 = getelementptr inbounds i8, ptr %39, i64 8
  %1202 = extractvalue { <2 x float>, <2 x float> } %1199, 1
  store <2 x float> %1202, ptr %1201, align 8
  %1203 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %38, ptr noundef nonnull align 4 dereferenceable(16) %39)
  br label %1204

1204:                                             ; preds = %.thread545, %1189, %1193
  %1205 = phi i1 [ %1203, %1193 ], [ false, %1189 ], [ false, %.thread545 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #14
  %1206 = getelementptr inbounds i8, ptr %199, i64 728
  %1207 = load ptr, ptr %1206, align 8, !tbaa !165
  %1208 = getelementptr inbounds i8, ptr %1207, i64 32
  %1209 = load i32, ptr %1208, align 8, !tbaa !251
  %1210 = load ptr, ptr %4, align 8, !tbaa !5
  %1211 = getelementptr inbounds i8, ptr %1210, i64 728
  %1212 = load ptr, ptr %1211, align 8, !tbaa !165
  %1213 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1212)
  %1214 = getelementptr inbounds i8, ptr %1213, i64 32
  %1215 = load i32, ptr %1214, align 8, !tbaa !243
  %1216 = icmp ne i32 %1215, 0
  %1217 = icmp eq i32 %1209, 0
  %or.cond519.not572.not575 = select i1 %1216, i1 true, i1 %1217
  %or.cond562.not = or i1 %1205, %or.cond519.not572.not575
  br i1 %or.cond562.not, label %.thread548, label %1218

1218:                                             ; preds = %1204
  %1219 = load ptr, ptr %1206, align 8, !tbaa !165
  %1220 = load ptr, ptr %4, align 8, !tbaa !5
  %1221 = getelementptr inbounds i8, ptr %1220, i64 728
  store ptr %1219, ptr %1221, align 8, !tbaa !165
  br label %.thread548

.thread548:                                       ; preds = %1204, %1184, %1218
  %.1356550 = phi i1 [ true, %1218 ], [ false, %1184 ], [ false, %1204 ]
  %1222 = getelementptr inbounds i8, ptr %44, i64 19472
  %1223 = load ptr, ptr %1222, align 8, !tbaa !252
  %.not455 = icmp eq ptr %1223, null
  br i1 %.not455, label %1224, label %1227

1224:                                             ; preds = %.thread548
  %1225 = getelementptr inbounds i8, ptr %44, i64 19080
  %1226 = load ptr, ptr %1225, align 8, !tbaa !253
  br label %1227

1227:                                             ; preds = %.thread548, %1224
  %1228 = phi ptr [ %1226, %1224 ], [ %1223, %.thread548 ]
  br i1 %.0354, label %._crit_edge615, label %1229

._crit_edge615:                                   ; preds = %1227
  %.pre616 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1243

1229:                                             ; preds = %1227
  %.not456 = icmp eq ptr %1228, null
  %.pre617 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not456, label %1243, label %1230

1230:                                             ; preds = %1229
  %1231 = getelementptr inbounds i8, ptr %.pre617, i64 976
  %1232 = load ptr, ptr %1231, align 8, !tbaa !254
  %1233 = getelementptr inbounds i8, ptr %1228, i64 976
  %1234 = load ptr, ptr %1233, align 8, !tbaa !254
  %1235 = icmp eq ptr %1232, %1234
  br i1 %1235, label %1243, label %1236

1236:                                             ; preds = %1230
  %1237 = getelementptr inbounds i8, ptr %.pre617, i64 1096
  %1238 = load ptr, ptr %1237, align 8, !tbaa !121
  %.not457 = icmp eq ptr %1238, null
  br i1 %.not457, label %1243, label %1239

1239:                                             ; preds = %1236
  %1240 = getelementptr inbounds i8, ptr %1228, i64 1096
  %1241 = load ptr, ptr %1240, align 8, !tbaa !121
  %1242 = icmp eq ptr %1238, %1241
  br label %1243

1243:                                             ; preds = %._crit_edge615, %1229, %1236, %1239, %1230
  %1244 = phi ptr [ %.pre616, %._crit_edge615 ], [ %.pre617, %1229 ], [ %.pre617, %1230 ], [ %.pre617, %1236 ], [ %.pre617, %1239 ]
  %1245 = phi i1 [ true, %._crit_edge615 ], [ false, %1229 ], [ true, %1230 ], [ false, %1236 ], [ %1242, %1239 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1244, ptr noundef nonnull align 4 dereferenceable(16) %36, i1 noundef zeroext %1245, i1 noundef zeroext %859, i32 noundef %863, ptr noundef nonnull %29, float noundef %871)
  %.pre618 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1356550, label %1246, label %1249

1246:                                             ; preds = %1243
  %1247 = getelementptr inbounds i8, ptr %.pre618, i64 736
  %1248 = getelementptr inbounds i8, ptr %.pre618, i64 728
  store ptr %1247, ptr %1248, align 8, !tbaa !165
  br label %1249

1249:                                             ; preds = %1243, %1246, %1167
  %1250 = phi ptr [ %.pre618, %1243 ], [ %.pre618, %1246 ], [ %1178, %1167 ]
  %1251 = and i32 %481, 8
  %.not458 = icmp eq i32 %1251, 0
  %1252 = getelementptr inbounds i8, ptr %1250, i64 120
  %1253 = load float, ptr %1252, align 8, !tbaa !255
  %1254 = fcmp une float %1253, 0.000000e+00
  br i1 %1254, label %1276, label %1255

1255:                                             ; preds = %1249
  %1256 = and i32 %481, 2056
  %1257 = icmp eq i32 %1256, 2048
  br i1 %1257, label %1258, label %1261

1258:                                             ; preds = %1255
  %1259 = getelementptr inbounds i8, ptr %1250, i64 104
  %1260 = load float, ptr %1259, align 8, !tbaa !237
  br label %1261

1261:                                             ; preds = %1255, %1258
  %1262 = phi float [ %1260, %1258 ], [ 0.000000e+00, %1255 ]
  %1263 = getelementptr inbounds i8, ptr %1250, i64 88
  %1264 = load float, ptr %1263, align 8, !tbaa !183
  %1265 = getelementptr inbounds i8, ptr %1250, i64 128
  %1266 = load float, ptr %1265, align 8, !tbaa !227
  %1267 = fneg float %1266
  %1268 = call float @llvm.fmuladd.f32(float %1267, float 2.000000e+00, float %1264)
  %1269 = getelementptr inbounds i8, ptr %1250, i64 144
  %1270 = load float, ptr %1269, align 8, !tbaa !201
  %1271 = getelementptr inbounds i8, ptr %1250, i64 152
  %1272 = load float, ptr %1271, align 8, !tbaa !202
  %1273 = fadd float %1270, %1272
  %1274 = fsub float %1268, %1273
  %1275 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1262, float noundef %1274)
  %.pre619 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1276

1276:                                             ; preds = %1249, %1261
  %1277 = phi ptr [ %.pre619, %1261 ], [ %1250, %1249 ]
  %1278 = phi float [ %1275, %1261 ], [ %1253, %1249 ]
  %1279 = getelementptr inbounds i8, ptr %1277, i64 124
  %1280 = load float, ptr %1279, align 4, !tbaa !256
  %1281 = fcmp une float %1280, 0.000000e+00
  br i1 %1281, label %1301, label %1282

1282:                                             ; preds = %1276
  br i1 %.not458, label %1283, label %1286

1283:                                             ; preds = %1282
  %1284 = getelementptr inbounds i8, ptr %1277, i64 108
  %1285 = load float, ptr %1284, align 4, !tbaa !239
  br label %1286

1286:                                             ; preds = %1282, %1283
  %1287 = phi float [ %1285, %1283 ], [ 0.000000e+00, %1282 ]
  %1288 = getelementptr inbounds i8, ptr %1277, i64 92
  %1289 = load float, ptr %1288, align 4, !tbaa !185
  %1290 = getelementptr inbounds i8, ptr %1277, i64 132
  %1291 = load float, ptr %1290, align 4, !tbaa !240
  %1292 = fneg float %1291
  %1293 = call float @llvm.fmuladd.f32(float %1292, float 2.000000e+00, float %1289)
  %1294 = getelementptr inbounds i8, ptr %1277, i64 148
  %1295 = load float, ptr %1294, align 4, !tbaa !203
  %1296 = getelementptr inbounds i8, ptr %1277, i64 156
  %1297 = load float, ptr %1296, align 4, !tbaa !204
  %1298 = fadd float %1295, %1297
  %1299 = fsub float %1293, %1298
  %1300 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1287, float noundef %1299)
  %.pre620 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1301

1301:                                             ; preds = %1276, %1286
  %1302 = phi ptr [ %.pre620, %1286 ], [ %1277, %1276 ]
  %1303 = phi float [ %1300, %1286 ], [ %1280, %1276 ]
  %1304 = getelementptr inbounds i8, ptr %1302, i64 560
  %1305 = load float, ptr %1304, align 8, !tbaa !257
  %1306 = getelementptr inbounds i8, ptr %1302, i64 184
  %1307 = load float, ptr %1306, align 8, !tbaa !258
  %1308 = fsub float %1305, %1307
  %1309 = getelementptr inbounds i8, ptr %1302, i64 128
  %1310 = load float, ptr %1309, align 8, !tbaa !227
  %1311 = getelementptr inbounds i8, ptr %1302, i64 140
  %1312 = load float, ptr %1311, align 4, !tbaa !228
  %1313 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1310, float noundef %1312)
  %1314 = fadd float %1308, %1313
  %1315 = call noundef float @_ZL7ImFloorf(float noundef %1314)
  %1316 = load ptr, ptr %4, align 8, !tbaa !5
  %1317 = getelementptr inbounds i8, ptr %1316, i64 592
  store float %1315, ptr %1317, align 8, !tbaa !259
  %1318 = getelementptr inbounds i8, ptr %1316, i64 564
  %1319 = load float, ptr %1318, align 4, !tbaa !230
  %1320 = getelementptr inbounds i8, ptr %1316, i64 188
  %1321 = load float, ptr %1320, align 4, !tbaa !260
  %1322 = fsub float %1319, %1321
  %1323 = getelementptr inbounds i8, ptr %1316, i64 132
  %1324 = load float, ptr %1323, align 4, !tbaa !240
  %1325 = getelementptr inbounds i8, ptr %1316, i64 140
  %1326 = load float, ptr %1325, align 4, !tbaa !228
  %1327 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1324, float noundef %1326)
  %1328 = fadd float %1322, %1327
  %1329 = call noundef float @_ZL7ImFloorf(float noundef %1328)
  %1330 = load ptr, ptr %4, align 8, !tbaa !5
  %1331 = getelementptr inbounds i8, ptr %1330, i64 596
  store float %1329, ptr %1331, align 4, !tbaa !261
  %1332 = getelementptr inbounds i8, ptr %1330, i64 592
  %1333 = load float, ptr %1332, align 8, !tbaa !259
  %1334 = getelementptr inbounds i8, ptr %1330, i64 600
  %1335 = insertelement <2 x float> poison, float %1278, i64 0
  %1336 = insertelement <2 x float> %1335, float %1303, i64 1
  %1337 = insertelement <2 x float> poison, float %1333, i64 0
  %1338 = insertelement <2 x float> %1337, float %1329, i64 1
  %1339 = fadd <2 x float> %1336, %1338
  store <2 x float> %1339, ptr %1334, align 8, !tbaa !139
  %1340 = getelementptr inbounds i8, ptr %1330, i64 608
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1340, ptr noundef nonnull align 8 dereferenceable(16) %1332, i64 16, i1 false), !tbaa.struct !164
  %1341 = getelementptr inbounds i8, ptr %1330, i64 80
  %1342 = getelementptr inbounds i8, ptr %1330, i64 184
  %1343 = getelementptr inbounds i8, ptr %1330, i64 128
  %1344 = getelementptr inbounds i8, ptr %1330, i64 144
  %1345 = getelementptr inbounds i8, ptr %1330, i64 640
  %1346 = load <2 x float>, ptr %1341, align 8, !tbaa !139
  %1347 = load <2 x float>, ptr %1342, align 8, !tbaa !139
  %1348 = fsub <2 x float> %1346, %1347
  %1349 = load <2 x float>, ptr %1343, align 8, !tbaa !139
  %1350 = fadd <2 x float> %1348, %1349
  %1351 = load <2 x float>, ptr %1344, align 8, !tbaa !139
  %1352 = fadd <2 x float> %1350, %1351
  store <2 x float> %1352, ptr %1345, align 8, !tbaa !139
  %1353 = getelementptr inbounds i8, ptr %1330, i64 120
  %1354 = load float, ptr %1353, align 8, !tbaa !255
  %1355 = fcmp une float %1354, 0.000000e+00
  br i1 %1355, label %1367, label %1356

1356:                                             ; preds = %1301
  %1357 = getelementptr inbounds i8, ptr %1330, i64 88
  %1358 = load float, ptr %1357, align 8, !tbaa !183
  %1359 = extractelement <2 x float> %1349, i64 0
  %1360 = fneg float %1359
  %1361 = call float @llvm.fmuladd.f32(float %1360, float 2.000000e+00, float %1358)
  %1362 = getelementptr inbounds i8, ptr %1330, i64 152
  %1363 = load float, ptr %1362, align 8, !tbaa !202
  %1364 = extractelement <2 x float> %1351, i64 0
  %1365 = fadd float %1364, %1363
  %1366 = fsub float %1361, %1365
  br label %1367

1367:                                             ; preds = %1301, %1356
  %1368 = phi float [ %1366, %1356 ], [ %1354, %1301 ]
  %1369 = extractelement <2 x float> %1352, i64 0
  %1370 = fadd float %1369, %1368
  %1371 = getelementptr inbounds i8, ptr %1330, i64 648
  store float %1370, ptr %1371, align 8, !tbaa !262
  %1372 = getelementptr inbounds i8, ptr %1330, i64 124
  %1373 = load float, ptr %1372, align 4, !tbaa !256
  %1374 = fcmp une float %1373, 0.000000e+00
  br i1 %1374, label %1386, label %1375

1375:                                             ; preds = %1367
  %1376 = getelementptr inbounds i8, ptr %1330, i64 92
  %1377 = load float, ptr %1376, align 4, !tbaa !185
  %1378 = extractelement <2 x float> %1349, i64 1
  %1379 = fneg float %1378
  %1380 = call float @llvm.fmuladd.f32(float %1379, float 2.000000e+00, float %1377)
  %1381 = getelementptr inbounds i8, ptr %1330, i64 156
  %1382 = load float, ptr %1381, align 4, !tbaa !204
  %1383 = extractelement <2 x float> %1351, i64 1
  %1384 = fadd float %1383, %1382
  %1385 = fsub float %1380, %1384
  br label %1386

1386:                                             ; preds = %1367, %1375
  %1387 = phi float [ %1385, %1375 ], [ %1373, %1367 ]
  %1388 = extractelement <2 x float> %1352, i64 1
  %1389 = fadd float %1388, %1387
  %1390 = getelementptr inbounds i8, ptr %1330, i64 652
  store float %1389, ptr %1390, align 4, !tbaa !263
  %1391 = extractelement <2 x float> %1349, i64 0
  %1392 = extractelement <2 x float> %1351, i64 0
  %1393 = fadd <2 x float> %1349, %1351
  %1394 = extractelement <2 x float> %1347, i64 0
  %1395 = fsub <2 x float> %1393, %1347
  %1396 = extractelement <2 x float> %1395, i64 0
  %1397 = getelementptr inbounds i8, ptr %1330, i64 380
  store float %1396, ptr %1397, align 4, !tbaa !264
  %1398 = getelementptr inbounds i8, ptr %1330, i64 384
  store <2 x float> zeroinitializer, ptr %1398, align 8, !tbaa !139
  %1399 = extractelement <2 x float> %1346, i64 0
  %1400 = fpext float %1399 to double
  %1401 = fpext float %1391 to double
  %1402 = fadd double %1400, %1401
  %1403 = fpext float %1394 to double
  %1404 = fsub double %1402, %1403
  %1405 = fpext float %1392 to double
  %1406 = fadd double %1404, %1405
  %1407 = fadd double %1406, 0.000000e+00
  %1408 = extractelement <2 x float> %1346, i64 1
  %1409 = fpext float %1408 to double
  %1410 = extractelement <2 x float> %1349, i64 1
  %1411 = fpext float %1410 to double
  %1412 = fadd double %1409, %1411
  %1413 = extractelement <2 x float> %1347, i64 1
  %1414 = fpext float %1413 to double
  %1415 = fsub double %1412, %1414
  %1416 = extractelement <2 x float> %1351, i64 1
  %1417 = fpext float %1416 to double
  %1418 = fadd double %1415, %1417
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  %1419 = fptrunc double %1407 to float
  %1420 = fptrunc double %1418 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %1419, float noundef %1420)
  %1421 = load ptr, ptr %4, align 8, !tbaa !5
  %1422 = getelementptr inbounds i8, ptr %1421, i64 328
  %1423 = load i64, ptr %40, align 8
  store i64 %1423, ptr %1422, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  %1424 = trunc i64 %1423 to i32
  %1425 = bitcast i32 %1424 to float
  %1426 = fpext float %1425 to double
  %1427 = fsub double %1407, %1426
  %1428 = fptrunc double %1427 to float
  %1429 = lshr i64 %1423, 32
  %1430 = trunc nuw i64 %1429 to i32
  %1431 = bitcast i32 %1430 to float
  %1432 = fpext float %1431 to double
  %1433 = fsub double %1418, %1432
  %1434 = fptrunc double %1433 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %1428, float noundef %1434)
  %1435 = load ptr, ptr %4, align 8, !tbaa !5
  %1436 = getelementptr inbounds i8, ptr %1435, i64 392
  %1437 = load i64, ptr %41, align 8
  store i64 %1437, ptr %1436, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  %1438 = getelementptr inbounds i8, ptr %1435, i64 312
  %1439 = getelementptr inbounds i8, ptr %1435, i64 328
  %1440 = load i64, ptr %1439, align 8
  store i64 %1440, ptr %1438, align 8
  %1441 = getelementptr inbounds i8, ptr %1435, i64 320
  store i64 %1440, ptr %1441, align 8
  %1442 = getelementptr inbounds i8, ptr %1435, i64 336
  store i64 %1440, ptr %1442, align 8
  %1443 = getelementptr inbounds i8, ptr %1435, i64 344
  store i64 %1440, ptr %1443, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1444 = load ptr, ptr %4, align 8, !tbaa !5
  %1445 = getelementptr inbounds i8, ptr %1444, i64 360
  %1446 = load i64, ptr %42, align 8
  store i64 %1446, ptr %1445, align 8
  %1447 = getelementptr inbounds i8, ptr %1444, i64 352
  store i64 %1446, ptr %1447, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #14
  %1448 = getelementptr inbounds i8, ptr %1444, i64 368
  %1449 = getelementptr inbounds i8, ptr %1444, i64 400
  store i32 0, ptr %1449, align 8, !tbaa !145
  %1450 = getelementptr inbounds i8, ptr %1444, i64 406
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1448, i8 0, i64 10, i1 false)
  %1451 = load i16, ptr %1450, align 2, !tbaa !265
  %1452 = getelementptr inbounds i8, ptr %1444, i64 404
  store i16 %1451, ptr %1452, align 4, !tbaa !266
  store i16 0, ptr %1450, align 2, !tbaa !265
  %1453 = getelementptr inbounds i8, ptr %1444, i64 408
  store i8 1, ptr %1453, align 8, !tbaa !267
  %1454 = getelementptr inbounds i8, ptr %1444, i64 409
  store i8 0, ptr %1454, align 1, !tbaa !268
  %1455 = getelementptr inbounds i8, ptr %1444, i64 196
  %1456 = load float, ptr %1455, align 4, !tbaa !241
  %1457 = fcmp ogt float %1456, 0.000000e+00
  %1458 = getelementptr inbounds i8, ptr %1444, i64 410
  %1459 = zext i1 %1457 to i8
  store i8 %1459, ptr %1458, align 2, !tbaa !269
  %1460 = getelementptr inbounds i8, ptr %1444, i64 411
  store i8 0, ptr %1460, align 1, !tbaa !270
  %1461 = getelementptr inbounds i8, ptr %1444, i64 420
  %1462 = load float, ptr %511, align 4, !tbaa !190
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1461, float noundef %1462, i1 noundef zeroext %.0340.in)
  %1463 = load ptr, ptr %4, align 8, !tbaa !5
  %1464 = getelementptr inbounds i8, ptr %1463, i64 448
  store i32 0, ptr %1464, align 8, !tbaa !271
  %1465 = getelementptr inbounds i8, ptr %1463, i64 452
  store i32 0, ptr %1465, align 4, !tbaa !272
  %1466 = getelementptr inbounds i8, ptr %1463, i64 456
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1466, i32 noundef 0)
  %1467 = load ptr, ptr %4, align 8, !tbaa !5
  %1468 = getelementptr inbounds i8, ptr %1467, i64 680
  %1469 = getelementptr inbounds i8, ptr %1467, i64 472
  store ptr %1468, ptr %1469, align 8, !tbaa !273
  %1470 = getelementptr inbounds i8, ptr %1467, i64 480
  store ptr null, ptr %1470, align 8, !tbaa !274
  %1471 = getelementptr inbounds i8, ptr %1467, i64 492
  store i32 1, ptr %1471, align 4, !tbaa !275
  br i1 %200, label %1475, label %1472

1472:                                             ; preds = %1386
  %1473 = getelementptr inbounds i8, ptr %199, i64 492
  %1474 = load i32, ptr %1473, align 4, !tbaa !275
  br label %1475

1475:                                             ; preds = %1386, %1472
  %1476 = phi i32 [ %1474, %1472 ], [ 1, %1386 ]
  %1477 = getelementptr inbounds i8, ptr %1467, i64 496
  store i32 %1476, ptr %1477, align 8, !tbaa !276
  %1478 = getelementptr inbounds i8, ptr %1467, i64 676
  %1479 = load float, ptr %1478, align 4, !tbaa !236
  %1480 = getelementptr inbounds i8, ptr %1467, i64 500
  store float %1479, ptr %1480, align 4, !tbaa !277
  %1481 = getelementptr inbounds i8, ptr %1467, i64 504
  store float -1.000000e+00, ptr %1481, align 8, !tbaa !278
  %1482 = getelementptr inbounds i8, ptr %1467, i64 512
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1482, i32 noundef 0)
  %1483 = load ptr, ptr %4, align 8, !tbaa !5
  %1484 = getelementptr inbounds i8, ptr %1483, i64 528
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1484, i32 noundef 0)
  %1485 = load ptr, ptr %4, align 8, !tbaa !5
  %1486 = getelementptr inbounds i8, ptr %1485, i64 264
  %1487 = load i8, ptr %1486, align 8, !tbaa !205
  %1488 = icmp sgt i8 %1487, 0
  br i1 %1488, label %1489, label %1491

1489:                                             ; preds = %1475
  %1490 = add nsw i8 %1487, -1
  store i8 %1490, ptr %1486, align 8, !tbaa !205
  br label %1491

1491:                                             ; preds = %1489, %1475
  %1492 = getelementptr inbounds i8, ptr %1485, i64 265
  %1493 = load i8, ptr %1492, align 1, !tbaa !206
  %1494 = icmp sgt i8 %1493, 0
  br i1 %1494, label %1495, label %1497

1495:                                             ; preds = %1491
  %1496 = add nsw i8 %1493, -1
  store i8 %1496, ptr %1492, align 1, !tbaa !206
  br label %1497

1497:                                             ; preds = %1495, %1491
  br i1 %.0354, label %1498, label %.critedge522

1498:                                             ; preds = %1497
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1485, i32 noundef 2)
  %1499 = load ptr, ptr %4, align 8, !tbaa !5
  %1500 = getelementptr inbounds i8, ptr %44, i64 19080
  %1501 = load ptr, ptr %1500, align 8, !tbaa !253
  %1502 = icmp eq ptr %1499, %1501
  br i1 %1502, label %1503, label %.critedge522

1503:                                             ; preds = %1498
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1499, i1 noundef zeroext false)
  br label %.critedge522

.critedge522:                                     ; preds = %1497, %1503, %1498
  br i1 %364, label %1504, label %1523

1504:                                             ; preds = %.critedge522
  %1505 = load ptr, ptr %4, align 8, !tbaa !5
  %1506 = getelementptr inbounds i8, ptr %1505, i64 56
  %1507 = load ptr, ptr %1506, align 8, !tbaa !168
  %1508 = getelementptr inbounds i8, ptr %1507, i64 91
  %1509 = load i8, ptr %1508, align 1, !tbaa !279, !range !86, !noundef !87
  %1510 = trunc nuw i8 %1509 to i1
  br i1 %1510, label %1511, label %1523

1511:                                             ; preds = %1504
  %1512 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %.not459 = icmp eq ptr %1507, %1512
  br i1 %.not459, label %1523, label %1513

1513:                                             ; preds = %1511
  %1514 = getelementptr inbounds i8, ptr %44, i64 24308
  %1515 = load i32, ptr %1514, align 4, !tbaa !280
  %1516 = and i32 %1515, 256
  %.not460 = icmp eq i32 %1516, 0
  br i1 %.not460, label %1521, label %1517

1517:                                             ; preds = %1513
  %1518 = load ptr, ptr %4, align 8, !tbaa !5
  %1519 = getelementptr inbounds i8, ptr %1518, i64 8
  %1520 = load ptr, ptr %1519, align 8, !tbaa !176
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef nonnull @.str.146, ptr noundef %1520)
  br label %1521

1521:                                             ; preds = %1517, %1513
  store i8 0, ptr %1, align 1, !tbaa !158
  %1522 = getelementptr inbounds i8, ptr %44, i64 19504
  store i8 0, ptr %1522, align 8, !tbaa !281
  br label %1523

1523:                                             ; preds = %1521, %1511, %1504, %.critedge522
  %.pre622 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not424, label %1524, label %1539

1524:                                             ; preds = %1523
  %1525 = getelementptr inbounds i8, ptr %.pre622, i64 1069
  %1526 = load i8, ptr %1525, align 1
  %1527 = trunc i8 %1526 to i1
  br i1 %1527, label %1539, label %1528

1528:                                             ; preds = %1524
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #14
  %1529 = load float, ptr %36, align 8, !tbaa !282
  %1530 = getelementptr inbounds i8, ptr %.pre622, i64 140
  %1531 = load float, ptr %1530, align 4, !tbaa !228
  %1532 = fadd float %1529, %1531
  %1533 = getelementptr inbounds i8, ptr %36, i64 4
  %1534 = load float, ptr %1533, align 4, !tbaa !283
  %1535 = load float, ptr %1036, align 8, !tbaa !284
  %1536 = fsub float %1535, %1531
  %1537 = getelementptr inbounds i8, ptr %36, i64 12
  %1538 = load float, ptr %1537, align 4, !tbaa !285
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %43, float noundef %1532, float noundef %1534, float noundef %1536, float noundef %1538)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef nonnull %.pre622, ptr noundef nonnull align 4 dereferenceable(16) %43, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #14
  %.pre621 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1539

1539:                                             ; preds = %1528, %1524, %1523
  %1540 = phi ptr [ %.pre621, %1528 ], [ %.pre622, %1524 ], [ %.pre622, %1523 ]
  %1541 = getelementptr inbounds i8, ptr %1540, i64 658
  store i16 0, ptr %1541, align 2, !tbaa !286
  %1542 = getelementptr inbounds i8, ptr %1540, i64 656
  store i16 0, ptr %1542, align 8, !tbaa !287
  %1543 = load i32, ptr %468, align 8, !tbaa !186
  %1544 = and i32 %1543, 64
  %.not461 = icmp eq i32 %1544, 0
  br i1 %.not461, label %1583, label %1545

1545:                                             ; preds = %1539
  %1546 = getelementptr inbounds i8, ptr %44, i64 16432
  %1547 = load ptr, ptr %1546, align 8, !tbaa !288
  %1548 = icmp eq ptr %1547, %1540
  br i1 %1548, label %1549, label %1563

1549:                                             ; preds = %1545
  %1550 = getelementptr inbounds i8, ptr %44, i64 89
  %1551 = load i8, ptr %1550, align 1, !tbaa !289, !range !86, !noundef !87
  %1552 = getelementptr inbounds i8, ptr %44, i64 3625
  %1553 = load i8, ptr %1552, align 1, !tbaa !290, !range !86, !noundef !87
  %1554 = icmp eq i8 %1551, %1553
  br i1 %1554, label %1555, label %1563

1555:                                             ; preds = %1549
  %1556 = getelementptr inbounds i8, ptr %1540, i64 968
  %1557 = load ptr, ptr %1556, align 8, !tbaa !291
  %1558 = getelementptr inbounds i8, ptr %1557, i64 20
  %1559 = load i32, ptr %1558, align 4, !tbaa !114
  %1560 = and i32 %1559, 2097152
  %1561 = icmp eq i32 %1560, 0
  br i1 %1561, label %1562, label %1563

1562:                                             ; preds = %1555
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef nonnull %1540)
  %.pre625.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1563

1563:                                             ; preds = %1555, %1562, %1549, %1545
  %.pre625 = phi ptr [ %1540, %1555 ], [ %.pre625.pre, %1562 ], [ %1540, %1549 ], [ %1540, %1545 ]
  %1564 = getelementptr inbounds i8, ptr %44, i64 19528
  %1565 = load i8, ptr %1564, align 8, !tbaa !292, !range !86, !noundef !87
  %1566 = trunc nuw i8 %1565 to i1
  %1567 = and i32 %481, 2097152
  %.not462 = icmp eq i32 %1567, 0
  %or.cond523 = select i1 %1566, i1 %.not462, i1 false
  br i1 %or.cond523, label %1568, label %1583

1568:                                             ; preds = %1563
  %1569 = load ptr, ptr %1546, align 8, !tbaa !288
  %1570 = icmp eq ptr %1569, null
  br i1 %1570, label %1574, label %1571

1571:                                             ; preds = %1568
  %1572 = getelementptr inbounds i8, ptr %1569, i64 968
  %1573 = load ptr, ptr %1572, align 8, !tbaa !291
  %.not463 = icmp eq ptr %1573, %.pre625
  br i1 %.not463, label %1583, label %1574

1574:                                             ; preds = %1571, %1568
  %1575 = getelementptr inbounds i8, ptr %.pre625, i64 968
  %1576 = load ptr, ptr %1575, align 8, !tbaa !291
  %1577 = icmp eq ptr %.pre625, %1576
  br i1 %1577, label %1578, label %1583

1578:                                             ; preds = %1574
  %1579 = getelementptr inbounds i8, ptr %.pre625, i64 20
  %1580 = load i32, ptr %1579, align 4, !tbaa !114
  %1581 = and i32 %1580, 536870912
  %.not464 = icmp eq i32 %1581, 0
  br i1 %.not464, label %1582, label %1583

1582:                                             ; preds = %1578
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef nonnull %.pre625)
  %.pre624 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1583

1583:                                             ; preds = %1563, %1574, %1578, %1582, %1571, %1539
  %1584 = phi ptr [ %.pre625, %1563 ], [ %.pre625, %1574 ], [ %.pre625, %1578 ], [ %.pre624, %1582 ], [ %.pre625, %1571 ], [ %1540, %1539 ]
  %1585 = getelementptr inbounds i8, ptr %1584, i64 1069
  %1586 = load i8, ptr %1585, align 1
  %1587 = trunc i8 %1586 to i1
  %1588 = getelementptr inbounds i8, ptr %1584, i64 172
  %1589 = load i32, ptr %1588, align 4, !tbaa !293
  %1590 = getelementptr inbounds i8, ptr %44, i64 18584
  %1591 = load i32, ptr %1590, align 8, !tbaa !294
  br i1 %1587, label %1592, label %1596

1592:                                             ; preds = %1583
  %1593 = getelementptr inbounds i8, ptr %1584, i64 1116
  %1594 = load i32, ptr %1593, align 4, !tbaa !295
  %1595 = getelementptr inbounds i8, ptr %1584, i64 1120
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1589, i32 noundef %1591, i32 noundef %1594, ptr noundef nonnull align 4 dereferenceable(16) %1595)
  br label %1599

1596:                                             ; preds = %1583
  %1597 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %1036, i1 noundef zeroext false)
  %1598 = zext i1 %1597 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1589, i32 noundef %1591, i32 noundef %1598, ptr noundef nonnull align 4 dereferenceable(16) %36)
  br label %1599

1599:                                             ; preds = %1596, %1592
  %1600 = getelementptr inbounds i8, ptr %44, i64 18588
  %1601 = load i32, ptr %1600, align 4, !tbaa !296
  %.not465 = icmp eq i32 %1601, 0
  br i1 %.not465, label %1612, label %1602

1602:                                             ; preds = %1599
  %1603 = load ptr, ptr %4, align 8, !tbaa !5
  %1604 = getelementptr inbounds i8, ptr %1603, i64 16
  %1605 = load i32, ptr %1604, align 8, !tbaa !142
  %1606 = icmp eq i32 %1605, %1601
  br i1 %1606, label %1611, label %1607

1607:                                             ; preds = %1602
  %1608 = getelementptr inbounds i8, ptr %1603, i64 172
  %1609 = load i32, ptr %1608, align 4, !tbaa !293
  %1610 = icmp eq i32 %1609, %1601
  br i1 %1610, label %1611, label %1612

1611:                                             ; preds = %1607, %1602
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1612

1612:                                             ; preds = %1611, %1607, %1599
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  br label %1618

1613:                                             ; preds = %355
  %1614 = load ptr, ptr %4, align 8, !tbaa !5
  %1615 = getelementptr inbounds i8, ptr %1614, i64 56
  %1616 = load ptr, ptr %1615, align 8, !tbaa !168
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1614, ptr noundef %1616)
  %1617 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1617)
  br label %1618

1618:                                             ; preds = %1613, %1612
  %.4 = phi i32 [ %481, %1612 ], [ %.3, %1613 ]
  %1619 = and i32 %.4, 536870912
  %.not466 = icmp eq i32 %1619, 0
  %.pre627 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not466, label %1620, label %1623

1620:                                             ; preds = %1618
  %1621 = getelementptr inbounds i8, ptr %.pre627, i64 576
  %1622 = getelementptr inbounds i8, ptr %.pre627, i64 584
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1621, ptr noundef nonnull align 4 dereferenceable(8) %1622, i1 noundef zeroext true)
  %.pre626 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1623

1623:                                             ; preds = %1620, %1618
  %1624 = phi ptr [ %.pre626, %1620 ], [ %.pre627, %1618 ]
  %1625 = getelementptr inbounds i8, ptr %1624, i64 237
  store i8 0, ptr %1625, align 1, !tbaa !297
  %1626 = getelementptr inbounds i8, ptr %1624, i64 248
  %1627 = load i16, ptr %1626, align 8, !tbaa !298
  %1628 = add i16 %1627, 1
  store i16 %1628, ptr %1626, align 8, !tbaa !298
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144) %134)
  %.pre630 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not388, label %1757, label %1629

1629:                                             ; preds = %1623
  %1630 = getelementptr inbounds i8, ptr %.pre630, i64 1069
  %1631 = load i8, ptr %1630, align 1
  %1632 = trunc i8 %1631 to i1
  %1633 = and i8 %1631, 4
  %.not467 = icmp eq i8 %1633, 0
  %or.cond524 = and i1 %.not467, %1632
  br i1 %or.cond524, label %1634, label %1643

1634:                                             ; preds = %1629
  %1635 = getelementptr inbounds i8, ptr %.pre630, i64 668
  %1636 = load i32, ptr %1635, align 4, !tbaa !299
  %1637 = load i32, ptr %56, align 8, !tbaa !89
  %1638 = icmp eq i32 %1636, %1637
  br i1 %1638, label %1639, label %1641

1639:                                             ; preds = %1634
  %1640 = getelementptr inbounds i8, ptr %.pre630, i64 273
  store i8 1, ptr %1640, align 1, !tbaa !161
  br label %1643

1641:                                             ; preds = %1634
  %1642 = getelementptr inbounds i8, ptr %.pre630, i64 272
  store i8 1, ptr %1642, align 8, !tbaa !180
  br label %1643

1643:                                             ; preds = %1639, %1641, %1629
  %1644 = and i32 %.4, 16777216
  %.not468 = icmp eq i32 %1644, 0
  br i1 %.not468, label %.critedge527, label %1645

1645:                                             ; preds = %1643
  %1646 = and i32 %.4, 1
  %.not469 = icmp ne i32 %1646, 0
  %brmerge = or i1 %.not469, %1632
  br i1 %brmerge, label %.critedge8, label %1647

1647:                                             ; preds = %1645
  call void @__assert_fail(ptr noundef nonnull @.str.147, ptr noundef nonnull @.str.3, i32 noundef 7376, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

.critedge8:                                       ; preds = %1645
  %1648 = and i32 %.4, 64
  %.not470 = icmp eq i32 %1648, 0
  br i1 %.not470, label %1649, label %1691

1649:                                             ; preds = %.critedge8
  %1650 = getelementptr inbounds i8, ptr %.pre630, i64 264
  %1651 = load i8, ptr %1650, align 8, !tbaa !205
  %1652 = icmp slt i8 %1651, 1
  br i1 %1652, label %1653, label %1691

1653:                                             ; preds = %1649
  %1654 = getelementptr inbounds i8, ptr %.pre630, i64 265
  %1655 = load i8, ptr %1654, align 1, !tbaa !206
  %1656 = icmp slt i8 %1655, 1
  br i1 %1656, label %1657, label %1691

1657:                                             ; preds = %1653
  %1658 = and i32 %.4, 8388608
  %.not471 = icmp eq i32 %1658, 0
  br i1 %.not471, label %1672, label %1659

1659:                                             ; preds = %1657
  %1660 = getelementptr inbounds i8, ptr %44, i64 19144
  %1661 = load i8, ptr %1660, align 8, !tbaa !300, !range !86, !noundef !87
  %1662 = trunc nuw i8 %1661 to i1
  br i1 %1662, label %1663, label %1672

1663:                                             ; preds = %1659
  %1664 = getelementptr inbounds i8, ptr %44, i64 19080
  %1665 = load ptr, ptr %1664, align 8, !tbaa !253
  %.not472 = icmp eq ptr %1665, null
  br i1 %.not472, label %1672, label %1666

1666:                                             ; preds = %1663
  %1667 = getelementptr inbounds i8, ptr %1665, i64 984
  %1668 = load ptr, ptr %1667, align 8, !tbaa !301
  %1669 = getelementptr inbounds i8, ptr %.pre630, i64 984
  %1670 = load ptr, ptr %1669, align 8, !tbaa !301
  %1671 = icmp eq ptr %1668, %1670
  br label %1672

1672:                                             ; preds = %1659, %1663, %1666, %1657
  %1673 = phi i1 [ false, %1657 ], [ false, %1663 ], [ false, %1659 ], [ %1671, %1666 ]
  %1674 = getelementptr inbounds i8, ptr %44, i64 24240
  %1675 = load i8, ptr %1674, align 8, !tbaa !302, !range !86, !noundef !87
  %1676 = trunc nuw i8 %1675 to i1
  %brmerge525 = select i1 %1676, i1 true, i1 %1673
  br i1 %brmerge525, label %1691, label %1677

1677:                                             ; preds = %1672
  %1678 = getelementptr inbounds i8, ptr %.pre630, i64 544
  %1679 = load float, ptr %1678, align 8, !tbaa !303
  %1680 = getelementptr inbounds i8, ptr %.pre630, i64 552
  %1681 = load float, ptr %1680, align 8, !tbaa !304
  %1682 = fcmp ult float %1679, %1681
  br i1 %1682, label %1683, label %1689

1683:                                             ; preds = %1677
  %1684 = getelementptr inbounds i8, ptr %.pre630, i64 548
  %1685 = load float, ptr %1684, align 4, !tbaa !226
  %1686 = getelementptr inbounds i8, ptr %.pre630, i64 556
  %1687 = load float, ptr %1686, align 4, !tbaa !305
  %1688 = fcmp ult float %1685, %1687
  br i1 %1688, label %1691, label %1689

1689:                                             ; preds = %1683, %1677
  %1690 = getelementptr inbounds i8, ptr %.pre630, i64 272
  store i8 1, ptr %1690, align 8, !tbaa !180
  br label %1691

1691:                                             ; preds = %1689, %1683, %1672, %1653, %1649, %.critedge8
  br i1 %200, label %.critedge527, label %1692

1692:                                             ; preds = %1691
  %1693 = getelementptr inbounds i8, ptr %199, i64 238
  %1694 = load i8, ptr %1693, align 2, !tbaa !200, !range !86, !noundef !87
  %1695 = trunc nuw i8 %1694 to i1
  br i1 %1695, label %.thread552, label %1697

.thread552:                                       ; preds = %1692
  %1696 = getelementptr inbounds i8, ptr %.pre630, i64 272
  store i8 1, ptr %1696, align 8, !tbaa !180
  br label %1706

1697:                                             ; preds = %1692
  %1698 = getelementptr inbounds i8, ptr %199, i64 272
  %1699 = load i8, ptr %1698, align 8, !tbaa !180
  %1700 = icmp sgt i8 %1699, 0
  br i1 %1700, label %1701, label %.thread551

1701:                                             ; preds = %1697
  %1702 = getelementptr inbounds i8, ptr %.pre630, i64 272
  store i8 1, ptr %1702, align 8, !tbaa !180
  br label %.thread551

.thread551:                                       ; preds = %1697, %1701
  %1703 = getelementptr inbounds i8, ptr %199, i64 273
  %1704 = load i8, ptr %1703, align 1, !tbaa !161
  %1705 = icmp sgt i8 %1704, 0
  br i1 %1705, label %1706, label %.critedge527

1706:                                             ; preds = %.thread552, %.thread551
  %1707 = getelementptr inbounds i8, ptr %.pre630, i64 273
  store i8 1, ptr %1707, align 1, !tbaa !161
  br label %.critedge527

.critedge527:                                     ; preds = %1691, %.thread551, %1706, %1643
  %1708 = load float, ptr %45, align 4, !tbaa !306
  %1709 = fcmp ugt float %1708, 0.000000e+00
  %.phi.trans.insert628 = getelementptr inbounds i8, ptr %.pre630, i64 272
  br i1 %1709, label %1710, label %.thread647

.thread647:                                       ; preds = %.critedge527
  store i8 1, ptr %.phi.trans.insert628, align 8, !tbaa !180
  br label %.thread553

1710:                                             ; preds = %.critedge527
  %.pre629 = load i8, ptr %.phi.trans.insert628, align 8, !tbaa !180
  %1711 = icmp sgt i8 %.pre629, 0
  br i1 %1711, label %.thread553, label %1712

1712:                                             ; preds = %1710
  %1713 = getelementptr inbounds i8, ptr %.pre630, i64 273
  %1714 = load i8, ptr %1713, align 1, !tbaa !161
  %1715 = icmp sgt i8 %1714, 0
  br i1 %1715, label %.thread553, label %1716

1716:                                             ; preds = %1712
  %1717 = getelementptr inbounds i8, ptr %.pre630, i64 274
  %1718 = load i8, ptr %1717, align 2, !tbaa !181
  %1719 = icmp sgt i8 %1718, 0
  %1720 = zext i1 %1719 to i8
  br label %.thread553

.thread553:                                       ; preds = %.thread647, %1710, %1716, %1712
  %.not576 = phi i1 [ false, %1712 ], [ true, %1716 ], [ false, %1710 ], [ false, %.thread647 ]
  %1721 = phi i8 [ 1, %1712 ], [ %1720, %1716 ], [ 1, %1710 ], [ 1, %.thread647 ]
  %1722 = getelementptr inbounds i8, ptr %.pre630, i64 242
  store i8 %1721, ptr %1722, align 2, !tbaa !307
  %1723 = getelementptr inbounds i8, ptr %.pre630, i64 275
  %1724 = load i8, ptr %1723, align 1, !tbaa !308
  %1725 = icmp sgt i8 %1724, 0
  br i1 %1725, label %1726, label %1731

1726:                                             ; preds = %.thread553
  %1727 = add nsw i8 %1724, -1
  store i8 %1727, ptr %1723, align 1, !tbaa !308
  %1728 = getelementptr inbounds i8, ptr %.pre630, i64 20
  %1729 = load i32, ptr %1728, align 4, !tbaa !114
  %1730 = or i32 %1729, 786944
  store i32 %1730, ptr %1728, align 4, !tbaa !114
  br label %1731

1731:                                             ; preds = %1726, %.thread553
  %1732 = getelementptr inbounds i8, ptr %.pre630, i64 238
  %1733 = load i8, ptr %1732, align 2, !tbaa !200, !range !86, !noundef !87
  %1734 = trunc nuw i8 %1733 to i1
  br i1 %1734, label %1739, label %1735

1735:                                             ; preds = %1731
  %1736 = getelementptr inbounds i8, ptr %.pre630, i64 235
  %1737 = load i8, ptr %1736, align 1, !tbaa !162, !range !86, !noundef !87
  %1738 = trunc nuw i8 %1737 to i1
  %brmerge529.not = and i1 %.not576, %1738
  br i1 %brmerge529.not, label %.thread555, label %1739

1739:                                             ; preds = %1735, %1731
  %1740 = getelementptr inbounds i8, ptr %.pre630, i64 264
  %1741 = load i8, ptr %1740, align 8, !tbaa !205
  %1742 = icmp slt i8 %1741, 1
  br i1 %1742, label %1743, label %.thread555

1743:                                             ; preds = %1739
  %1744 = getelementptr inbounds i8, ptr %.pre630, i64 265
  %1745 = load i8, ptr %1744, align 1, !tbaa !206
  %1746 = icmp slt i8 %1745, 1
  br i1 %1746, label %1748, label %.thread555

.thread555:                                       ; preds = %1743, %1739, %1735
  %1747 = getelementptr inbounds i8, ptr %.pre630, i64 240
  store i8 0, ptr %1747, align 8, !tbaa !309
  br label %1757

1748:                                             ; preds = %1743
  %1749 = getelementptr inbounds i8, ptr %.pre630, i64 273
  %1750 = load i8, ptr %1749, align 1, !tbaa !161
  %1751 = icmp slt i8 %1750, 1
  %spec.select530 = zext i1 %1751 to i8
  %1752 = getelementptr inbounds i8, ptr %.pre630, i64 240
  store i8 %spec.select530, ptr %1752, align 8, !tbaa !309
  br i1 %1751, label %1753, label %1757

1753:                                             ; preds = %1748
  %1754 = getelementptr inbounds i8, ptr %.pre630, i64 404
  %1755 = load i16, ptr %1754, align 4, !tbaa !266
  %1756 = getelementptr inbounds i8, ptr %.pre630, i64 406
  store i16 %1755, ptr %1756, align 2, !tbaa !265
  br label %1757

1757:                                             ; preds = %.thread555, %1748, %1753, %1623
  %1758 = getelementptr inbounds i8, ptr %.pre630, i64 243
  %1759 = load i8, ptr %1758, align 1, !tbaa !107, !range !86, !noundef !87
  %1760 = trunc nuw i8 %1759 to i1
  br i1 %1760, label %1787, label %1761

1761:                                             ; preds = %1757
  %1762 = getelementptr inbounds i8, ptr %44, i64 128
  %1763 = load i8, ptr %1762, align 8, !tbaa !310, !range !86, !noundef !87
  %1764 = trunc nuw i8 %1763 to i1
  %brmerge533.demorgan = and i1 %61, %1764
  br i1 %brmerge533.demorgan, label %1775, label %1765

1765:                                             ; preds = %1761
  %1766 = getelementptr inbounds i8, ptr %44, i64 129
  %1767 = load i8, ptr %1766, align 1, !tbaa !311, !range !86, !noundef !87
  %1768 = trunc nuw i8 %1767 to i1
  br i1 %1768, label %1769, label %1787

1769:                                             ; preds = %1765
  %1770 = getelementptr inbounds i8, ptr %44, i64 24354
  %1771 = load i8, ptr %1770, align 2, !tbaa !312
  %1772 = sext i8 %1771 to i32
  %1773 = load i32, ptr %75, align 8, !tbaa !105
  %1774 = icmp eq i32 %1773, %1772
  br i1 %1774, label %1775, label %1787

1775:                                             ; preds = %1761, %1769
  %1776 = getelementptr inbounds i8, ptr %.pre630, i64 264
  %1777 = load i8, ptr %1776, align 8, !tbaa !205
  %1778 = icmp sgt i8 %1777, 0
  br i1 %1778, label %1779, label %1781

1779:                                             ; preds = %1775
  %1780 = add nuw i8 %1777, 1
  store i8 %1780, ptr %1776, align 8, !tbaa !205
  br label %1781

1781:                                             ; preds = %1779, %1775
  %1782 = getelementptr inbounds i8, ptr %.pre630, i64 265
  %1783 = load i8, ptr %1782, align 1, !tbaa !206
  %1784 = icmp sgt i8 %1783, 0
  br i1 %1784, label %1785, label %1792

1785:                                             ; preds = %1781
  %1786 = add nuw i8 %1783, 1
  store i8 %1786, ptr %1782, align 1, !tbaa !206
  br label %1792

1787:                                             ; preds = %1769, %1765, %1757
  %1788 = getelementptr inbounds i8, ptr %.pre630, i64 240
  %1789 = load i8, ptr %1788, align 8, !tbaa !309, !range !86, !noundef !87
  %1790 = trunc nuw i8 %1789 to i1
  %1791 = xor i1 %1790, true
  br label %1792

1792:                                             ; preds = %1781, %1785, %1787
  %.0338 = phi i1 [ %1791, %1787 ], [ false, %1785 ], [ false, %1781 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %5) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %.0338
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui15GetMainViewportEv() local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef, i1 noundef zeroext) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef, ptr noundef) local_unnamed_addr #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86)) unnamed_addr #11 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(86)) local_unnamed_addr #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui14PushFocusScopeEj(i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #11 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) local_unnamed_addr #1

declare void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196)) local_unnamed_addr #10

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #12

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1136)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1136)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320)) local_unnamed_addr #8 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, i32 noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef) local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), i1 noundef zeroext, i1 noundef zeroext, i32 noundef, ptr noundef, float noundef) local_unnamed_addr #9

declare void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26), float noundef, i1 noundef zeroext) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef, ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv() local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #4 align 2

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

!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 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 16256}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14336, !23, i64 14552, !14, i64 15676, !14, i64 15680, !6, i64 15688, !16, i64 15696, !16, i64 15700, !24, i64 15704, !27, i64 16232, !14, i64 16240, !14, i64 16244, !14, i64 16248, !14, i64 16252, !12, i64 16256, !12, i64 16257, !12, i64 16258, !12, i64 16259, !12, i64 16260, !6, i64 16264, !28, i64 16272, !28, i64 16288, !17, i64 16304, !14, i64 16308, !29, i64 16312, !29, i64 16328, !29, i64 16344, !30, i64 16360, !31, i64 16376, !14, i64 16392, !15, i64 16396, !6, i64 16408, !6, i64 16416, !6, i64 16424, !6, i64 16432, !6, i64 16440, !15, i64 16448, !14, i64 16456, !16, i64 16460, !15, i64 16464, !15, i64 16472, !14, i64 16480, !14, i64 16484, !14, i64 16488, !12, i64 16492, !12, i64 16493, !16, i64 16496, !16, i64 16500, !14, i64 16504, !14, i64 16508, !16, i64 16512, !12, i64 16516, !12, i64 16517, !12, i64 16518, !12, i64 16519, !12, i64 16520, !12, i64 16521, !15, i64 16524, !6, i64 16536, !33, i64 16544, !14, i64 16548, !14, i64 16552, !12, i64 16556, !12, i64 16557, !6, i64 16560, !14, i64 16568, !16, i64 16572, !7, i64 16576, !34, i64 18256, !14, i64 18568, !12, i64 18572, !14, i64 18576, !14, i64 18580, !14, i64 18584, !14, i64 18588, !36, i64 18592, !37, i64 18616, !39, i64 18680, !41, i64 18824, !42, i64 18840, !43, i64 18856, !44, i64 18872, !45, i64 18888, !46, i64 18904, !47, i64 18920, !47, i64 18936, !14, i64 18952, !48, i64 18960, !16, i64 18976, !6, i64 18984, !6, i64 18992, !6, i64 19000, !14, i64 19008, !49, i64 19016, !14, i64 19064, !14, i64 19068, !14, i64 19072, !6, i64 19080, !14, i64 19088, !14, i64 19092, !14, i64 19096, !14, i64 19100, !14, i64 19104, !14, i64 19108, !14, i64 19112, !14, i64 19116, !14, i64 19120, !14, i64 19124, !14, i64 19128, !33, i64 19132, !50, i64 19136, !12, i64 19140, !12, i64 19141, !12, i64 19142, !12, i64 19143, !12, i64 19144, !12, i64 19145, !12, i64 19146, !51, i64 19152, !12, i64 19200, !12, i64 19201, !12, i64 19202, !14, i64 19204, !14, i64 19208, !14, i64 19212, !14, i64 19216, !14, i64 19220, !14, i64 19224, !38, i64 19228, !38, i64 19244, !14, i64 19260, !14, i64 19264, !14, i64 19268, !51, i64 19272, !51, i64 19320, !51, i64 19368, !51, i64 19416, !14, i64 19464, !14, i64 19468, !6, i64 19472, !6, i64 19480, !6, i64 19488, !16, i64 19496, !16, i64 19500, !12, i64 19504, !15, i64 19508, !15, i64 19516, !16, i64 19524, !12, i64 19528, !12, i64 19529, !12, i64 19530, !14, i64 19532, !14, i64 19536, !14, i64 19540, !52, i64 19544, !38, i64 19608, !14, i64 19624, !14, i64 19628, !16, i64 19632, !14, i64 19636, !14, i64 19640, !14, i64 19644, !14, i64 19648, !53, i64 19656, !7, i64 19672, !14, i64 19688, !54, i64 19696, !6, i64 19712, !14, i64 19720, !55, i64 19728, !56, i64 19744, !58, i64 19784, !59, i64 19800, !6, i64 19816, !60, i64 19824, !62, i64 19864, !63, i64 19880, !14, i64 19896, !14, i64 19900, !16, i64 19904, !16, i64 19908, !14, i64 19912, !14, i64 19916, !14, i64 19920, !16, i64 19924, !15, i64 19928, !64, i64 19936, !68, i64 23664, !69, i64 23688, !14, i64 23808, !14, i64 23812, !14, i64 23816, !14, i64 23820, !16, i64 23824, !16, i64 23828, !14, i64 23832, !25, i64 23836, !71, i64 23852, !16, i64 23900, !16, i64 23904, !12, i64 23908, !12, i64 23909, !16, i64 23912, !16, i64 23916, !16, i64 23920, !16, i64 23924, !18, i64 23928, !18, i64 23930, !65, i64 23936, !44, i64 23952, !72, i64 23968, !72, i64 23984, !14, i64 24000, !7, i64 24004, !73, i64 24008, !6, i64 24064, !12, i64 24072, !16, i64 24076, !76, i64 24080, !77, i64 24096, !78, i64 24112, !79, i64 24128, !80, i64 24144, !14, i64 24160, !7, i64 24168, !12, i64 24240, !81, i64 24244, !6, i64 24248, !76, i64 24256, !6, i64 24272, !6, i64 24280, !16, i64 24288, !12, i64 24292, !14, i64 24296, !14, i64 24300, !14, i64 24304, !14, i64 24308, !76, i64 24312, !82, i64 24328, !7, i64 24352, !7, i64 24353, !7, i64 24354, !12, i64 24355, !7, i64 24356, !14, i64 24360, !83, i64 24364, !84, i64 24384, !6, i64 24424, !7, i64 24432, !14, i64 24672, !14, i64 24676, !16, i64 24680, !14, i64 24684, !14, i64 24688, !14, i64 24692, !65, i64 24696}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS7ImGuiIO", !14, i64 0, !14, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !12, i64 60, !6, i64 64, !15, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91, !12, i64 92, !12, i64 93, !12, i64 94, !12, i64 95, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !12, i64 120, !12, i64 121, !12, i64 122, !12, i64 123, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !12, i64 208, !12, i64 209, !12, i64 210, !12, i64 211, !12, i64 212, !12, i64 213, !12, i64 214, !16, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !14, i64 236, !15, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !15, i64 3584, !7, i64 3592, !16, i64 3600, !16, i64 3604, !17, i64 3608, !14, i64 3612, !12, i64 3616, !12, i64 3617, !12, i64 3618, !12, i64 3619, !14, i64 3620, !7, i64 3624, !12, i64 14056, !15, i64 14060, !7, i64 14068, !7, i64 14112, !7, i64 14152, !7, i64 14157, !7, i64 14162, !7, i64 14172, !7, i64 14182, !7, i64 14187, !7, i64 14192, !12, i64 14197, !7, i64 14200, !7, i64 14220, !7, i64 14240, !7, i64 14280, !16, i64 14300, !12, i64 14304, !12, i64 14305, !7, i64 14306, !12, i64 14307, !18, i64 14308, !19, i64 14312}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiPlatformIO", !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, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !21, i64 184, !22, i64 200}
!21 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !14, i64 0, !14, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !14, i64 0, !14, i64 4, !6, i64 8}
!23 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !14, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !14, i64 148, !15, i64 152, !15, i64 160, !16, i64 168, !15, i64 172, !15, i64 180, !15, i64 188, !15, i64 196, !16, i64 204, !16, i64 208, !12, i64 212, !12, i64 213, !12, i64 214, !16, i64 216, !16, i64 220, !7, i64 224, !16, i64 1104, !16, i64 1108, !16, i64 1112, !14, i64 1116, !14, i64 1120}
!24 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !25, i64 28, !14, i64 44, !26, i64 48, !7, i64 64, !16, i64 448, !7, i64 452, !6, i64 520}
!25 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!26 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"double", !7, i64 0}
!28 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!31 = !{!"_ZTS12ImGuiStorage", !32, i64 0}
!32 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!34 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !35, i64 280, !35, i64 296}
!35 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!36 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !16, i64 8, !14, i64 12, !14, i64 16, !12, i64 20}
!37 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !38, i64 12, !38, i64 28, !38, i64 44}
!38 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!39 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !15, i64 20, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !12, i64 60, !12, i64 61, !38, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !14, i64 100, !14, i64 104, !40, i64 108, !15, i64 136}
!40 = !{!"_ZTS16ImGuiWindowClass", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !12, i64 24, !12, i64 25}
!41 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS20ImGuiPlatformMonitor", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !6, i64 40}
!50 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!51 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !38, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44}
!52 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !7, i64 24, !12, i64 57, !12, i64 58}
!53 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS6ImPoolI10ImGuiTableE", !57, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!57 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !61, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!61 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !65, i64 40, !65, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !66, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720}
!65 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!66 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !14, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 28, !67, i64 32}
!67 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !14, i64 3588, !14, i64 3592}
!68 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !65, i64 8}
!69 = !{!"_ZTS6ImFont", !58, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !70, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !16, i64 88, !16, i64 92, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !14, i64 112, !7, i64 116}
!70 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!71 = !{!"_ZTS21ImGuiComboPreviewData", !38, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!72 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!73 = !{!"_ZTS16ImGuiDockContext", !31, i64 0, !74, i64 16, !75, i64 32, !12, i64 48}
!74 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !14, i64 0, !14, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS15ImGuiTextBuffer", !65, i64 0}
!77 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !65, i64 0}
!79 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !65, i64 0}
!80 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!81 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!82 = !{!"_ZTS14ImGuiTextIndex", !45, i64 0, !14, i64 16}
!83 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 12, !14, i64 16}
!84 = !{!"_ZTS14ImGuiStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !85, i64 16, !12, i64 32, !16, i64 36}
!85 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!86 = !{i8 0, i8 2}
!87 = !{}
!88 = !{!11, !14, i64 16244}
!89 = !{!11, !14, i64 16240}
!90 = !{!91, !14, i64 664}
!91 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !40, i64 28, !6, i64 56, !14, i64 64, !15, i64 68, !14, i64 76, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !15, i64 184, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !12, i64 232, !12, i64 233, !12, i64 234, !12, i64 235, !12, i64 236, !12, i64 237, !12, i64 238, !12, i64 239, !12, i64 240, !12, i64 241, !12, i64 242, !12, i64 243, !12, i64 244, !12, i64 245, !7, i64 246, !18, i64 248, !18, i64 250, !18, i64 252, !18, i64 254, !18, i64 256, !14, i64 260, !7, i64 264, !7, i64 265, !7, i64 266, !12, i64 267, !14, i64 268, !7, i64 272, !7, i64 273, !7, i64 274, !7, i64 275, !14, i64 276, !14, i64 277, !14, i64 278, !14, i64 279, !15, i64 280, !15, i64 288, !44, i64 296, !92, i64 312, !38, i64 544, !38, i64 560, !38, i64 576, !38, i64 592, !38, i64 608, !38, i64 624, !38, i64 640, !95, i64 656, !95, i64 660, !14, i64 664, !14, i64 668, !16, i64 672, !16, i64 676, !31, i64 680, !96, i64 696, !16, i64 712, !16, i64 716, !14, i64 720, !6, i64 728, !97, i64 736, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !7, i64 1000, !7, i64 1008, !7, i64 1040, !14, i64 1056, !14, i64 1060, !14, i64 1064, !12, i64 1068, !12, i64 1069, !12, i64 1069, !12, i64 1069, !12, i64 1069, !18, i64 1070, !104, i64 1072, !6, i64 1096, !6, i64 1104, !14, i64 1112, !14, i64 1116, !38, i64 1120}
!92 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !12, i64 64, !12, i64 65, !93, i64 68, !93, i64 72, !93, i64 76, !15, i64 80, !50, i64 88, !18, i64 92, !18, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !94, i64 108, !14, i64 136, !14, i64 140, !29, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !16, i64 188, !16, i64 192, !58, i64 200, !58, i64 216}
!93 = !{!"_ZTS6ImVec1", !16, i64 0}
!94 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!95 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!96 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!97 = !{!"_ZTS10ImDrawList", !98, i64 0, !19, i64 16, !99, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !100, i64 88, !101, i64 104, !26, i64 120, !102, i64 136, !103, i64 168, !16, i64 192}
!98 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!99 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!100 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!101 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!102 = !{!"_ZTS15ImDrawCmdHeader", !25, i64 0, !6, i64 16, !14, i64 24}
!103 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !59, i64 8}
!104 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!105 = !{!11, !14, i64 16360}
!106 = !{!11, !12, i64 16257}
!107 = !{!91, !12, i64 243}
!108 = !{!11, !14, i64 18936}
!109 = !{!91, !14, i64 260}
!110 = !{!111, !14, i64 0}
!111 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !15, i64 36, !15, i64 44}
!112 = !{!111, !6, i64 8}
!113 = !{!91, !12, i64 241}
!114 = !{!91, !14, i64 20}
!115 = !{!91, !14, i64 24}
!116 = !{!11, !27, i64 16232}
!117 = !{!91, !16, i64 672}
!118 = !{!91, !18, i64 252}
!119 = !{!11, !14, i64 16392}
!120 = !{!91, !18, i64 254}
!121 = !{!91, !6, i64 1096}
!122 = !{!91, !6, i64 1104}
!123 = !{!11, !14, i64 18680}
!124 = !{!11, !14, i64 18784}
!125 = !{!11, !14, i64 18696}
!126 = !{!91, !14, i64 1112}
!127 = !{!128, !6, i64 136}
!128 = !{!"_ZTS13ImGuiDockNode", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !129, i64 20, !6, i64 24, !7, i64 32, !29, i64 48, !6, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !130, i64 96, !40, i64 100, !14, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 200, !14, i64 200, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 202, !12, i64 202, !12, i64 202, !12, i64 202}
!129 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!130 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!131 = !{!132, !6, i64 0}
!132 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !37, i64 8, !133, i64 68}
!133 = !{!"_ZTS15ImGuiStackSizes", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16}
!134 = !{!91, !6, i64 936}
!135 = !{!91, !14, i64 296}
!136 = !{!11, !6, i64 16408}
!137 = !{i64 0, i64 4, !138, i64 4, i64 4, !138, i64 8, i64 4, !138, i64 12, i64 4, !139, i64 16, i64 4, !139, i64 20, i64 4, !139, i64 24, i64 4, !139, i64 28, i64 4, !139, i64 32, i64 4, !139, i64 36, i64 4, !139, i64 40, i64 4, !139, i64 44, i64 4, !139, i64 48, i64 4, !139, i64 52, i64 4, !139, i64 56, i64 4, !139}
!138 = !{!14, !14, i64 0}
!139 = !{!16, !16, i64 0}
!140 = !{!11, !14, i64 18952}
!141 = !{!91, !6, i64 944}
!142 = !{!91, !14, i64 16}
!143 = !{!11, !14, i64 18580}
!144 = !{!91, !14, i64 1056}
!145 = !{!91, !50, i64 400}
!146 = !{!111, !14, i64 24}
!147 = !{!11, !14, i64 18684}
!148 = !{!11, !14, i64 18688}
!149 = !{!11, !16, i64 18716}
!150 = !{!11, !16, i64 18720}
!151 = !{!11, !16, i64 18732}
!152 = !{!91, !16, i64 200}
!153 = !{!91, !16, i64 208}
!154 = !{!11, !16, i64 18736}
!155 = !{!91, !16, i64 204}
!156 = !{!91, !16, i64 212}
!157 = !{i64 0, i64 4, !138, i64 4, i64 4, !138, i64 8, i64 4, !138, i64 12, i64 4, !138, i64 16, i64 4, !138, i64 20, i64 4, !138, i64 24, i64 1, !158, i64 25, i64 1, !158}
!158 = !{!12, !12, i64 0}
!159 = !{!11, !12, i64 18741}
!160 = !{!11, !14, i64 18692}
!161 = !{!91, !7, i64 273}
!162 = !{!91, !12, i64 235}
!163 = !{!91, !12, i64 245}
!164 = !{i64 0, i64 4, !139, i64 4, i64 4, !139, i64 8, i64 4, !139, i64 12, i64 4, !139}
!165 = !{!91, !6, i64 728}
!166 = !{!91, !14, i64 488}
!167 = !{!91, !12, i64 1068}
!168 = !{!91, !6, i64 56}
!169 = !{!170, !6, i64 96}
!170 = !{!"_ZTS14ImGuiViewportP", !171, i64 0, !6, i64 96, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !15, i64 120, !16, i64 128, !16, i64 132, !12, i64 136, !18, i64 138, !7, i64 140, !7, i64 152, !172, i64 168, !174, i64 232, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312}
!171 = !{!"_ZTS13ImGuiViewport", !14, i64 0, !14, i64 4, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91}
!172 = !{!"_ZTS10ImDrawData", !12, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !173, i64 16, !15, i64 32, !15, i64 40, !15, i64 48, !6, i64 56}
!173 = !{!"_ZTS8ImVectorIP10ImDrawListE", !14, i64 0, !14, i64 4, !6, i64 8}
!174 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !173, i64 16}
!175 = !{!11, !6, i64 19488}
!176 = !{!91, !6, i64 8}
!177 = !{!91, !14, i64 168}
!178 = !{!179, !179, i64 0}
!179 = !{!"long", !7, i64 0}
!180 = !{!91, !7, i64 272}
!181 = !{!91, !7, i64 274}
!182 = !{!91, !16, i64 96}
!183 = !{!91, !16, i64 88}
!184 = !{!91, !16, i64 100}
!185 = !{!91, !16, i64 92}
!186 = !{!11, !14, i64 8}
!187 = !{!171, !16, i64 40}
!188 = !{!91, !16, i64 716}
!189 = !{!23, !16, i64 12}
!190 = !{!23, !16, i64 76}
!191 = !{!11, !16, i64 18816}
!192 = !{!91, !16, i64 412}
!193 = !{!11, !16, i64 18820}
!194 = !{!91, !16, i64 416}
!195 = !{!11, !6, i64 16416}
!196 = !{!11, !14, i64 16484}
!197 = !{!11, !14, i64 16488}
!198 = !{!18, !18, i64 0}
!199 = !{!91, !12, i64 239}
!200 = !{!91, !12, i64 238}
!201 = !{!91, !16, i64 144}
!202 = !{!91, !16, i64 152}
!203 = !{!91, !16, i64 148}
!204 = !{!91, !16, i64 156}
!205 = !{!91, !7, i64 264}
!206 = !{!91, !7, i64 265}
!207 = !{!91, !12, i64 267}
!208 = !{!15, !16, i64 4}
!209 = !{!91, !14, i64 268}
!210 = !{!91, !14, i64 456}
!211 = !{!91, !16, i64 280}
!212 = !{!91, !14, i64 76}
!213 = !{!91, !12, i64 234}
!214 = !{!171, !14, i64 4}
!215 = !{!11, !14, i64 14520}
!216 = !{!91, !16, i64 136}
!217 = !{!11, !12, i64 102}
!218 = !{!11, !16, i64 15696}
!219 = !{!91, !7, i64 246}
!220 = !{!171, !12, i64 89}
!221 = !{!171, !12, i64 90}
!222 = !{!91, !12, i64 233}
!223 = !{!91, !12, i64 232}
!224 = !{!15, !16, i64 0}
!225 = !{!23, !16, i64 116}
!226 = !{!91, !16, i64 548}
!227 = !{!91, !16, i64 128}
!228 = !{!91, !16, i64 140}
!229 = !{!91, !16, i64 576}
!230 = !{!91, !16, i64 564}
!231 = !{!91, !16, i64 580}
!232 = !{!91, !16, i64 568}
!233 = !{!91, !16, i64 584}
!234 = !{!91, !16, i64 572}
!235 = !{!91, !16, i64 588}
!236 = !{!91, !16, i64 676}
!237 = !{!91, !16, i64 104}
!238 = !{!91, !16, i64 192}
!239 = !{!91, !16, i64 108}
!240 = !{!91, !16, i64 132}
!241 = !{!91, !16, i64 196}
!242 = !{!97, !14, i64 0}
!243 = !{!244, !14, i64 32}
!244 = !{!"_ZTS9ImDrawCmd", !25, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!245 = !{!11, !6, i64 15688}
!246 = !{!69, !6, i64 64}
!247 = !{!248, !6, i64 8}
!248 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !12, i64 24, !6, i64 32, !12, i64 40, !12, i64 41, !6, i64 48, !6, i64 56, !14, i64 64, !14, i64 68, !15, i64 72, !15, i64 80, !43, i64 88, !249, i64 104, !250, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!249 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!250 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!251 = !{!97, !14, i64 32}
!252 = !{!11, !6, i64 19472}
!253 = !{!11, !6, i64 19080}
!254 = !{!91, !6, i64 976}
!255 = !{!91, !16, i64 120}
!256 = !{!91, !16, i64 124}
!257 = !{!91, !16, i64 560}
!258 = !{!91, !16, i64 184}
!259 = !{!91, !16, i64 592}
!260 = !{!91, !16, i64 188}
!261 = !{!91, !16, i64 596}
!262 = !{!91, !16, i64 648}
!263 = !{!91, !16, i64 652}
!264 = !{!91, !16, i64 380}
!265 = !{!91, !18, i64 406}
!266 = !{!91, !18, i64 404}
!267 = !{!91, !12, i64 408}
!268 = !{!91, !12, i64 409}
!269 = !{!91, !12, i64 410}
!270 = !{!91, !12, i64 411}
!271 = !{!91, !14, i64 448}
!272 = !{!91, !14, i64 452}
!273 = !{!91, !6, i64 472}
!274 = !{!91, !6, i64 480}
!275 = !{!91, !14, i64 492}
!276 = !{!91, !14, i64 496}
!277 = !{!91, !16, i64 500}
!278 = !{!91, !16, i64 504}
!279 = !{!171, !12, i64 91}
!280 = !{!11, !14, i64 24308}
!281 = !{!11, !12, i64 19504}
!282 = !{!38, !16, i64 0}
!283 = !{!38, !16, i64 4}
!284 = !{!38, !16, i64 8}
!285 = !{!38, !16, i64 12}
!286 = !{!91, !18, i64 658}
!287 = !{!91, !18, i64 656}
!288 = !{!11, !6, i64 16432}
!289 = !{!11, !12, i64 89}
!290 = !{!11, !12, i64 3625}
!291 = !{!91, !6, i64 968}
!292 = !{!11, !12, i64 19528}
!293 = !{!91, !14, i64 172}
!294 = !{!11, !14, i64 18584}
!295 = !{!91, !14, i64 1116}
!296 = !{!11, !14, i64 18588}
!297 = !{!91, !12, i64 237}
!298 = !{!91, !18, i64 248}
!299 = !{!91, !14, i64 668}
!300 = !{!11, !12, i64 19144}
!301 = !{!91, !6, i64 984}
!302 = !{!11, !12, i64 24240}
!303 = !{!91, !16, i64 544}
!304 = !{!91, !16, i64 552}
!305 = !{!91, !16, i64 556}
!306 = !{!23, !16, i64 0}
!307 = !{!91, !12, i64 242}
!308 = !{!91, !7, i64 275}
!309 = !{!91, !12, i64 240}
!310 = !{!11, !12, i64 128}
!311 = !{!11, !12, i64 129}
!312 = !{!11, !7, i64 24354}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,MergedLoadStoreMotionPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass