; LLVM IR from hadryansalles/Luz :: deps/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 }
%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, i32, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i8, i8, ptr, i32, float, double, double, double, %struct.ImBitArray, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector.14, %struct.ImVector.15, i32, %struct.ImVector.16, float, ptr, ptr, ptr, i32, %struct.ImGuiPlatformMonitor, i32, i32, i32, ptr, i32, i32, %struct.ImVector.11, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i64, i8, 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, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.17, [16 x i8], i32, %struct.ImVector.18, ptr, i32, i32, %struct.ImVector.19, %struct.ImPool, %struct.ImVector.21, %struct.ImVector.22, ptr, %struct.ImPool.23, %struct.ImVector.25, %struct.ImVector.26, 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, %struct.ImRect, i8, float, float, i8, i8, float, float, float, float, i16, i16, i16, %struct.ImVector.27, %struct.ImVector.29, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i32, [4 x i8], %struct.ImGuiDockContext, ptr, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.32, %struct.ImChunkStream, %struct.ImChunkStream.33, %struct.ImVector.34, i32, [11 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, ptr, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.27, [64 x i8] }
%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, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, [666 x i32], [666 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i32, i8, i8, i8, i8, i32, [666 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, 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.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.7, %struct.ImVector.7 }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i64, float, i32, i8, i8, [6 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, i8, [2 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiWindowClass = type <{ i32, 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.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type <{ ptr, i32, i32, %struct.ImRect, i32, [4 x i8], i64, float, float, float, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.20, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImPool.23 = type { %struct.ImVector.24, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.27, %struct.ImVector.27, 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.27 }
%struct.ImFont = type <{ %struct.ImVector.21, float, float, %struct.ImVector, %struct.ImVector.28, 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.28 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImGuiTypingSelectState = type <{ %struct.ImGuiTypingSelectRequest, [64 x i8], i32, i32, float, i8, [3 x i8] }>
%struct.ImGuiTypingSelectRequest = type { i32, i32, ptr, i8, i8, i8 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.30, %struct.ImVector.31, i8, [7 x i8] }>
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.27 }
%struct.ImChunkStream.33 = type { %struct.ImVector.27 }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.27 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.12, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.35, i8, float }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiWindow = type { ptr, ptr, i32, 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, i8, i16, i16, i16, i16, i16, i32, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.29, %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.38, float, float, i32, ptr, %struct.ImDrawList, ptr, 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.21, %struct.ImVector.21 }
%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.38 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.39, %struct.ImVector, %struct.ImVector.40, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.41, %struct.ImVector.42, %struct.ImVector.2, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImVector.41 = type { i32, i32, ptr }
%struct.ImVector.42 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.22 }
%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, 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.51, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImVector.51 = type { i32, i32, ptr }
%struct.ImDrawDataBuilder = type { [2 x ptr], %struct.ImVector.51 }
%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.49, %struct.ImVector.50, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.49 = type { i32, i32, ptr }
%struct.ImVector.50 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.162 = 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> @_ZL7ImTruncRK6ImVec2(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 @_ZL7ImTruncf(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 @_ZL7ImFloorf(float noundef) #4

; 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: nounwind
declare void @llvm.debugtrap() #12

; 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(1152)) #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: 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 i32, align 4
  %69 = alloca [4 x i32], align 16
  %70 = alloca i32, align 4
  %71 = alloca float, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.ImRect, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca %struct.ImVec2, align 4
  %79 = alloca float, align 4
  %80 = alloca float, align 4
  %81 = alloca %struct.ImVec2, align 4
  %82 = alloca %struct.ImRect, align 4
  %83 = alloca %struct.ImRect, align 4
  %84 = alloca %struct.ImRect, align 4
  %85 = alloca float, align 4
  %86 = alloca %struct.ImVec2, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca i8, align 1
  %92 = alloca %struct.ImRect, align 4
  %93 = alloca %struct.ImRect, align 4
  %94 = alloca i8, align 1
  %95 = alloca ptr, align 8
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca i8, align 1
  %99 = alloca float, align 4
  %100 = alloca float, align 4
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca %struct.ImVec2, align 4
  %104 = alloca %struct.ImVec2, align 4
  %105 = alloca %struct.ImVec2, align 4
  %106 = alloca %struct.ImRect, align 4
  %107 = alloca i8, align 1
  %108 = alloca i8, align 1
  %109 = alloca i8, align 1
  %110 = 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) #12
  %111 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %111, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #12
  %112 = load ptr, ptr %8, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.ImGuiContext, ptr %112, i32 0, i32 4
  store ptr %113, ptr %9, align 8, !tbaa !5
  %114 = load ptr, ptr %5, align 8, !tbaa !5
  %115 = icmp ne ptr %114, null
  br i1 %115, label %116, label %122

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

122:                                              ; preds = %116, %3
  %123 = phi i1 [ false, %3 ], [ %121, %116 ]
  br i1 %123, label %124, label %125

124:                                              ; preds = %122
  br label %127

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

126:                                              ; No predecessors!
  br label %127

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

132:                                              ; preds = %127
  br label %135

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

134:                                              ; No predecessors!
  br label %135

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

143:                                              ; preds = %135
  br label %146

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

145:                                              ; No predecessors!
  br label %146

146:                                              ; preds = %145, %143
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #12
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %147)
  store ptr %148, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #12
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = icmp eq ptr %149, null
  %151 = zext i1 %150 to i8
  store i8 %151, ptr %11, align 1, !tbaa !98
  %152 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %153 = trunc i8 %152 to i1
  br i1 %153, label %154, label %158

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

158:                                              ; preds = %154, %146
  %159 = load ptr, ptr %8, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.ImGuiContext, ptr %159, i32 0, i32 33
  %161 = load i32, ptr %160, align 4, !tbaa !99
  %162 = load ptr, ptr %10, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.ImGuiWindow, ptr %162, i32 0, i32 2
  %164 = load i32, ptr %163, align 8, !tbaa !100
  %165 = icmp eq i32 %161, %164
  br i1 %165, label %166, label %167

166:                                              ; preds = %158
  call void @llvm.debugtrap()
  br label %167

167:                                              ; preds = %166, %158
  %168 = load i32, ptr %7, align 4, !tbaa !9
  %169 = and i32 %168, 197120
  %170 = icmp eq i32 %169, 197120
  br i1 %170, label %171, label %174

171:                                              ; preds = %167
  %172 = load i32, ptr %7, align 4, !tbaa !9
  %173 = or i32 %172, 6
  store i32 %173, ptr %7, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %171, %167
  %175 = load i32, ptr %7, align 4, !tbaa !9
  %176 = and i32 %175, 8388608
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %186

178:                                              ; preds = %174
  %179 = load i32, ptr %7, align 4, !tbaa !9
  %180 = and i32 %179, 16777216
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %178
  br label %185

183:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str.153, ptr noundef @.str.3, i32 noundef 6757, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

184:                                              ; No predecessors!
  br label %185

185:                                              ; preds = %184, %182
  br label %186

186:                                              ; preds = %185, %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  %187 = load ptr, ptr %8, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.ImGuiContext, ptr %187, i32 0, i32 12
  %189 = load i32, ptr %188, align 8, !tbaa !97
  store i32 %189, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #12
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.ImGuiWindow, ptr %190, i32 0, i32 80
  %192 = load i32, ptr %191, align 8, !tbaa !115
  %193 = load i32, ptr %12, align 4, !tbaa !9
  %194 = icmp ne i32 %192, %193
  %195 = zext i1 %194 to i8
  store i8 %195, ptr %13, align 1, !tbaa !98
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.ImGuiContext, ptr %196, i32 0, i32 29
  %198 = getelementptr inbounds %struct.ImVector.5, ptr %197, i32 0, i32 0
  %199 = load i32, ptr %198, align 8, !tbaa !116
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %206

201:                                              ; preds = %186
  %202 = load ptr, ptr %8, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiContext, ptr %202, i32 0, i32 17
  %204 = load i8, ptr %203, align 1, !tbaa !117, !range !94, !noundef !95
  %205 = trunc i8 %204 to i1
  br label %206

206:                                              ; preds = %201, %186
  %207 = phi i1 [ false, %186 ], [ %205, %201 ]
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.ImGuiWindow, ptr %208, i32 0, i32 47
  %210 = zext i1 %207 to i8
  store i8 %210, ptr %209, align 1, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #12
  %211 = load ptr, ptr %10, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ImGuiWindow, ptr %211, i32 0, i32 80
  %213 = load i32, ptr %212, align 8, !tbaa !115
  %214 = load i32, ptr %12, align 4, !tbaa !9
  %215 = sub nsw i32 %214, 1
  %216 = icmp slt i32 %213, %215
  %217 = zext i1 %216 to i8
  store i8 %217, ptr %14, align 1, !tbaa !98
  %218 = load i32, ptr %7, align 4, !tbaa !9
  %219 = and i32 %218, 67108864
  %220 = icmp ne i32 %219, 0
  br i1 %220, label %221, label %255

221:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #12
  %222 = load ptr, ptr %8, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.ImGuiContext, ptr %222, i32 0, i32 98
  %224 = load ptr, ptr %8, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.ImGuiContext, ptr %224, i32 0, i32 99
  %226 = getelementptr inbounds %struct.ImVector.14, ptr %225, i32 0, i32 0
  %227 = load i32, ptr %226, align 8, !tbaa !119
  %228 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %223, i32 noundef %227)
  store ptr %228, ptr %15, align 8, !tbaa !5
  %229 = load ptr, ptr %10, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImGuiWindow, ptr %229, i32 0, i32 57
  %231 = load i32, ptr %230, align 4, !tbaa !120
  %232 = load ptr, ptr %15, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.ImGuiPopupData, ptr %232, i32 0, i32 0
  %234 = load i32, ptr %233, align 8, !tbaa !121
  %235 = icmp ne i32 %231, %234
  %236 = zext i1 %235 to i32
  %237 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %238 = trunc i8 %237 to i1
  %239 = zext i1 %238 to i32
  %240 = or i32 %239, %236
  %241 = icmp ne i32 %240, 0
  %242 = zext i1 %241 to i8
  store i8 %242, ptr %14, align 1, !tbaa !98
  %243 = load ptr, ptr %10, align 8, !tbaa !5
  %244 = load ptr, ptr %15, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.ImGuiPopupData, ptr %244, i32 0, i32 2
  %246 = load ptr, ptr %245, align 8, !tbaa !123
  %247 = icmp ne ptr %243, %246
  %248 = zext i1 %247 to i32
  %249 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %250 = trunc i8 %249 to i1
  %251 = zext i1 %250 to i32
  %252 = or i32 %251, %248
  %253 = icmp ne i32 %252, 0
  %254 = zext i1 %253 to i8
  store i8 %254, ptr %14, align 1, !tbaa !98
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  br label %255

255:                                              ; preds = %221, %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #12
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiWindow, ptr %256, i32 0, i32 45
  %258 = load i8, ptr %257, align 1, !tbaa !124, !range !94, !noundef !95
  %259 = trunc i8 %258 to i1
  %260 = zext i1 %259 to i8
  store i8 %260, ptr %16, align 1, !tbaa !98
  %261 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %262 = trunc i8 %261 to i1
  br i1 %262, label %263, label %322

263:                                              ; preds = %255
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %266 = trunc i8 %265 to i1
  %267 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef %264, i1 noundef zeroext %266, i32 noundef %267)
  %268 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %269 = trunc i8 %268 to i1
  %270 = load ptr, ptr %10, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.ImGuiWindow, ptr %270, i32 0, i32 45
  %272 = zext i1 %269 to i8
  store i8 %272, ptr %271, align 1, !tbaa !124
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiWindow, ptr %273, i32 0, i32 45
  %275 = load i8, ptr %274, align 1, !tbaa !124, !range !94, !noundef !95
  %276 = trunc i8 %275 to i1
  br i1 %276, label %277, label %279

277:                                              ; preds = %263
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %278, i32 noundef 8, i1 noundef zeroext true)
  br label %279

279:                                              ; preds = %277, %263
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiWindow, ptr %280, i32 0, i32 3
  %282 = load i32, ptr %281, align 4, !tbaa !125
  %283 = load ptr, ptr %10, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiWindow, ptr %283, i32 0, i32 4
  store i32 %282, ptr %284, align 8, !tbaa !126
  %285 = load i32, ptr %7, align 4, !tbaa !9
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiWindow, ptr %286, i32 0, i32 3
  store i32 %285, ptr %287, align 4, !tbaa !125
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.ImGuiContext, ptr %288, i32 0, i32 89
  %290 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %289, i32 0, i32 0
  %291 = load i32, ptr %290, align 8, !tbaa !127
  %292 = and i32 %291, 256
  %293 = icmp ne i32 %292, 0
  br i1 %293, label %294, label %299

294:                                              ; preds = %279
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.ImGuiContext, ptr %295, i32 0, i32 89
  %297 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %296, i32 0, i32 10
  %298 = load i32, ptr %297, align 4, !tbaa !128
  br label %300

299:                                              ; preds = %279
  br label %300

300:                                              ; preds = %299, %294
  %301 = phi i32 [ %298, %294 ], [ 0, %299 ]
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ImGuiWindow, ptr %302, i32 0, i32 5
  store i32 %301, ptr %303, align 4, !tbaa !129
  %304 = load i32, ptr %12, align 4, !tbaa !9
  %305 = load ptr, ptr %10, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ImGuiWindow, ptr %305, i32 0, i32 80
  store i32 %304, ptr %306, align 8, !tbaa !115
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.ImGuiContext, ptr %307, i32 0, i32 11
  %309 = load double, ptr %308, align 8, !tbaa !130
  %310 = fptrunc double %309 to float
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.ImGuiWindow, ptr %311, i32 0, i32 82
  store float %310, ptr %312, align 8, !tbaa !131
  %313 = load ptr, ptr %10, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImGuiWindow, ptr %313, i32 0, i32 54
  store i16 0, ptr %314, align 4, !tbaa !132
  %315 = load ptr, ptr %8, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiContext, ptr %315, i32 0, i32 31
  %317 = load i32, ptr %316, align 8, !tbaa !133
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %316, align 8, !tbaa !133
  %319 = trunc i32 %317 to i16
  %320 = load ptr, ptr %10, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImGuiWindow, ptr %320, i32 0, i32 55
  store i16 %319, ptr %321, align 2, !tbaa !134
  br label %326

322:                                              ; preds = %255
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiWindow, ptr %323, i32 0, i32 3
  %325 = load i32, ptr %324, align 4, !tbaa !125
  store i32 %325, ptr %7, align 4, !tbaa !9
  br label %326

326:                                              ; preds = %322, %300
  %327 = load ptr, ptr %10, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImGuiWindow, ptr %327, i32 0, i32 110
  %329 = load ptr, ptr %328, align 8, !tbaa !135
  %330 = icmp eq ptr %329, null
  br i1 %330, label %336, label %331

331:                                              ; preds = %326
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiWindow, ptr %332, i32 0, i32 111
  %334 = load ptr, ptr %333, align 8, !tbaa !136
  %335 = icmp eq ptr %334, null
  br label %336

336:                                              ; preds = %331, %326
  %337 = phi i1 [ true, %326 ], [ %335, %331 ]
  br i1 %337, label %338, label %339

338:                                              ; preds = %336
  br label %341

339:                                              ; preds = %336
  call void @__assert_fail(ptr noundef @.str.154, ptr noundef @.str.3, i32 noundef 6795, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

340:                                              ; No predecessors!
  br label %341

341:                                              ; preds = %340, %338
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiContext, ptr %342, i32 0, i32 89
  %344 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %343, i32 0, i32 0
  %345 = load i32, ptr %344, align 8, !tbaa !127
  %346 = and i32 %345, 1024
  %347 = icmp ne i32 %346, 0
  br i1 %347, label %348, label %358

348:                                              ; preds = %341
  %349 = load ptr, ptr %10, align 8, !tbaa !5
  %350 = load ptr, ptr %8, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiContext, ptr %350, i32 0, i32 89
  %352 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %351, i32 0, i32 20
  %353 = load i32, ptr %352, align 8, !tbaa !137
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ImGuiContext, ptr %354, i32 0, i32 89
  %356 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %355, i32 0, i32 4
  %357 = load i32, ptr %356, align 8, !tbaa !138
  call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef %349, i32 noundef %353, i32 noundef %357)
  br label %358

358:                                              ; preds = %348, %341
  %359 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %360 = trunc i8 %359 to i1
  br i1 %360, label %361, label %469

361:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #12
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.ImGuiWindow, ptr %362, i32 0, i32 112
  %364 = load i32, ptr %363, align 8, !tbaa !139
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %371, label %366

366:                                              ; preds = %361
  %367 = load ptr, ptr %10, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiWindow, ptr %367, i32 0, i32 110
  %369 = load ptr, ptr %368, align 8, !tbaa !135
  %370 = icmp ne ptr %369, null
  br label %371

371:                                              ; preds = %366, %361
  %372 = phi i1 [ true, %361 ], [ %370, %366 ]
  %373 = zext i1 %372 to i8
  store i8 %373, ptr %17, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #12
  %374 = load i8, ptr %17, align 1, !tbaa !98, !range !94, !noundef !95
  %375 = trunc i8 %374 to i1
  br i1 %375, label %379, label %376

376:                                              ; preds = %371
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  %378 = call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef %377)
  br label %379

379:                                              ; preds = %376, %371
  %380 = phi i1 [ false, %371 ], [ %378, %376 ]
  %381 = zext i1 %380 to i8
  store i8 %381, ptr %18, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #12
  %382 = load ptr, ptr %10, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ImGuiWindow, ptr %382, i32 0, i32 107
  %384 = load i8, ptr %383, align 1
  %385 = lshr i8 %384, 1
  %386 = and i8 %385, 1
  %387 = trunc i8 %386 to i1
  %388 = zext i1 %387 to i8
  store i8 %388, ptr %19, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  %389 = load ptr, ptr %10, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.ImGuiWindow, ptr %389, i32 0, i32 107
  %391 = load i8, ptr %390, align 1
  %392 = lshr i8 %391, 2
  %393 = and i8 %392, 1
  %394 = trunc i8 %393 to i1
  %395 = zext i1 %394 to i8
  store i8 %395, ptr %20, align 1, !tbaa !98
  %396 = load i8, ptr %17, align 1, !tbaa !98, !range !94, !noundef !95
  %397 = trunc i8 %396 to i1
  br i1 %397, label %401, label %398

398:                                              ; preds = %379
  %399 = load i8, ptr %18, align 1, !tbaa !98, !range !94, !noundef !95
  %400 = trunc i8 %399 to i1
  br i1 %400, label %401, label %452

401:                                              ; preds = %398, %379
  %402 = load ptr, ptr %10, align 8, !tbaa !5
  %403 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef %402, ptr noundef %403)
  %404 = load ptr, ptr %10, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiWindow, ptr %404, i32 0, i32 3
  %406 = load i32, ptr %405, align 4, !tbaa !125
  store i32 %406, ptr %7, align 4, !tbaa !9
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.ImGuiWindow, ptr %407, i32 0, i32 107
  %409 = load i8, ptr %408, align 1
  %410 = and i8 %409, 1
  %411 = trunc i8 %410 to i1
  br i1 %411, label %412, label %426

412:                                              ; preds = %401
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiWindow, ptr %413, i32 0, i32 110
  %415 = load ptr, ptr %414, align 8, !tbaa !135
  %416 = icmp ne ptr %415, null
  br i1 %416, label %417, label %418

417:                                              ; preds = %412
  br label %420

418:                                              ; preds = %412
  call void @__assert_fail(ptr noundef @.str.155, ptr noundef @.str.3, i32 noundef 6810, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

419:                                              ; No predecessors!
  br label %420

420:                                              ; preds = %419, %417
  %421 = load ptr, ptr %8, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiContext, ptr %421, i32 0, i32 89
  %423 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %422, i32 0, i32 0
  %424 = load i32, ptr %423, align 8, !tbaa !127
  %425 = and i32 %424, -17
  store i32 %425, ptr %423, align 8, !tbaa !127
  br label %426

426:                                              ; preds = %420, %401
  %427 = load ptr, ptr %10, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.ImGuiWindow, ptr %427, i32 0, i32 107
  %429 = load i8, ptr %428, align 1
  %430 = lshr i8 %429, 2
  %431 = and i8 %430, 1
  %432 = trunc i8 %431 to i1
  br i1 %432, label %433, label %451

433:                                              ; preds = %426
  %434 = load i8, ptr %20, align 1, !tbaa !98, !range !94, !noundef !95
  %435 = trunc i8 %434 to i1
  br i1 %435, label %451, label %436

436:                                              ; preds = %433
  %437 = load i8, ptr %19, align 1, !tbaa !98, !range !94, !noundef !95
  %438 = trunc i8 %437 to i1
  br i1 %438, label %439, label %451

439:                                              ; preds = %436
  %440 = load ptr, ptr %10, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiWindow, ptr %440, i32 0, i32 45
  %442 = load i8, ptr %441, align 1, !tbaa !124, !range !94, !noundef !95
  %443 = trunc i8 %442 to i1
  br i1 %443, label %451, label %444

444:                                              ; preds = %439
  %445 = load i8, ptr %16, align 1, !tbaa !98, !range !94, !noundef !95
  %446 = trunc i8 %445 to i1
  br i1 %446, label %451, label %447

447:                                              ; preds = %444
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImGuiWindow, ptr %448, i32 0, i32 45
  store i8 1, ptr %449, align 1, !tbaa !124
  %450 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %450, i32 noundef 8, i1 noundef zeroext true)
  br label %451

451:                                              ; preds = %447, %444, %439, %436, %433, %426
  br label %468

452:                                              ; preds = %398
  %453 = load ptr, ptr %10, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiWindow, ptr %453, i32 0, i32 107
  %455 = load i8, ptr %454, align 1
  %456 = and i8 %455, -5
  %457 = or i8 %456, 0
  store i8 %457, ptr %454, align 1
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiWindow, ptr %458, i32 0, i32 107
  %460 = load i8, ptr %459, align 1
  %461 = and i8 %460, -3
  %462 = or i8 %461, 0
  store i8 %462, ptr %459, align 1
  %463 = load ptr, ptr %10, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiWindow, ptr %463, i32 0, i32 107
  %465 = load i8, ptr %464, align 1
  %466 = and i8 %465, -2
  %467 = or i8 %466, 0
  store i8 %467, ptr %464, align 1
  br label %468

468:                                              ; preds = %452, %451
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #12
  br label %469

469:                                              ; preds = %468, %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #12
  %470 = load ptr, ptr %10, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiWindow, ptr %470, i32 0, i32 107
  %472 = load i8, ptr %471, align 1
  %473 = and i8 %472, 1
  %474 = trunc i8 %473 to i1
  br i1 %474, label %475, label %488

475:                                              ; preds = %469
  %476 = load ptr, ptr %10, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImGuiWindow, ptr %476, i32 0, i32 110
  %478 = load ptr, ptr %477, align 8, !tbaa !135
  %479 = getelementptr inbounds %struct.ImGuiDockNode, ptr %478, i32 0, i32 16
  %480 = load ptr, ptr %479, align 8, !tbaa !140
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %488

482:                                              ; preds = %475
  %483 = load ptr, ptr %10, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ImGuiWindow, ptr %483, i32 0, i32 110
  %485 = load ptr, ptr %484, align 8, !tbaa !135
  %486 = getelementptr inbounds %struct.ImGuiDockNode, ptr %485, i32 0, i32 16
  %487 = load ptr, ptr %486, align 8, !tbaa !140
  br label %501

488:                                              ; preds = %475, %469
  %489 = load ptr, ptr %8, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.ImGuiContext, ptr %489, i32 0, i32 29
  %491 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %490)
  br i1 %491, label %492, label %493

492:                                              ; preds = %488
  br label %499

493:                                              ; preds = %488
  %494 = load ptr, ptr %8, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ImGuiContext, ptr %494, i32 0, i32 29
  %496 = call noundef nonnull align 8 dereferenceable(102) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %495)
  %497 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %496, i32 0, i32 0
  %498 = load ptr, ptr %497, align 8, !tbaa !144
  br label %499

499:                                              ; preds = %493, %492
  %500 = phi ptr [ null, %492 ], [ %498, %493 ]
  br label %501

501:                                              ; preds = %499, %482
  %502 = phi ptr [ %487, %482 ], [ %500, %499 ]
  store ptr %502, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #12
  %503 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %514

505:                                              ; preds = %501
  %506 = load i32, ptr %7, align 4, !tbaa !9
  %507 = and i32 %506, 83886080
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %511

509:                                              ; preds = %505
  %510 = load ptr, ptr %21, align 8, !tbaa !5
  br label %512

511:                                              ; preds = %505
  br label %512

512:                                              ; preds = %511, %509
  %513 = phi ptr [ %510, %509 ], [ null, %511 ]
  br label %518

514:                                              ; preds = %501
  %515 = load ptr, ptr %10, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.ImGuiWindow, ptr %515, i32 0, i32 91
  %517 = load ptr, ptr %516, align 8, !tbaa !147
  br label %518

518:                                              ; preds = %514, %512
  %519 = phi ptr [ %513, %512 ], [ %517, %514 ]
  store ptr %519, ptr %22, align 8, !tbaa !5
  %520 = load ptr, ptr %22, align 8, !tbaa !5
  %521 = icmp ne ptr %520, null
  br i1 %521, label %527, label %522

522:                                              ; preds = %518
  %523 = load i32, ptr %7, align 4, !tbaa !9
  %524 = and i32 %523, 16777216
  %525 = icmp ne i32 %524, 0
  %526 = xor i1 %525, true
  br label %527

527:                                              ; preds = %522, %518
  %528 = phi i1 [ true, %518 ], [ %526, %522 ]
  br i1 %528, label %529, label %530

529:                                              ; preds = %527
  br label %532

530:                                              ; preds = %527
  call void @__assert_fail(ptr noundef @.str.156, ptr noundef @.str.3, i32 noundef 6830, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

531:                                              ; No predecessors!
  br label %532

532:                                              ; preds = %531, %529
  %533 = load ptr, ptr %10, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.ImGuiWindow, ptr %533, i32 0, i32 69
  %535 = getelementptr inbounds %struct.ImVector.29, ptr %534, i32 0, i32 0
  %536 = load i32, ptr %535, align 8, !tbaa !148
  %537 = icmp eq i32 %536, 0
  br i1 %537, label %538, label %543

538:                                              ; preds = %532
  %539 = load ptr, ptr %10, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ImGuiWindow, ptr %539, i32 0, i32 69
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiWindow, ptr %541, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %540, ptr noundef nonnull align 4 dereferenceable(4) %542)
  br label %543

543:                                              ; preds = %538, %532
  %544 = load ptr, ptr %10, align 8, !tbaa !5
  %545 = load ptr, ptr %8, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 34
  store ptr %544, ptr %546, align 8, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 104, ptr %23) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(102) %23)
  %547 = load ptr, ptr %10, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 0
  store ptr %547, ptr %548, align 8, !tbaa !144
  %549 = load ptr, ptr %8, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiContext, ptr %549, i32 0, i32 87
  %551 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %551, ptr align 8 %550, i64 76, i1 false), !tbaa.struct !150
  %552 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 2
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %552, ptr noundef %553)
  %554 = load ptr, ptr %8, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ImGuiContext, ptr %554, i32 0, i32 29
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %555, ptr noundef nonnull align 8 dereferenceable(102) %23)
  %556 = load i32, ptr %7, align 4, !tbaa !9
  %557 = and i32 %556, 268435456
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %564

559:                                              ; preds = %543
  %560 = load ptr, ptr %8, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiContext, ptr %560, i32 0, i32 101
  %562 = load i32, ptr %561, align 8, !tbaa !152
  %563 = add nsw i32 %562, 1
  store i32 %563, ptr %561, align 8, !tbaa !152
  br label %564

564:                                              ; preds = %559, %543
  %565 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %566 = trunc i8 %565 to i1
  br i1 %566, label %567, label %635

567:                                              ; preds = %564
  %568 = load ptr, ptr %10, align 8, !tbaa !5
  %569 = load i32, ptr %7, align 4, !tbaa !9
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %568, i32 noundef %569, ptr noundef %570)
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiWindow, ptr %572, i32 0, i32 92
  store ptr %571, ptr %573, align 8, !tbaa !153
  %574 = load ptr, ptr %10, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiWindow, ptr %574, i32 0, i32 93
  %576 = load ptr, ptr %575, align 8, !tbaa !154
  %577 = load ptr, ptr %10, align 8, !tbaa !5
  %578 = icmp ne ptr %576, %577
  br i1 %578, label %579, label %581

579:                                              ; preds = %567
  %580 = load ptr, ptr %21, align 8, !tbaa !5
  br label %582

581:                                              ; preds = %567
  br label %582

582:                                              ; preds = %581, %579
  %583 = phi ptr [ %580, %579 ], [ null, %581 ]
  %584 = load ptr, ptr %10, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiWindow, ptr %584, i32 0, i32 98
  store ptr %583, ptr %585, align 8, !tbaa !155
  %586 = load ptr, ptr %10, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.ImGuiWindow, ptr %586, i32 0, i32 98
  %588 = load ptr, ptr %587, align 8, !tbaa !155
  %589 = icmp eq ptr %588, null
  br i1 %589, label %590, label %612

590:                                              ; preds = %582
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiWindow, ptr %591, i32 0, i32 110
  %593 = load ptr, ptr %592, align 8, !tbaa !135
  %594 = icmp ne ptr %593, null
  br i1 %594, label %595, label %612

595:                                              ; preds = %590
  %596 = load ptr, ptr %10, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ImGuiWindow, ptr %596, i32 0, i32 110
  %598 = load ptr, ptr %597, align 8, !tbaa !135
  %599 = getelementptr inbounds %struct.ImGuiDockNode, ptr %598, i32 0, i32 4
  %600 = load i32, ptr %599, align 8, !tbaa !156
  %601 = and i32 %600, 262144
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %611

603:                                              ; preds = %595
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiWindow, ptr %604, i32 0, i32 110
  %606 = load ptr, ptr %605, align 8, !tbaa !135
  %607 = getelementptr inbounds %struct.ImGuiDockNode, ptr %606, i32 0, i32 16
  %608 = load ptr, ptr %607, align 8, !tbaa !140
  %609 = load ptr, ptr %10, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiWindow, ptr %609, i32 0, i32 98
  store ptr %608, ptr %610, align 8, !tbaa !155
  br label %611

611:                                              ; preds = %603, %595
  br label %612

612:                                              ; preds = %611, %590, %582
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.ImGuiWindow, ptr %613, i32 0, i32 6
  %615 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %614, i32 0, i32 2
  %616 = load i32, ptr %615, align 8, !tbaa !157
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %634

618:                                              ; preds = %612
  %619 = load ptr, ptr %10, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.ImGuiWindow, ptr %619, i32 0, i32 6
  %621 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %620, i32 0, i32 2
  %622 = load i32, ptr %621, align 8, !tbaa !157
  %623 = call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %622)
  %624 = load ptr, ptr %10, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.ImGuiWindow, ptr %624, i32 0, i32 98
  store ptr %623, ptr %625, align 8, !tbaa !155
  %626 = load ptr, ptr %10, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.ImGuiWindow, ptr %626, i32 0, i32 98
  %628 = load ptr, ptr %627, align 8, !tbaa !155
  %629 = icmp ne ptr %628, null
  br i1 %629, label %630, label %631

630:                                              ; preds = %618
  br label %633

631:                                              ; preds = %618
  call void @__assert_fail(ptr noundef @.str.157, ptr noundef @.str.3, i32 noundef 6864, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

632:                                              ; No predecessors!
  br label %633

633:                                              ; preds = %632, %630
  br label %634

634:                                              ; preds = %633, %612
  br label %635

635:                                              ; preds = %634, %564
  %636 = load i32, ptr %7, align 4, !tbaa !9
  %637 = and i32 %636, 8388608
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %643

639:                                              ; preds = %635
  %640 = load ptr, ptr %8, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiContext, ptr %640, i32 0, i32 82
  %642 = load i32, ptr %641, align 8, !tbaa !158
  br label %647

643:                                              ; preds = %635
  %644 = load ptr, ptr %10, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiWindow, ptr %644, i32 0, i32 2
  %646 = load i32, ptr %645, align 8, !tbaa !100
  br label %647

647:                                              ; preds = %643, %639
  %648 = phi i32 [ %642, %639 ], [ %646, %643 ]
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %648)
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiContext, ptr %649, i32 0, i32 82
  %651 = load i32, ptr %650, align 8, !tbaa !158
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiWindow, ptr %652, i32 0, i32 103
  store i32 %651, ptr %653, align 8, !tbaa !159
  %654 = load i32, ptr %7, align 4, !tbaa !9
  %655 = and i32 %654, 67108864
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %682

657:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #12
  %658 = load ptr, ptr %8, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImGuiContext, ptr %658, i32 0, i32 98
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiContext, ptr %660, i32 0, i32 99
  %662 = getelementptr inbounds %struct.ImVector.14, ptr %661, i32 0, i32 0
  %663 = load i32, ptr %662, align 8, !tbaa !119
  %664 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %659, i32 noundef %663)
  store ptr %664, ptr %24, align 8, !tbaa !5
  %665 = load ptr, ptr %10, align 8, !tbaa !5
  %666 = load ptr, ptr %24, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiPopupData, ptr %666, i32 0, i32 2
  store ptr %665, ptr %667, align 8, !tbaa !123
  %668 = load ptr, ptr %21, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiWindow, ptr %668, i32 0, i32 70
  %670 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %669, i32 0, i32 15
  %671 = load i32, ptr %670, align 8, !tbaa !160
  %672 = load ptr, ptr %24, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiPopupData, ptr %672, i32 0, i32 4
  store i32 %671, ptr %673, align 8, !tbaa !161
  %674 = load ptr, ptr %8, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.ImGuiContext, ptr %674, i32 0, i32 99
  %676 = load ptr, ptr %24, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %675, ptr noundef nonnull align 8 dereferenceable(52) %676)
  %677 = load ptr, ptr %24, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiPopupData, ptr %677, i32 0, i32 0
  %679 = load i32, ptr %678, align 8, !tbaa !121
  %680 = load ptr, ptr %10, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiWindow, ptr %680, i32 0, i32 57
  store i32 %679, ptr %681, align 4, !tbaa !120
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  br label %682

682:                                              ; preds = %657, %647
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #12
  store i8 0, ptr %25, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #12
  store i8 0, ptr %26, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #12
  store i8 0, ptr %27, align 1, !tbaa !98
  %683 = load ptr, ptr %8, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.ImGuiContext, ptr %683, i32 0, i32 89
  %685 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %684, i32 0, i32 0
  %686 = load i32, ptr %685, align 8, !tbaa !127
  %687 = and i32 %686, 1
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %743

689:                                              ; preds = %682
  %690 = load ptr, ptr %10, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiWindow, ptr %690, i32 0, i32 66
  %692 = load i32, ptr %691, align 4
  %693 = shl i32 %692, 24
  %694 = ashr i32 %693, 24
  %695 = load ptr, ptr %8, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 89
  %697 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %696, i32 0, i32 1
  %698 = load i32, ptr %697, align 4, !tbaa !162
  %699 = and i32 %694, %698
  %700 = icmp ne i32 %699, 0
  %701 = zext i1 %700 to i8
  store i8 %701, ptr %25, align 1, !tbaa !98
  %702 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %703 = trunc i8 %702 to i1
  br i1 %703, label %704, label %733

704:                                              ; preds = %689
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.ImGuiContext, ptr %705, i32 0, i32 89
  %707 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %706, i32 0, i32 6
  %708 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %707)
  %709 = fcmp ogt float %708, 0x3EE4F8B580000000
  br i1 %709, label %710, label %733

710:                                              ; preds = %704
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImGuiContext, ptr %711, i32 0, i32 89
  %713 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %712, i32 0, i32 5
  %714 = load ptr, ptr %10, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.ImGuiWindow, ptr %714, i32 0, i32 67
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %715, ptr align 4 %713, i64 8, i1 false), !tbaa.struct !163
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.ImGuiContext, ptr %716, i32 0, i32 89
  %718 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %717, i32 0, i32 6
  %719 = load ptr, ptr %10, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiWindow, ptr %719, i32 0, i32 68
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %720, ptr align 4 %718, i64 8, i1 false), !tbaa.struct !163
  %721 = load ptr, ptr %10, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiWindow, ptr %721, i32 0, i32 66
  %723 = load i32, ptr %722, align 4
  %724 = shl i32 %723, 24
  %725 = ashr i32 %724, 24
  %726 = and i32 %725, -15
  %727 = load i32, ptr %722, align 4
  %728 = and i32 %726, 255
  %729 = and i32 %727, -256
  %730 = or i32 %729, %728
  store i32 %730, ptr %722, align 4
  %731 = shl i32 %728, 24
  %732 = ashr i32 %731, 24
  br label %742

733:                                              ; preds = %704, %689
  %734 = load ptr, ptr %10, align 8, !tbaa !5
  %735 = load ptr, ptr %8, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.ImGuiContext, ptr %735, i32 0, i32 89
  %737 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %736, i32 0, i32 5
  %738 = load ptr, ptr %8, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.ImGuiContext, ptr %738, i32 0, i32 89
  %740 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %739, i32 0, i32 1
  %741 = load i32, ptr %740, align 4, !tbaa !162
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %734, ptr noundef nonnull align 4 dereferenceable(8) %737, i32 noundef %741)
  br label %742

742:                                              ; preds = %733, %710
  br label %743

743:                                              ; preds = %742, %682
  %744 = load ptr, ptr %8, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.ImGuiContext, ptr %744, i32 0, i32 89
  %746 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %745, i32 0, i32 0
  %747 = load i32, ptr %746, align 8, !tbaa !127
  %748 = and i32 %747, 2
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %847

750:                                              ; preds = %743
  %751 = load ptr, ptr %10, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiWindow, ptr %751, i32 0, i32 66
  %753 = load i32, ptr %752, align 4
  %754 = shl i32 %753, 16
  %755 = ashr i32 %754, 24
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiContext, ptr %756, i32 0, i32 89
  %758 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %757, i32 0, i32 2
  %759 = load i32, ptr %758, align 8, !tbaa !164
  %760 = and i32 %755, %759
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %769

762:                                              ; preds = %750
  %763 = load ptr, ptr %8, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiContext, ptr %763, i32 0, i32 89
  %765 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %764, i32 0, i32 7
  %766 = getelementptr inbounds %struct.ImVec2, ptr %765, i32 0, i32 0
  %767 = load float, ptr %766, align 4, !tbaa !165
  %768 = fcmp ogt float %767, 0.000000e+00
  br label %769

769:                                              ; preds = %762, %750
  %770 = phi i1 [ false, %750 ], [ %768, %762 ]
  %771 = zext i1 %770 to i8
  store i8 %771, ptr %26, align 1, !tbaa !98
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiWindow, ptr %772, i32 0, i32 66
  %774 = load i32, ptr %773, align 4
  %775 = shl i32 %774, 16
  %776 = ashr i32 %775, 24
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.ImGuiContext, ptr %777, i32 0, i32 89
  %779 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %778, i32 0, i32 2
  %780 = load i32, ptr %779, align 8, !tbaa !164
  %781 = and i32 %776, %780
  %782 = icmp ne i32 %781, 0
  br i1 %782, label %783, label %790

783:                                              ; preds = %769
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.ImGuiContext, ptr %784, i32 0, i32 89
  %786 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %785, i32 0, i32 7
  %787 = getelementptr inbounds %struct.ImVec2, ptr %786, i32 0, i32 1
  %788 = load float, ptr %787, align 4, !tbaa !166
  %789 = fcmp ogt float %788, 0.000000e+00
  br label %790

790:                                              ; preds = %783, %769
  %791 = phi i1 [ false, %769 ], [ %789, %783 ]
  %792 = zext i1 %791 to i8
  store i8 %792, ptr %27, align 1, !tbaa !98
  %793 = load ptr, ptr %10, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.ImGuiWindow, ptr %793, i32 0, i32 5
  %795 = load i32, ptr %794, align 4, !tbaa !129
  %796 = and i32 %795, 4
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %798, label %815

798:                                              ; preds = %790
  %799 = load ptr, ptr %10, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.ImGuiWindow, ptr %799, i32 0, i32 66
  %801 = load i32, ptr %800, align 4
  %802 = shl i32 %801, 16
  %803 = ashr i32 %802, 24
  %804 = and i32 %803, 4
  %805 = icmp eq i32 %804, 0
  br i1 %805, label %806, label %815

806:                                              ; preds = %798
  %807 = load ptr, ptr %10, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ImGuiWindow, ptr %807, i32 0, i32 13
  %809 = getelementptr inbounds %struct.ImVec2, ptr %808, i32 0, i32 0
  %810 = load float, ptr %809, align 8, !tbaa !167
  %811 = load ptr, ptr %8, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.ImGuiContext, ptr %811, i32 0, i32 89
  %813 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %812, i32 0, i32 7
  %814 = getelementptr inbounds %struct.ImVec2, ptr %813, i32 0, i32 0
  store float %810, ptr %814, align 4, !tbaa !165
  br label %815

815:                                              ; preds = %806, %798, %790
  %816 = load ptr, ptr %10, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiWindow, ptr %816, i32 0, i32 5
  %818 = load i32, ptr %817, align 4, !tbaa !129
  %819 = and i32 %818, 8
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %838

821:                                              ; preds = %815
  %822 = load ptr, ptr %10, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ImGuiWindow, ptr %822, i32 0, i32 66
  %824 = load i32, ptr %823, align 4
  %825 = shl i32 %824, 16
  %826 = ashr i32 %825, 24
  %827 = and i32 %826, 4
  %828 = icmp eq i32 %827, 0
  br i1 %828, label %829, label %838

829:                                              ; preds = %821
  %830 = load ptr, ptr %10, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiWindow, ptr %830, i32 0, i32 13
  %832 = getelementptr inbounds %struct.ImVec2, ptr %831, i32 0, i32 1
  %833 = load float, ptr %832, align 4, !tbaa !168
  %834 = load ptr, ptr %8, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.ImGuiContext, ptr %834, i32 0, i32 89
  %836 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %835, i32 0, i32 7
  %837 = getelementptr inbounds %struct.ImVec2, ptr %836, i32 0, i32 1
  store float %833, ptr %837, align 4, !tbaa !166
  br label %838

838:                                              ; preds = %829, %821, %815
  %839 = load ptr, ptr %10, align 8, !tbaa !5
  %840 = load ptr, ptr %8, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImGuiContext, ptr %840, i32 0, i32 89
  %842 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %841, i32 0, i32 7
  %843 = load ptr, ptr %8, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiContext, ptr %843, i32 0, i32 89
  %845 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %844, i32 0, i32 2
  %846 = load i32, ptr %845, align 8, !tbaa !164
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %839, ptr noundef nonnull align 4 dereferenceable(8) %842, i32 noundef %846)
  br label %847

847:                                              ; preds = %838, %743
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.ImGuiContext, ptr %848, i32 0, i32 89
  %850 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %849, i32 0, i32 0
  %851 = load i32, ptr %850, align 8, !tbaa !127
  %852 = and i32 %851, 128
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %893

854:                                              ; preds = %847
  %855 = load ptr, ptr %8, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiContext, ptr %855, i32 0, i32 89
  %857 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %856, i32 0, i32 9
  %858 = getelementptr inbounds %struct.ImVec2, ptr %857, i32 0, i32 0
  %859 = load float, ptr %858, align 4, !tbaa !169
  %860 = fcmp oge float %859, 0.000000e+00
  br i1 %860, label %861, label %873

861:                                              ; preds = %854
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.ImGuiContext, ptr %862, i32 0, i32 89
  %864 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %863, i32 0, i32 9
  %865 = getelementptr inbounds %struct.ImVec2, ptr %864, i32 0, i32 0
  %866 = load float, ptr %865, align 4, !tbaa !169
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiWindow, ptr %867, i32 0, i32 32
  %869 = getelementptr inbounds %struct.ImVec2, ptr %868, i32 0, i32 0
  store float %866, ptr %869, align 8, !tbaa !170
  %870 = load ptr, ptr %10, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.ImGuiWindow, ptr %870, i32 0, i32 33
  %872 = getelementptr inbounds %struct.ImVec2, ptr %871, i32 0, i32 0
  store float 0.000000e+00, ptr %872, align 8, !tbaa !171
  br label %873

873:                                              ; preds = %861, %854
  %874 = load ptr, ptr %8, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.ImGuiContext, ptr %874, i32 0, i32 89
  %876 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %875, i32 0, i32 9
  %877 = getelementptr inbounds %struct.ImVec2, ptr %876, i32 0, i32 1
  %878 = load float, ptr %877, align 4, !tbaa !172
  %879 = fcmp oge float %878, 0.000000e+00
  br i1 %879, label %880, label %892

880:                                              ; preds = %873
  %881 = load ptr, ptr %8, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiContext, ptr %881, i32 0, i32 89
  %883 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %882, i32 0, i32 9
  %884 = getelementptr inbounds %struct.ImVec2, ptr %883, i32 0, i32 1
  %885 = load float, ptr %884, align 4, !tbaa !172
  %886 = load ptr, ptr %10, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiWindow, ptr %886, i32 0, i32 32
  %888 = getelementptr inbounds %struct.ImVec2, ptr %887, i32 0, i32 1
  store float %885, ptr %888, align 4, !tbaa !173
  %889 = load ptr, ptr %10, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImGuiWindow, ptr %889, i32 0, i32 33
  %891 = getelementptr inbounds %struct.ImVec2, ptr %890, i32 0, i32 1
  store float 0.000000e+00, ptr %891, align 4, !tbaa !174
  br label %892

892:                                              ; preds = %880, %873
  br label %893

893:                                              ; preds = %892, %847
  %894 = load ptr, ptr %8, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiContext, ptr %894, i32 0, i32 89
  %896 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %895, i32 0, i32 0
  %897 = load i32, ptr %896, align 8, !tbaa !127
  %898 = and i32 %897, 4
  %899 = icmp ne i32 %898, 0
  br i1 %899, label %900, label %906

900:                                              ; preds = %893
  %901 = load ptr, ptr %8, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImGuiContext, ptr %901, i32 0, i32 89
  %903 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %902, i32 0, i32 8
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.ImGuiWindow, ptr %904, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %905, ptr align 4 %903, i64 8, i1 false), !tbaa.struct !163
  br label %913

906:                                              ; preds = %893
  %907 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %908 = trunc i8 %907 to i1
  br i1 %908, label %909, label %912

909:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImGuiWindow, ptr %910, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %911, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  br label %912

912:                                              ; preds = %909, %906
  br label %913

913:                                              ; preds = %912, %900
  %914 = load ptr, ptr %8, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.ImGuiContext, ptr %914, i32 0, i32 89
  %916 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %915, i32 0, i32 0
  %917 = load i32, ptr %916, align 8, !tbaa !127
  %918 = and i32 %917, 2048
  %919 = icmp ne i32 %918, 0
  br i1 %919, label %920, label %926

920:                                              ; preds = %913
  %921 = load ptr, ptr %8, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.ImGuiContext, ptr %921, i32 0, i32 89
  %923 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %922, i32 0, i32 21
  %924 = load ptr, ptr %10, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImGuiWindow, ptr %924, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %925, ptr align 4 %923, i64 30, i1 false), !tbaa.struct !175
  br label %926

926:                                              ; preds = %920, %913
  %927 = load ptr, ptr %8, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiContext, ptr %927, i32 0, i32 89
  %929 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %928, i32 0, i32 0
  %930 = load i32, ptr %929, align 8, !tbaa !127
  %931 = and i32 %930, 8
  %932 = icmp ne i32 %931, 0
  br i1 %932, label %933, label %944

933:                                              ; preds = %926
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = load ptr, ptr %8, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.ImGuiContext, ptr %935, i32 0, i32 89
  %937 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %936, i32 0, i32 12
  %938 = load i8, ptr %937, align 1, !tbaa !176, !range !94, !noundef !95
  %939 = trunc i8 %938 to i1
  %940 = load ptr, ptr %8, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiContext, ptr %940, i32 0, i32 89
  %942 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %941, i32 0, i32 3
  %943 = load i32, ptr %942, align 4, !tbaa !177
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %934, i1 noundef zeroext %939, i32 noundef %943)
  br label %944

944:                                              ; preds = %933, %926
  %945 = load ptr, ptr %8, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImGuiContext, ptr %945, i32 0, i32 89
  %947 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %946, i32 0, i32 0
  %948 = load i32, ptr %947, align 8, !tbaa !127
  %949 = and i32 %948, 32
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %953

951:                                              ; preds = %944
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %952, i32 noundef 0)
  br label %953

953:                                              ; preds = %951, %944
  %954 = load ptr, ptr %10, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiWindow, ptr %954, i32 0, i32 45
  %956 = load i8, ptr %955, align 1, !tbaa !124, !range !94, !noundef !95
  %957 = trunc i8 %956 to i1
  br i1 %957, label %958, label %960

958:                                              ; preds = %953
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %959, i32 noundef 8, i1 noundef zeroext false)
  br label %960

960:                                              ; preds = %958, %953
  %961 = load ptr, ptr %8, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiContext, ptr %961, i32 0, i32 34
  store ptr null, ptr %962, align 8, !tbaa !149
  %963 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %964 = trunc i8 %963 to i1
  br i1 %964, label %965, label %3454

965:                                              ; preds = %960
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #12
  %966 = load i32, ptr %7, align 4, !tbaa !9
  %967 = and i32 %966, 16777216
  %968 = icmp ne i32 %967, 0
  br i1 %968, label %969, label %973

969:                                              ; preds = %965
  %970 = load i32, ptr %7, align 4, !tbaa !9
  %971 = and i32 %970, 33554432
  %972 = icmp ne i32 %971, 0
  br label %973

973:                                              ; preds = %969, %965
  %974 = phi i1 [ false, %965 ], [ %972, %969 ]
  %975 = zext i1 %974 to i8
  store i8 %975, ptr %29, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #12
  %976 = load ptr, ptr %10, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ImGuiWindow, ptr %976, i32 0, i32 63
  %978 = load i8, ptr %977, align 1, !tbaa !178
  %979 = sext i8 %978 to i32
  %980 = icmp sgt i32 %979, 0
  %981 = zext i1 %980 to i8
  store i8 %981, ptr %30, align 1, !tbaa !98
  %982 = load ptr, ptr %10, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiWindow, ptr %982, i32 0, i32 39
  store i8 1, ptr %983, align 1, !tbaa !179
  %984 = load ptr, ptr %6, align 8, !tbaa !5
  %985 = icmp ne ptr %984, null
  %986 = load ptr, ptr %10, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiWindow, ptr %986, i32 0, i32 49
  %988 = zext i1 %985 to i8
  store i8 %988, ptr %987, align 1, !tbaa !180
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #12
  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)
  %989 = load ptr, ptr %10, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ImGuiWindow, ptr %989, i32 0, i32 76
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %990, ptr align 4 %31, i64 16, i1 false), !tbaa.struct !181
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #12
  %991 = load ptr, ptr %10, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiWindow, ptr %991, i32 0, i32 69
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %992, i32 noundef 1)
  %993 = load ptr, ptr %10, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.ImGuiWindow, ptr %993, i32 0, i32 89
  %995 = load ptr, ptr %994, align 8, !tbaa !182
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %995)
  %996 = load ptr, ptr %10, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiWindow, ptr %996, i32 0, i32 70
  %998 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %997, i32 0, i32 29
  store i32 -1, ptr %998, align 8, !tbaa !183
  %999 = load i32, ptr %7, align 4, !tbaa !9
  %1000 = and i32 %999, 536870912
  %1001 = icmp ne i32 %1000, 0
  br i1 %1001, label %1002, label %1009

1002:                                             ; preds = %973
  %1003 = load ptr, ptr %10, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiWindow, ptr %1003, i32 0, i32 89
  %1005 = load ptr, ptr %1004, align 8, !tbaa !182
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %1005, i32 noundef 2)
  %1006 = load ptr, ptr %10, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiWindow, ptr %1006, i32 0, i32 89
  %1008 = load ptr, ptr %1007, align 8, !tbaa !182
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %1008, i32 noundef 1)
  br label %1009

1009:                                             ; preds = %1002, %973
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImGuiWindow, ptr %1010, i32 0, i32 106
  %1012 = load i8, ptr %1011, align 4, !tbaa !184, !range !94, !noundef !95
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1014, label %1016

1014:                                             ; preds = %1009
  %1015 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %1015)
  br label %1016

1016:                                             ; preds = %1014, %1009
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  store i8 0, ptr %33, align 1, !tbaa !98
  %1017 = load ptr, ptr %10, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImGuiWindow, ptr %1017, i32 0, i32 7
  %1019 = load ptr, ptr %1018, align 8, !tbaa !185
  %1020 = icmp ne ptr %1019, null
  br i1 %1020, label %1021, label %1029

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %10, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImGuiWindow, ptr %1022, i32 0, i32 7
  %1024 = load ptr, ptr %1023, align 8, !tbaa !185
  %1025 = getelementptr inbounds %struct.ImGuiViewportP, ptr %1024, i32 0, i32 1
  %1026 = load ptr, ptr %1025, align 8, !tbaa !186
  %1027 = load ptr, ptr %10, align 8, !tbaa !5
  %1028 = icmp eq ptr %1026, %1027
  br i1 %1028, label %1035, label %1029

1029:                                             ; preds = %1021, %1016
  %1030 = load ptr, ptr %10, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiWindow, ptr %1030, i32 0, i32 107
  %1032 = load i8, ptr %1031, align 1
  %1033 = and i8 %1032, 1
  %1034 = trunc i8 %1033 to i1
  br i1 %1034, label %1035, label %1036

1035:                                             ; preds = %1029, %1021
  store i8 1, ptr %33, align 1, !tbaa !98
  br label %1049

1036:                                             ; preds = %1029
  %1037 = load ptr, ptr %8, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ImGuiContext, ptr %1037, i32 0, i32 161
  %1039 = load ptr, ptr %1038, align 8, !tbaa !192
  %1040 = icmp ne ptr %1039, null
  br i1 %1040, label %1041, label %1048

1041:                                             ; preds = %1036
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.ImGuiWindow, ptr %1042, i32 0, i32 3
  %1044 = load i32, ptr %1043, align 4, !tbaa !125
  %1045 = and i32 %1044, 131072
  %1046 = icmp eq i32 %1045, 0
  br i1 %1046, label %1047, label %1048

1047:                                             ; preds = %1041
  store i8 1, ptr %33, align 1, !tbaa !98
  br label %1048

1048:                                             ; preds = %1047, %1041, %1036
  br label %1049

1049:                                             ; preds = %1048, %1035
  %1050 = load i8, ptr %33, align 1, !tbaa !98, !range !94, !noundef !95
  %1051 = trunc i8 %1050 to i1
  br i1 %1051, label %1052, label %1078

1052:                                             ; preds = %1049
  %1053 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1078, label %1055

1055:                                             ; preds = %1052
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = load ptr, ptr %10, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.ImGuiWindow, ptr %1057, i32 0, i32 1
  %1059 = load ptr, ptr %1058, align 8, !tbaa !193
  %1060 = call i32 @strcmp(ptr noundef %1056, ptr noundef %1059) #15
  %1061 = icmp ne i32 %1060, 0
  br i1 %1061, label %1062, label %1078

1062:                                             ; preds = %1055
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #12
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 26
  %1065 = load i32, ptr %1064, align 8, !tbaa !194
  %1066 = sext i32 %1065 to i64
  store i64 %1066, ptr %34, align 8, !tbaa !195
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiWindow, ptr %1067, i32 0, i32 1
  %1069 = load ptr, ptr %1068, align 8, !tbaa !193
  %1070 = load ptr, ptr %5, align 8, !tbaa !5
  %1071 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %1069, ptr noundef %34, ptr noundef %1070)
  %1072 = load ptr, ptr %10, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.ImGuiWindow, ptr %1072, i32 0, i32 1
  store ptr %1071, ptr %1073, align 8, !tbaa !193
  %1074 = load i64, ptr %34, align 8, !tbaa !195
  %1075 = trunc i64 %1074 to i32
  %1076 = load ptr, ptr %10, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiWindow, ptr %1076, i32 0, i32 26
  store i32 %1075, ptr %1077, align 8, !tbaa !194
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #12
  br label %1078

1078:                                             ; preds = %1062, %1055, %1052, %1049
  %1079 = load ptr, ptr %10, align 8, !tbaa !5
  %1080 = load ptr, ptr %10, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiWindow, ptr %1080, i32 0, i32 14
  %1082 = load ptr, ptr %10, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiWindow, ptr %1082, i32 0, i32 15
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %1079, ptr noundef %1081, ptr noundef %1083)
  %1084 = load ptr, ptr %10, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.ImGuiWindow, ptr %1084, i32 0, i32 62
  %1086 = load i8, ptr %1085, align 8, !tbaa !197
  %1087 = sext i8 %1086 to i32
  %1088 = icmp sgt i32 %1087, 0
  br i1 %1088, label %1089, label %1094

1089:                                             ; preds = %1078
  %1090 = load ptr, ptr %10, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.ImGuiWindow, ptr %1090, i32 0, i32 62
  %1092 = load i8, ptr %1091, align 8, !tbaa !197
  %1093 = add i8 %1092, -1
  store i8 %1093, ptr %1091, align 8, !tbaa !197
  br label %1094

1094:                                             ; preds = %1089, %1078
  %1095 = load ptr, ptr %10, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.ImGuiWindow, ptr %1095, i32 0, i32 63
  %1097 = load i8, ptr %1096, align 1, !tbaa !178
  %1098 = sext i8 %1097 to i32
  %1099 = icmp sgt i32 %1098, 0
  br i1 %1099, label %1100, label %1105

1100:                                             ; preds = %1094
  %1101 = load ptr, ptr %10, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.ImGuiWindow, ptr %1101, i32 0, i32 63
  %1103 = load i8, ptr %1102, align 1, !tbaa !178
  %1104 = add i8 %1103, -1
  store i8 %1104, ptr %1102, align 1, !tbaa !178
  br label %1105

1105:                                             ; preds = %1100, %1094
  %1106 = load ptr, ptr %10, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiWindow, ptr %1106, i32 0, i32 64
  %1108 = load i8, ptr %1107, align 2, !tbaa !198
  %1109 = sext i8 %1108 to i32
  %1110 = icmp sgt i32 %1109, 0
  br i1 %1110, label %1111, label %1116

1111:                                             ; preds = %1105
  %1112 = load ptr, ptr %10, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiWindow, ptr %1112, i32 0, i32 64
  %1114 = load i8, ptr %1113, align 2, !tbaa !198
  %1115 = add i8 %1114, -1
  store i8 %1115, ptr %1113, align 2, !tbaa !198
  br label %1116

1116:                                             ; preds = %1111, %1105
  %1117 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1119, label %1128

1119:                                             ; preds = %1116
  %1120 = load i8, ptr %26, align 1, !tbaa !98, !range !94, !noundef !95
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1122, label %1125

1122:                                             ; preds = %1119
  %1123 = load i8, ptr %27, align 1, !tbaa !98, !range !94, !noundef !95
  %1124 = trunc i8 %1123 to i1
  br i1 %1124, label %1128, label %1125

1125:                                             ; preds = %1122, %1119
  %1126 = load ptr, ptr %10, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.ImGuiWindow, ptr %1126, i32 0, i32 63
  store i8 1, ptr %1127, align 1, !tbaa !178
  br label %1128

1128:                                             ; preds = %1125, %1122, %1116
  %1129 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1131, label %1167

1131:                                             ; preds = %1128
  %1132 = load i32, ptr %7, align 4, !tbaa !9
  %1133 = and i32 %1132, 100663296
  %1134 = icmp ne i32 %1133, 0
  br i1 %1134, label %1135, label %1167

1135:                                             ; preds = %1131
  %1136 = load ptr, ptr %10, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiWindow, ptr %1136, i32 0, i32 63
  store i8 1, ptr %1137, align 1, !tbaa !178
  %1138 = load i32, ptr %7, align 4, !tbaa !9
  %1139 = and i32 %1138, 64
  %1140 = icmp ne i32 %1139, 0
  br i1 %1140, label %1141, label %1166

1141:                                             ; preds = %1135
  %1142 = load i8, ptr %26, align 1, !tbaa !98, !range !94, !noundef !95
  %1143 = trunc i8 %1142 to i1
  br i1 %1143, label %1151, label %1144

1144:                                             ; preds = %1141
  %1145 = load ptr, ptr %10, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ImGuiWindow, ptr %1145, i32 0, i32 13
  %1147 = getelementptr inbounds %struct.ImVec2, ptr %1146, i32 0, i32 0
  store float 0.000000e+00, ptr %1147, align 8, !tbaa !167
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiWindow, ptr %1148, i32 0, i32 12
  %1150 = getelementptr inbounds %struct.ImVec2, ptr %1149, i32 0, i32 0
  store float 0.000000e+00, ptr %1150, align 8, !tbaa !199
  br label %1151

1151:                                             ; preds = %1144, %1141
  %1152 = load i8, ptr %27, align 1, !tbaa !98, !range !94, !noundef !95
  %1153 = trunc i8 %1152 to i1
  br i1 %1153, label %1161, label %1154

1154:                                             ; preds = %1151
  %1155 = load ptr, ptr %10, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiWindow, ptr %1155, i32 0, i32 13
  %1157 = getelementptr inbounds %struct.ImVec2, ptr %1156, i32 0, i32 1
  store float 0.000000e+00, ptr %1157, align 4, !tbaa !168
  %1158 = load ptr, ptr %10, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiWindow, ptr %1158, i32 0, i32 12
  %1160 = getelementptr inbounds %struct.ImVec2, ptr %1159, i32 0, i32 1
  store float 0.000000e+00, ptr %1160, align 4, !tbaa !200
  br label %1161

1161:                                             ; preds = %1154, %1151
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1162 = load ptr, ptr %10, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiWindow, ptr %1162, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1163, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !163
  %1164 = load ptr, ptr %10, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.ImGuiWindow, ptr %1164, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1165, ptr align 4 %1163, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #12
  br label %1166

1166:                                             ; preds = %1161, %1135
  br label %1167

1167:                                             ; preds = %1166, %1131, %1128
  %1168 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef %1168)
  %1169 = load ptr, ptr %10, align 8, !tbaa !5
  %1170 = load ptr, ptr %10, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImGuiWindow, ptr %1170, i32 0, i32 7
  %1172 = load ptr, ptr %1171, align 8, !tbaa !185
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1169, ptr noundef %1172)
  %1173 = load ptr, ptr %8, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImGuiContext, ptr %1173, i32 0, i32 2
  %1175 = getelementptr inbounds %struct.ImGuiIO, ptr %1174, i32 0, i32 0
  %1176 = load i32, ptr %1175, align 8, !tbaa !201
  %1177 = and i32 %1176, 32768
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1179, label %1185

1179:                                             ; preds = %1167
  %1180 = load ptr, ptr %10, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.ImGuiWindow, ptr %1180, i32 0, i32 7
  %1182 = load ptr, ptr %1181, align 8, !tbaa !185
  %1183 = getelementptr inbounds %struct.ImGuiViewport, ptr %1182, i32 0, i32 6
  %1184 = load float, ptr %1183, align 8, !tbaa !202
  br label %1186

1185:                                             ; preds = %1167
  br label %1186

1186:                                             ; preds = %1185, %1179
  %1187 = phi float [ %1184, %1179 ], [ 1.000000e+00, %1185 ]
  %1188 = load ptr, ptr %10, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.ImGuiWindow, ptr %1188, i32 0, i32 87
  store float %1187, ptr %1189, align 4, !tbaa !203
  %1190 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1190)
  %1191 = load ptr, ptr %10, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ImGuiWindow, ptr %1191, i32 0, i32 3
  %1193 = load i32, ptr %1192, align 4, !tbaa !125
  store i32 %1193, ptr %7, align 4, !tbaa !9
  %1194 = load ptr, ptr %10, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiWindow, ptr %1194, i32 0, i32 107
  %1196 = load i8, ptr %1195, align 1
  %1197 = and i8 %1196, 1
  %1198 = trunc i8 %1197 to i1
  br i1 %1198, label %1209, label %1199

1199:                                             ; preds = %1186
  %1200 = load i32, ptr %7, align 4, !tbaa !9
  %1201 = and i32 %1200, 16777216
  %1202 = icmp ne i32 %1201, 0
  br i1 %1202, label %1203, label %1209

1203:                                             ; preds = %1199
  %1204 = load ptr, ptr %9, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiStyle, ptr %1204, i32 0, i32 9
  %1206 = load float, ptr %1205, align 4, !tbaa !204
  %1207 = load ptr, ptr %10, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiWindow, ptr %1207, i32 0, i32 19
  store float %1206, ptr %1208, align 4, !tbaa !205
  br label %1229

1209:                                             ; preds = %1199, %1186
  %1210 = load i32, ptr %7, align 4, !tbaa !9
  %1211 = and i32 %1210, 100663296
  %1212 = icmp ne i32 %1211, 0
  br i1 %1212, label %1213, label %1221

1213:                                             ; preds = %1209
  %1214 = load i32, ptr %7, align 4, !tbaa !9
  %1215 = and i32 %1214, 134217728
  %1216 = icmp ne i32 %1215, 0
  br i1 %1216, label %1221, label %1217

1217:                                             ; preds = %1213
  %1218 = load ptr, ptr %9, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiStyle, ptr %1218, i32 0, i32 11
  %1220 = load float, ptr %1219, align 4, !tbaa !206
  br label %1225

1221:                                             ; preds = %1213, %1209
  %1222 = load ptr, ptr %9, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiStyle, ptr %1222, i32 0, i32 4
  %1224 = load float, ptr %1223, align 4, !tbaa !207
  br label %1225

1225:                                             ; preds = %1221, %1217
  %1226 = phi float [ %1220, %1217 ], [ %1224, %1221 ]
  %1227 = load ptr, ptr %10, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.ImGuiWindow, ptr %1227, i32 0, i32 19
  store float %1226, ptr %1228, align 4, !tbaa !205
  br label %1229

1229:                                             ; preds = %1225, %1203
  %1230 = load ptr, ptr %9, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.ImGuiStyle, ptr %1230, i32 0, i32 2
  %1232 = load ptr, ptr %10, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiWindow, ptr %1232, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1233, ptr align 4 %1231, i64 8, i1 false), !tbaa.struct !163
  %1234 = load ptr, ptr %10, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.ImGuiWindow, ptr %1234, i32 0, i32 107
  %1236 = load i8, ptr %1235, align 1
  %1237 = and i8 %1236, 1
  %1238 = trunc i8 %1237 to i1
  br i1 %1238, label %1272, label %1239

1239:                                             ; preds = %1229
  %1240 = load i32, ptr %7, align 4, !tbaa !9
  %1241 = and i32 %1240, 16777216
  %1242 = icmp ne i32 %1241, 0
  br i1 %1242, label %1243, label %1272

1243:                                             ; preds = %1239
  %1244 = load i32, ptr %7, align 4, !tbaa !9
  %1245 = and i32 %1244, 67108864
  %1246 = icmp ne i32 %1245, 0
  br i1 %1246, label %1272, label %1247

1247:                                             ; preds = %1243
  %1248 = load ptr, ptr %10, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiWindow, ptr %1248, i32 0, i32 5
  %1250 = load i32, ptr %1249, align 4, !tbaa !129
  %1251 = and i32 %1250, 2
  %1252 = icmp ne i32 %1251, 0
  br i1 %1252, label %1272, label %1253

1253:                                             ; preds = %1247
  %1254 = load ptr, ptr %10, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiWindow, ptr %1254, i32 0, i32 19
  %1256 = load float, ptr %1255, align 4, !tbaa !205
  %1257 = fcmp oeq float %1256, 0.000000e+00
  br i1 %1257, label %1258, label %1272

1258:                                             ; preds = %1253
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %1259 = load i32, ptr %7, align 4, !tbaa !9
  %1260 = and i32 %1259, 1024
  %1261 = icmp ne i32 %1260, 0
  br i1 %1261, label %1262, label %1267

1262:                                             ; preds = %1258
  %1263 = load ptr, ptr %9, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiStyle, ptr %1263, i32 0, i32 2
  %1265 = getelementptr inbounds %struct.ImVec2, ptr %1264, i32 0, i32 1
  %1266 = load float, ptr %1265, align 4, !tbaa !208
  br label %1268

1267:                                             ; preds = %1258
  br label %1268

1268:                                             ; preds = %1267, %1262
  %1269 = phi float [ %1266, %1262 ], [ 0.000000e+00, %1267 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef 0.000000e+00, float noundef %1269)
  %1270 = load ptr, ptr %10, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ImGuiWindow, ptr %1270, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1271, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  br label %1272

1272:                                             ; preds = %1268, %1253, %1247, %1243, %1239, %1229
  %1273 = load ptr, ptr %10, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiWindow, ptr %1273, i32 0, i32 17
  %1275 = getelementptr inbounds %struct.ImVec2, ptr %1274, i32 0, i32 0
  %1276 = load float, ptr %1275, align 8, !tbaa !209
  %1277 = load ptr, ptr %9, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.ImGuiStyle, ptr %1277, i32 0, i32 15
  %1279 = getelementptr inbounds %struct.ImVec2, ptr %1278, i32 0, i32 0
  %1280 = load float, ptr %1279, align 4, !tbaa !210
  %1281 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1276, float noundef %1280)
  %1282 = load ptr, ptr %8, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.ImGuiContext, ptr %1282, i32 0, i32 89
  %1284 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1283, i32 0, i32 22
  %1285 = getelementptr inbounds %struct.ImVec2, ptr %1284, i32 0, i32 0
  %1286 = load float, ptr %1285, align 4, !tbaa !211
  %1287 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1281, float noundef %1286)
  %1288 = load ptr, ptr %10, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiWindow, ptr %1288, i32 0, i32 70
  %1290 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1289, i32 0, i32 22
  %1291 = getelementptr inbounds %struct.ImVec2, ptr %1290, i32 0, i32 0
  store float %1287, ptr %1291, align 4, !tbaa !212
  %1292 = load ptr, ptr %8, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ImGuiContext, ptr %1292, i32 0, i32 89
  %1294 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1293, i32 0, i32 22
  %1295 = getelementptr inbounds %struct.ImVec2, ptr %1294, i32 0, i32 1
  %1296 = load float, ptr %1295, align 4, !tbaa !213
  %1297 = load ptr, ptr %10, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ImGuiWindow, ptr %1297, i32 0, i32 70
  %1299 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1298, i32 0, i32 22
  %1300 = getelementptr inbounds %struct.ImVec2, ptr %1299, i32 0, i32 1
  store float %1296, ptr %1300, align 4, !tbaa !214
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #12
  %1301 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %1302 = trunc i8 %1301 to i1
  %1303 = zext i1 %1302 to i8
  store i8 %1303, ptr %37, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #12
  %1304 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %1305 = trunc i8 %1304 to i1
  %1306 = zext i1 %1305 to i8
  store i8 %1306, ptr %38, align 1, !tbaa !98
  %1307 = load i32, ptr %7, align 4, !tbaa !9
  %1308 = and i32 %1307, 1
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1379, label %1310

1310:                                             ; preds = %1272
  %1311 = load i32, ptr %7, align 4, !tbaa !9
  %1312 = and i32 %1311, 32
  %1313 = icmp ne i32 %1312, 0
  br i1 %1313, label %1379, label %1314

1314:                                             ; preds = %1310
  %1315 = load ptr, ptr %10, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ImGuiWindow, ptr %1315, i32 0, i32 107
  %1317 = load i8, ptr %1316, align 1
  %1318 = and i8 %1317, 1
  %1319 = trunc i8 %1318 to i1
  br i1 %1319, label %1379, label %1320

1320:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #12
  %1321 = load ptr, ptr %10, align 8, !tbaa !5
  %1322 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1321)
  %1323 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 0
  %1324 = extractvalue { <2 x float>, <2 x float> } %1322, 0
  store <2 x float> %1324, ptr %1323, align 4
  %1325 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 1
  %1326 = extractvalue { <2 x float>, <2 x float> } %1322, 1
  store <2 x float> %1326, ptr %1325, align 4
  %1327 = load ptr, ptr %8, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.ImGuiContext, ptr %1327, i32 0, i32 35
  %1329 = load ptr, ptr %1328, align 8, !tbaa !215
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = icmp eq ptr %1329, %1330
  br i1 %1331, label %1332, label %1357

1332:                                             ; preds = %1320
  %1333 = load ptr, ptr %8, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.ImGuiContext, ptr %1333, i32 0, i32 46
  %1335 = load i32, ptr %1334, align 8, !tbaa !216
  %1336 = icmp eq i32 %1335, 0
  br i1 %1336, label %1337, label %1357

1337:                                             ; preds = %1332
  %1338 = load ptr, ptr %8, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.ImGuiContext, ptr %1338, i32 0, i32 47
  %1340 = load i32, ptr %1339, align 4, !tbaa !217
  %1341 = icmp eq i32 %1340, 0
  br i1 %1341, label %1342, label %1357

1342:                                             ; preds = %1337
  %1343 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 0
  %1344 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 1
  %1345 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1343, ptr noundef nonnull align 4 dereferenceable(8) %1344, i1 noundef zeroext true)
  br i1 %1345, label %1346, label %1357

1346:                                             ; preds = %1342
  %1347 = load ptr, ptr %8, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiContext, ptr %1347, i32 0, i32 2
  %1349 = getelementptr inbounds %struct.ImGuiIO, ptr %1348, i32 0, i32 85
  %1350 = getelementptr inbounds [5 x i16], ptr %1349, i64 0, i64 0
  %1351 = load i16, ptr %1350, align 2, !tbaa !218
  %1352 = zext i16 %1351 to i32
  %1353 = icmp eq i32 %1352, 2
  br i1 %1353, label %1354, label %1357

1354:                                             ; preds = %1346
  %1355 = load ptr, ptr %10, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.ImGuiWindow, ptr %1355, i32 0, i32 43
  store i8 1, ptr %1356, align 1, !tbaa !219
  br label %1357

1357:                                             ; preds = %1354, %1346, %1342, %1337, %1332, %1320
  %1358 = load ptr, ptr %10, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.ImGuiWindow, ptr %1358, i32 0, i32 43
  %1360 = load i8, ptr %1359, align 1, !tbaa !219, !range !94, !noundef !95
  %1361 = trunc i8 %1360 to i1
  br i1 %1361, label %1362, label %1378

1362:                                             ; preds = %1357
  %1363 = load ptr, ptr %10, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.ImGuiWindow, ptr %1363, i32 0, i32 42
  %1365 = load i8, ptr %1364, align 2, !tbaa !220, !range !94, !noundef !95
  %1366 = trunc i8 %1365 to i1
  %1367 = xor i1 %1366, true
  %1368 = load ptr, ptr %10, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.ImGuiWindow, ptr %1368, i32 0, i32 42
  %1370 = zext i1 %1367 to i8
  store i8 %1370, ptr %1369, align 2, !tbaa !220
  %1371 = load ptr, ptr %10, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.ImGuiWindow, ptr %1371, i32 0, i32 42
  %1373 = load i8, ptr %1372, align 2, !tbaa !220, !range !94, !noundef !95
  %1374 = trunc i8 %1373 to i1
  br i1 %1374, label %1376, label %1375

1375:                                             ; preds = %1362
  store i8 1, ptr %38, align 1, !tbaa !98
  br label %1376

1376:                                             ; preds = %1375, %1362
  %1377 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1377)
  br label %1378

1378:                                             ; preds = %1376, %1357
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #12
  br label %1382

1379:                                             ; preds = %1314, %1310, %1272
  %1380 = load ptr, ptr %10, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiWindow, ptr %1380, i32 0, i32 42
  store i8 0, ptr %1381, align 2, !tbaa !220
  br label %1382

1382:                                             ; preds = %1379, %1378
  %1383 = load ptr, ptr %10, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.ImGuiWindow, ptr %1383, i32 0, i32 43
  store i8 0, ptr %1384, align 1, !tbaa !219
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %1385 = load ptr, ptr %10, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImGuiWindow, ptr %1385, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1386, i64 8, i1 false), !tbaa.struct !163
  %1387 = load ptr, ptr %10, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.ImGuiWindow, ptr %1387, i32 0, i32 20
  store float 0.000000e+00, ptr %1388, align 8, !tbaa !221
  %1389 = load ptr, ptr %10, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.ImGuiWindow, ptr %1389, i32 0, i32 22
  store float 0.000000e+00, ptr %1390, align 8, !tbaa !222
  %1391 = load ptr, ptr %10, align 8, !tbaa !5
  %1392 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %1391)
  %1393 = load ptr, ptr %10, align 8, !tbaa !5
  %1394 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %1393)
  %1395 = fadd float %1392, %1394
  %1396 = load ptr, ptr %10, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.ImGuiWindow, ptr %1396, i32 0, i32 21
  store float %1395, ptr %1397, align 4, !tbaa !223
  %1398 = load ptr, ptr %10, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.ImGuiWindow, ptr %1398, i32 0, i32 23
  store float 0.000000e+00, ptr %1399, align 4, !tbaa !224
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1400 = load ptr, ptr %10, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiWindow, ptr %1400, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1401, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  %1402 = load ptr, ptr %10, align 8, !tbaa !5
  %1403 = load ptr, ptr %10, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiWindow, ptr %1403, i32 0, i32 15
  %1405 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1402, ptr noundef nonnull align 4 dereferenceable(8) %1404)
  store <2 x float> %1405, ptr %42, align 4
  %1406 = load i32, ptr %7, align 4, !tbaa !9
  %1407 = and i32 %1406, 64
  %1408 = icmp ne i32 %1407, 0
  br i1 %1408, label %1409, label %1433

1409:                                             ; preds = %1382
  %1410 = load ptr, ptr %10, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.ImGuiWindow, ptr %1410, i32 0, i32 42
  %1412 = load i8, ptr %1411, align 2, !tbaa !220, !range !94, !noundef !95
  %1413 = trunc i8 %1412 to i1
  br i1 %1413, label %1433, label %1414

1414:                                             ; preds = %1409
  %1415 = load i8, ptr %26, align 1, !tbaa !98, !range !94, !noundef !95
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %1423, label %1417

1417:                                             ; preds = %1414
  %1418 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1419 = load float, ptr %1418, align 4, !tbaa !225
  %1420 = load ptr, ptr %10, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.ImGuiWindow, ptr %1420, i32 0, i32 13
  %1422 = getelementptr inbounds %struct.ImVec2, ptr %1421, i32 0, i32 0
  store float %1419, ptr %1422, align 8, !tbaa !167
  store i8 1, ptr %37, align 1, !tbaa !98
  br label %1423

1423:                                             ; preds = %1417, %1414
  %1424 = load i8, ptr %27, align 1, !tbaa !98, !range !94, !noundef !95
  %1425 = trunc i8 %1424 to i1
  br i1 %1425, label %1432, label %1426

1426:                                             ; preds = %1423
  %1427 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1428 = load float, ptr %1427, align 4, !tbaa !226
  %1429 = load ptr, ptr %10, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiWindow, ptr %1429, i32 0, i32 13
  %1431 = getelementptr inbounds %struct.ImVec2, ptr %1430, i32 0, i32 1
  store float %1428, ptr %1431, align 4, !tbaa !168
  store i8 1, ptr %38, align 1, !tbaa !98
  br label %1432

1432:                                             ; preds = %1426, %1423
  br label %1514

1433:                                             ; preds = %1409, %1382
  %1434 = load ptr, ptr %10, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.ImGuiWindow, ptr %1434, i32 0, i32 58
  %1436 = load i8, ptr %1435, align 8, !tbaa !227
  %1437 = sext i8 %1436 to i32
  %1438 = icmp sgt i32 %1437, 0
  br i1 %1438, label %1445, label %1439

1439:                                             ; preds = %1433
  %1440 = load ptr, ptr %10, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.ImGuiWindow, ptr %1440, i32 0, i32 59
  %1442 = load i8, ptr %1441, align 1, !tbaa !228
  %1443 = sext i8 %1442 to i32
  %1444 = icmp sgt i32 %1443, 0
  br i1 %1444, label %1445, label %1513

1445:                                             ; preds = %1439, %1433
  %1446 = load i8, ptr %26, align 1, !tbaa !98, !range !94, !noundef !95
  %1447 = trunc i8 %1446 to i1
  br i1 %1447, label %1475, label %1448

1448:                                             ; preds = %1445
  %1449 = load ptr, ptr %10, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.ImGuiWindow, ptr %1449, i32 0, i32 58
  %1451 = load i8, ptr %1450, align 8, !tbaa !227
  %1452 = sext i8 %1451 to i32
  %1453 = icmp sgt i32 %1452, 0
  br i1 %1453, label %1454, label %1475

1454:                                             ; preds = %1448
  %1455 = load ptr, ptr %10, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.ImGuiWindow, ptr %1455, i32 0, i32 60
  %1457 = load i8, ptr %1456, align 2, !tbaa !229, !range !94, !noundef !95
  %1458 = trunc i8 %1457 to i1
  br i1 %1458, label %1459, label %1467

1459:                                             ; preds = %1454
  %1460 = load ptr, ptr %10, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.ImGuiWindow, ptr %1460, i32 0, i32 13
  %1462 = getelementptr inbounds %struct.ImVec2, ptr %1461, i32 0, i32 0
  %1463 = load float, ptr %1462, align 8, !tbaa !167
  %1464 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1465 = load float, ptr %1464, align 4, !tbaa !225
  %1466 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1463, float noundef %1465)
  br label %1470

1467:                                             ; preds = %1454
  %1468 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1469 = load float, ptr %1468, align 4, !tbaa !225
  br label %1470

1470:                                             ; preds = %1467, %1459
  %1471 = phi float [ %1466, %1459 ], [ %1469, %1467 ]
  %1472 = load ptr, ptr %10, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.ImGuiWindow, ptr %1472, i32 0, i32 13
  %1474 = getelementptr inbounds %struct.ImVec2, ptr %1473, i32 0, i32 0
  store float %1471, ptr %1474, align 8, !tbaa !167
  store i8 1, ptr %37, align 1, !tbaa !98
  br label %1475

1475:                                             ; preds = %1470, %1448, %1445
  %1476 = load i8, ptr %27, align 1, !tbaa !98, !range !94, !noundef !95
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1505, label %1478

1478:                                             ; preds = %1475
  %1479 = load ptr, ptr %10, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImGuiWindow, ptr %1479, i32 0, i32 59
  %1481 = load i8, ptr %1480, align 1, !tbaa !228
  %1482 = sext i8 %1481 to i32
  %1483 = icmp sgt i32 %1482, 0
  br i1 %1483, label %1484, label %1505

1484:                                             ; preds = %1478
  %1485 = load ptr, ptr %10, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ImGuiWindow, ptr %1485, i32 0, i32 60
  %1487 = load i8, ptr %1486, align 2, !tbaa !229, !range !94, !noundef !95
  %1488 = trunc i8 %1487 to i1
  br i1 %1488, label %1489, label %1497

1489:                                             ; preds = %1484
  %1490 = load ptr, ptr %10, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.ImGuiWindow, ptr %1490, i32 0, i32 13
  %1492 = getelementptr inbounds %struct.ImVec2, ptr %1491, i32 0, i32 1
  %1493 = load float, ptr %1492, align 4, !tbaa !168
  %1494 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1495 = load float, ptr %1494, align 4, !tbaa !226
  %1496 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1493, float noundef %1495)
  br label %1500

1497:                                             ; preds = %1484
  %1498 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1499 = load float, ptr %1498, align 4, !tbaa !226
  br label %1500

1500:                                             ; preds = %1497, %1489
  %1501 = phi float [ %1496, %1489 ], [ %1499, %1497 ]
  %1502 = load ptr, ptr %10, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.ImGuiWindow, ptr %1502, i32 0, i32 13
  %1504 = getelementptr inbounds %struct.ImVec2, ptr %1503, i32 0, i32 1
  store float %1501, ptr %1504, align 4, !tbaa !168
  store i8 1, ptr %38, align 1, !tbaa !98
  br label %1505

1505:                                             ; preds = %1500, %1478, %1475
  %1506 = load ptr, ptr %10, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiWindow, ptr %1506, i32 0, i32 42
  %1508 = load i8, ptr %1507, align 2, !tbaa !220, !range !94, !noundef !95
  %1509 = trunc i8 %1508 to i1
  br i1 %1509, label %1512, label %1510

1510:                                             ; preds = %1505
  %1511 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1511)
  br label %1512

1512:                                             ; preds = %1510, %1505
  br label %1513

1513:                                             ; preds = %1512, %1439
  br label %1514

1514:                                             ; preds = %1513, %1432
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %1515 = load ptr, ptr %10, align 8, !tbaa !5
  %1516 = load ptr, ptr %10, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.ImGuiWindow, ptr %1516, i32 0, i32 13
  %1518 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1515, ptr noundef nonnull align 4 dereferenceable(8) %1517)
  store <2 x float> %1518, ptr %43, align 4
  %1519 = load ptr, ptr %10, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.ImGuiWindow, ptr %1519, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1520, ptr align 4 %43, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %1521 = load ptr, ptr %10, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiWindow, ptr %1521, i32 0, i32 42
  %1523 = load i8, ptr %1522, align 2, !tbaa !220, !range !94, !noundef !95
  %1524 = trunc i8 %1523 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #12
  br i1 %1524, label %1525, label %1537

1525:                                             ; preds = %1514
  %1526 = load i32, ptr %7, align 4, !tbaa !9
  %1527 = and i32 %1526, 16777216
  %1528 = icmp ne i32 %1527, 0
  br i1 %1528, label %1537, label %1529

1529:                                             ; preds = %1525
  %1530 = load ptr, ptr %10, align 8, !tbaa !5
  %1531 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1530)
  %1532 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 0
  %1533 = extractvalue { <2 x float>, <2 x float> } %1531, 0
  store <2 x float> %1533, ptr %1532, align 4
  %1534 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 1
  %1535 = extractvalue { <2 x float>, <2 x float> } %1531, 1
  store <2 x float> %1535, ptr %1534, align 4
  %1536 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  store <2 x float> %1536, ptr %44, align 4
  br label %1540

1537:                                             ; preds = %1525, %1514
  %1538 = load ptr, ptr %10, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.ImGuiWindow, ptr %1538, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 8 %1539, i64 8, i1 false), !tbaa.struct !163
  br label %1540

1540:                                             ; preds = %1537, %1529
  %1541 = load ptr, ptr %10, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ImGuiWindow, ptr %1541, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1542, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  %1543 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %1544 = trunc i8 %1543 to i1
  br i1 %1544, label %1545, label %1566

1545:                                             ; preds = %1540
  %1546 = load ptr, ptr %10, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.ImGuiWindow, ptr %1546, i32 0, i32 61
  store i32 -1, ptr %1547, align 4, !tbaa !230
  %1548 = load i32, ptr %7, align 4, !tbaa !9
  %1549 = and i32 %1548, 67108864
  %1550 = icmp ne i32 %1549, 0
  br i1 %1550, label %1551, label %1565

1551:                                             ; preds = %1545
  %1552 = load i32, ptr %7, align 4, !tbaa !9
  %1553 = and i32 %1552, 134217728
  %1554 = icmp ne i32 %1553, 0
  br i1 %1554, label %1565, label %1555

1555:                                             ; preds = %1551
  %1556 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %1557 = trunc i8 %1556 to i1
  br i1 %1557, label %1565, label %1558

1558:                                             ; preds = %1555
  %1559 = load ptr, ptr %8, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.ImGuiContext, ptr %1559, i32 0, i32 99
  %1561 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1560)
  %1562 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1561, i32 0, i32 7
  %1563 = load ptr, ptr %10, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.ImGuiWindow, ptr %1563, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1564, ptr align 4 %1562, i64 8, i1 false), !tbaa.struct !163
  br label %1565

1565:                                             ; preds = %1558, %1555, %1551, %1545
  br label %1566

1566:                                             ; preds = %1565, %1540
  %1567 = load i32, ptr %7, align 4, !tbaa !9
  %1568 = and i32 %1567, 16777216
  %1569 = icmp ne i32 %1568, 0
  br i1 %1569, label %1570, label %1611

1570:                                             ; preds = %1566
  %1571 = load ptr, ptr %22, align 8, !tbaa !5
  %1572 = icmp ne ptr %1571, null
  br i1 %1572, label %1573, label %1578

1573:                                             ; preds = %1570
  %1574 = load ptr, ptr %22, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.ImGuiWindow, ptr %1574, i32 0, i32 39
  %1576 = load i8, ptr %1575, align 1, !tbaa !179, !range !94, !noundef !95
  %1577 = trunc i8 %1576 to i1
  br label %1578

1578:                                             ; preds = %1573, %1570
  %1579 = phi i1 [ false, %1570 ], [ %1577, %1573 ]
  br i1 %1579, label %1580, label %1581

1580:                                             ; preds = %1578
  br label %1583

1581:                                             ; preds = %1578
  call void @__assert_fail(ptr noundef @.str.158, ptr noundef @.str.3, i32 noundef 7122, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1582:                                             ; No predecessors!
  br label %1583

1583:                                             ; preds = %1582, %1580
  %1584 = load ptr, ptr %22, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.ImGuiWindow, ptr %1584, i32 0, i32 70
  %1586 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1585, i32 0, i32 26
  %1587 = getelementptr inbounds %struct.ImVector.4, ptr %1586, i32 0, i32 0
  %1588 = load i32, ptr %1587, align 8, !tbaa !231
  %1589 = trunc i32 %1588 to i16
  %1590 = load ptr, ptr %10, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.ImGuiWindow, ptr %1590, i32 0, i32 54
  store i16 %1589, ptr %1591, align 4, !tbaa !132
  %1592 = load ptr, ptr %22, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.ImGuiWindow, ptr %1592, i32 0, i32 70
  %1594 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1593, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1594, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1595 = load i32, ptr %7, align 4, !tbaa !9
  %1596 = and i32 %1595, 67108864
  %1597 = icmp ne i32 %1596, 0
  br i1 %1597, label %1610, label %1598

1598:                                             ; preds = %1583
  %1599 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1610, label %1601

1601:                                             ; preds = %1598
  %1602 = load i8, ptr %29, align 1, !tbaa !98, !range !94, !noundef !95
  %1603 = trunc i8 %1602 to i1
  br i1 %1603, label %1610, label %1604

1604:                                             ; preds = %1601
  %1605 = load ptr, ptr %22, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.ImGuiWindow, ptr %1605, i32 0, i32 70
  %1607 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1606, i32 0, i32 0
  %1608 = load ptr, ptr %10, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.ImGuiWindow, ptr %1608, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1609, ptr align 8 %1607, i64 8, i1 false), !tbaa.struct !163
  br label %1610

1610:                                             ; preds = %1604, %1601, %1598, %1583
  br label %1611

1611:                                             ; preds = %1610, %1566
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #12
  %1612 = load ptr, ptr %10, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.ImGuiWindow, ptr %1612, i32 0, i32 67
  %1614 = getelementptr inbounds %struct.ImVec2, ptr %1613, i32 0, i32 0
  %1615 = load float, ptr %1614, align 8, !tbaa !232
  %1616 = fcmp une float %1615, 0x47EFFFFFE0000000
  br i1 %1616, label %1617, label %1623

1617:                                             ; preds = %1611
  %1618 = load ptr, ptr %10, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.ImGuiWindow, ptr %1618, i32 0, i32 63
  %1620 = load i8, ptr %1619, align 1, !tbaa !178
  %1621 = sext i8 %1620 to i32
  %1622 = icmp eq i32 %1621, 0
  br label %1623

1623:                                             ; preds = %1617, %1611
  %1624 = phi i1 [ false, %1611 ], [ %1622, %1617 ]
  %1625 = zext i1 %1624 to i8
  store i8 %1625, ptr %46, align 1, !tbaa !98
  %1626 = load i8, ptr %46, align 1, !tbaa !98, !range !94, !noundef !95
  %1627 = trunc i8 %1626 to i1
  br i1 %1627, label %1628, label %1638

1628:                                             ; preds = %1623
  %1629 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %1630 = load ptr, ptr %10, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.ImGuiWindow, ptr %1630, i32 0, i32 67
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %1632 = load ptr, ptr %10, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiWindow, ptr %1632, i32 0, i32 12
  %1634 = load ptr, ptr %10, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.ImGuiWindow, ptr %1634, i32 0, i32 68
  %1636 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1633, ptr noundef nonnull align 4 dereferenceable(8) %1635)
  store <2 x float> %1636, ptr %48, align 4
  %1637 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1631, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1637, ptr %47, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1629, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1680

1638:                                             ; preds = %1623
  %1639 = load i32, ptr %7, align 4, !tbaa !9
  %1640 = and i32 %1639, 268435456
  %1641 = icmp ne i32 %1640, 0
  br i1 %1641, label %1642, label %1647

1642:                                             ; preds = %1638
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #12
  %1643 = load ptr, ptr %10, align 8, !tbaa !5
  %1644 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1643)
  store <2 x float> %1644, ptr %49, align 4
  %1645 = load ptr, ptr %10, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1646, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  br label %1679

1647:                                             ; preds = %1638
  %1648 = load i32, ptr %7, align 4, !tbaa !9
  %1649 = and i32 %1648, 67108864
  %1650 = icmp ne i32 %1649, 0
  br i1 %1650, label %1651, label %1662

1651:                                             ; preds = %1647
  %1652 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %1653 = trunc i8 %1652 to i1
  br i1 %1653, label %1662, label %1654

1654:                                             ; preds = %1651
  %1655 = load i8, ptr %30, align 1, !tbaa !98, !range !94, !noundef !95
  %1656 = trunc i8 %1655 to i1
  br i1 %1656, label %1657, label %1662

1657:                                             ; preds = %1654
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %1658 = load ptr, ptr %10, align 8, !tbaa !5
  %1659 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1658)
  store <2 x float> %1659, ptr %50, align 4
  %1660 = load ptr, ptr %10, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiWindow, ptr %1660, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1661, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  br label %1678

1662:                                             ; preds = %1654, %1651, %1647
  %1663 = load i32, ptr %7, align 4, !tbaa !9
  %1664 = and i32 %1663, 33554432
  %1665 = icmp ne i32 %1664, 0
  br i1 %1665, label %1666, label %1677

1666:                                             ; preds = %1662
  %1667 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %1668 = trunc i8 %1667 to i1
  br i1 %1668, label %1677, label %1669

1669:                                             ; preds = %1666
  %1670 = load i8, ptr %29, align 1, !tbaa !98, !range !94, !noundef !95
  %1671 = trunc i8 %1670 to i1
  br i1 %1671, label %1677, label %1672

1672:                                             ; preds = %1669
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #12
  %1673 = load ptr, ptr %10, align 8, !tbaa !5
  %1674 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1673)
  store <2 x float> %1674, ptr %51, align 4
  %1675 = load ptr, ptr %10, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.ImGuiWindow, ptr %1675, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1676, ptr align 4 %51, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #12
  br label %1677

1677:                                             ; preds = %1672, %1669, %1666, %1662
  br label %1678

1678:                                             ; preds = %1677, %1657
  br label %1679

1679:                                             ; preds = %1678, %1642
  br label %1680

1680:                                             ; preds = %1679, %1628
  %1681 = load ptr, ptr %10, align 8, !tbaa !5
  %1682 = getelementptr inbounds %struct.ImGuiWindow, ptr %1681, i32 0, i32 10
  %1683 = load i32, ptr %1682, align 4, !tbaa !233
  %1684 = icmp sge i32 %1683, 0
  br i1 %1684, label %1685, label %1750

1685:                                             ; preds = %1680
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.ImGuiWindow, ptr %1686, i32 0, i32 38
  %1688 = load i8, ptr %1687, align 2, !tbaa !234, !range !94, !noundef !95
  %1689 = trunc i8 %1688 to i1
  br i1 %1689, label %1750, label %1690

1690:                                             ; preds = %1685
  %1691 = load ptr, ptr %10, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiWindow, ptr %1691, i32 0, i32 7
  %1693 = load ptr, ptr %1692, align 8, !tbaa !185
  %1694 = getelementptr inbounds %struct.ImGuiViewport, ptr %1693, i32 0, i32 1
  %1695 = load i32, ptr %1694, align 4, !tbaa !235
  %1696 = and i32 %1695, 4096
  %1697 = icmp ne i32 %1696, 0
  br i1 %1697, label %1750, label %1698

1698:                                             ; preds = %1690
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #12
  %1699 = load ptr, ptr %10, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.ImGuiWindow, ptr %1699, i32 0, i32 7
  %1701 = load ptr, ptr %1700, align 8, !tbaa !185
  %1702 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1701)
  %1703 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 0
  %1704 = extractvalue { <2 x float>, <2 x float> } %1702, 0
  store <2 x float> %1704, ptr %1703, align 4
  %1705 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 1
  %1706 = extractvalue { <2 x float>, <2 x float> } %1702, 1
  store <2 x float> %1706, ptr %1705, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #12
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1707)
  %1709 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 0
  %1710 = extractvalue { <2 x float>, <2 x float> } %1708, 0
  store <2 x float> %1710, ptr %1709, align 4
  %1711 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 1
  %1712 = extractvalue { <2 x float>, <2 x float> } %1708, 1
  store <2 x float> %1712, ptr %1711, align 4
  %1713 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %52, ptr noundef nonnull align 4 dereferenceable(16) %53)
  %1714 = xor i1 %1713, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #12
  br i1 %1714, label %1715, label %1749

1715:                                             ; preds = %1698
  %1716 = load ptr, ptr %10, align 8, !tbaa !5
  %1717 = load ptr, ptr %10, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.ImGuiWindow, ptr %1717, i32 0, i32 2
  %1719 = load i32, ptr %1718, align 8, !tbaa !100
  %1720 = load ptr, ptr %10, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.ImGuiWindow, ptr %1720, i32 0, i32 11
  %1722 = load ptr, ptr %10, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.ImGuiWindow, ptr %1722, i32 0, i32 12
  %1724 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %1716, i32 noundef %1719, ptr noundef nonnull align 4 dereferenceable(8) %1721, ptr noundef nonnull align 4 dereferenceable(8) %1723, i32 noundef 32)
  %1725 = load ptr, ptr %10, align 8, !tbaa !5
  %1726 = getelementptr inbounds %struct.ImGuiWindow, ptr %1725, i32 0, i32 7
  store ptr %1724, ptr %1726, align 8, !tbaa !185
  %1727 = load ptr, ptr %10, align 8, !tbaa !5
  %1728 = load ptr, ptr %10, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ImGuiWindow, ptr %1728, i32 0, i32 7
  %1730 = load ptr, ptr %1729, align 8, !tbaa !185
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1727, ptr noundef %1730)
  %1731 = load ptr, ptr %8, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.ImGuiContext, ptr %1731, i32 0, i32 2
  %1733 = getelementptr inbounds %struct.ImGuiIO, ptr %1732, i32 0, i32 0
  %1734 = load i32, ptr %1733, align 8, !tbaa !201
  %1735 = and i32 %1734, 32768
  %1736 = icmp ne i32 %1735, 0
  br i1 %1736, label %1737, label %1743

1737:                                             ; preds = %1715
  %1738 = load ptr, ptr %10, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.ImGuiWindow, ptr %1738, i32 0, i32 7
  %1740 = load ptr, ptr %1739, align 8, !tbaa !185
  %1741 = getelementptr inbounds %struct.ImGuiViewport, ptr %1740, i32 0, i32 6
  %1742 = load float, ptr %1741, align 8, !tbaa !202
  br label %1744

1743:                                             ; preds = %1715
  br label %1744

1744:                                             ; preds = %1743, %1737
  %1745 = phi float [ %1742, %1737 ], [ 1.000000e+00, %1743 ]
  %1746 = load ptr, ptr %10, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.ImGuiWindow, ptr %1746, i32 0, i32 87
  store float %1745, ptr %1747, align 4, !tbaa !203
  %1748 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1748)
  br label %1749

1749:                                             ; preds = %1744, %1698
  br label %1750

1750:                                             ; preds = %1749, %1690, %1685, %1680
  %1751 = load ptr, ptr %10, align 8, !tbaa !5
  %1752 = getelementptr inbounds %struct.ImGuiWindow, ptr %1751, i32 0, i32 38
  %1753 = load i8, ptr %1752, align 2, !tbaa !234, !range !94, !noundef !95
  %1754 = trunc i8 %1753 to i1
  br i1 %1754, label %1755, label %1758

1755:                                             ; preds = %1750
  %1756 = load ptr, ptr %10, align 8, !tbaa !5
  %1757 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef %1756, ptr noundef %1757)
  br label %1758

1758:                                             ; preds = %1755, %1750
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #12
  %1759 = load ptr, ptr %10, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.ImGuiWindow, ptr %1759, i32 0, i32 7
  %1761 = load ptr, ptr %1760, align 8, !tbaa !185
  %1762 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1761)
  %1763 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 0
  %1764 = extractvalue { <2 x float>, <2 x float> } %1762, 0
  store <2 x float> %1764, ptr %1763, align 4
  %1765 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 1
  %1766 = extractvalue { <2 x float>, <2 x float> } %1762, 1
  store <2 x float> %1766, ptr %1765, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #12
  %1767 = load ptr, ptr %10, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.ImGuiWindow, ptr %1767, i32 0, i32 7
  %1769 = load ptr, ptr %1768, align 8, !tbaa !185
  %1770 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1769)
  %1771 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 0
  %1772 = extractvalue { <2 x float>, <2 x float> } %1770, 0
  store <2 x float> %1772, ptr %1771, align 4
  %1773 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 1
  %1774 = extractvalue { <2 x float>, <2 x float> } %1770, 1
  store <2 x float> %1774, ptr %1773, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #12
  %1775 = load ptr, ptr %9, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.ImGuiStyle, ptr %1775, i32 0, i32 37
  %1777 = load ptr, ptr %9, align 8, !tbaa !5
  %1778 = getelementptr inbounds %struct.ImGuiStyle, ptr %1777, i32 0, i32 38
  %1779 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1776, ptr noundef nonnull align 4 dereferenceable(8) %1778)
  store <2 x float> %1779, ptr %56, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #12
  %1780 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 0
  %1781 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1780, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1781, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #12
  %1782 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 1
  %1783 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1782, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1783, 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) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #12
  %1784 = load i8, ptr %25, align 1, !tbaa !98, !range !94, !noundef !95
  %1785 = trunc i8 %1784 to i1
  br i1 %1785, label %1834, label %1786

1786:                                             ; preds = %1758
  %1787 = load i32, ptr %7, align 4, !tbaa !9
  %1788 = and i32 %1787, 16777216
  %1789 = icmp ne i32 %1788, 0
  br i1 %1789, label %1834, label %1790

1790:                                             ; preds = %1786
  %1791 = load ptr, ptr %10, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.ImGuiWindow, ptr %1791, i32 0, i32 38
  %1793 = load i8, ptr %1792, align 2, !tbaa !234, !range !94, !noundef !95
  %1794 = trunc i8 %1793 to i1
  br i1 %1794, label %1803, label %1795

1795:                                             ; preds = %1790
  %1796 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1797 = fcmp ogt float %1796, 0.000000e+00
  br i1 %1797, label %1798, label %1803

1798:                                             ; preds = %1795
  %1799 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1800 = fcmp ogt float %1799, 0.000000e+00
  br i1 %1800, label %1801, label %1803

1801:                                             ; preds = %1798
  %1802 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1802, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1833

1803:                                             ; preds = %1798, %1795, %1790
  %1804 = load ptr, ptr %10, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.ImGuiWindow, ptr %1804, i32 0, i32 38
  %1806 = load i8, ptr %1805, align 2, !tbaa !234, !range !94, !noundef !95
  %1807 = trunc i8 %1806 to i1
  br i1 %1807, label %1808, label %1832

1808:                                             ; preds = %1803
  %1809 = load ptr, ptr %8, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiContext, ptr %1809, i32 0, i32 3
  %1811 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1810, i32 0, i32 23
  %1812 = getelementptr inbounds %struct.ImVector.0, ptr %1811, i32 0, i32 0
  %1813 = load i32, ptr %1812, align 8, !tbaa !236
  %1814 = icmp sgt i32 %1813, 0
  br i1 %1814, label %1815, label %1832

1815:                                             ; preds = %1808
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #12
  %1816 = load ptr, ptr %10, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiWindow, ptr %1816, i32 0, i32 7
  %1818 = load ptr, ptr %1817, align 8, !tbaa !185
  %1819 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %1818)
  store ptr %1819, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #12
  %1820 = load ptr, ptr %60, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1820, i32 0, i32 2
  %1822 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1821, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1822, ptr %61, align 4
  %1823 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1823, ptr align 4 %61, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  %1824 = load ptr, ptr %60, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1824, i32 0, i32 2
  %1826 = load ptr, ptr %60, align 8, !tbaa !5
  %1827 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1826, i32 0, i32 3
  %1828 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1825, ptr noundef nonnull align 4 dereferenceable(8) %1827)
  store <2 x float> %1828, ptr %63, align 4
  %1829 = 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> %1829, ptr %62, align 4
  %1830 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1830, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  %1831 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1831, ptr noundef nonnull align 4 dereferenceable(16) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #12
  br label %1832

1832:                                             ; preds = %1815, %1808, %1803
  br label %1833

1833:                                             ; preds = %1832, %1801
  br label %1834

1834:                                             ; preds = %1833, %1786, %1758
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1835 = load ptr, ptr %10, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.ImGuiWindow, ptr %1835, i32 0, i32 11
  %1837 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1836)
  store <2 x float> %1837, ptr %64, align 4
  %1838 = load ptr, ptr %10, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.ImGuiWindow, ptr %1838, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1839, ptr align 4 %64, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  %1840 = load ptr, ptr %10, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.ImGuiWindow, ptr %1840, i32 0, i32 38
  %1842 = load i8, ptr %1841, align 2, !tbaa !234, !range !94, !noundef !95
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1850, label %1844

1844:                                             ; preds = %1834
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 107
  %1847 = load i8, ptr %1846, align 1
  %1848 = and i8 %1847, 1
  %1849 = trunc i8 %1848 to i1
  br i1 %1849, label %1850, label %1853

1850:                                             ; preds = %1844, %1834
  %1851 = load ptr, ptr %10, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.ImGuiWindow, ptr %1851, i32 0, i32 18
  store float 0.000000e+00, ptr %1852, align 8, !tbaa !237
  br label %1883

1853:                                             ; preds = %1844
  %1854 = load i32, ptr %7, align 4, !tbaa !9
  %1855 = and i32 %1854, 16777216
  %1856 = icmp ne i32 %1855, 0
  br i1 %1856, label %1857, label %1861

1857:                                             ; preds = %1853
  %1858 = load ptr, ptr %9, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiStyle, ptr %1858, i32 0, i32 8
  %1860 = load float, ptr %1859, align 4, !tbaa !238
  br label %1879

1861:                                             ; preds = %1853
  %1862 = load i32, ptr %7, align 4, !tbaa !9
  %1863 = and i32 %1862, 67108864
  %1864 = icmp ne i32 %1863, 0
  br i1 %1864, label %1865, label %1873

1865:                                             ; preds = %1861
  %1866 = load i32, ptr %7, align 4, !tbaa !9
  %1867 = and i32 %1866, 134217728
  %1868 = icmp ne i32 %1867, 0
  br i1 %1868, label %1873, label %1869

1869:                                             ; preds = %1865
  %1870 = load ptr, ptr %9, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.ImGuiStyle, ptr %1870, i32 0, i32 10
  %1872 = load float, ptr %1871, align 4, !tbaa !239
  br label %1877

1873:                                             ; preds = %1865, %1861
  %1874 = load ptr, ptr %9, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.ImGuiStyle, ptr %1874, i32 0, i32 3
  %1876 = load float, ptr %1875, align 4, !tbaa !240
  br label %1877

1877:                                             ; preds = %1873, %1869
  %1878 = phi float [ %1872, %1869 ], [ %1876, %1873 ]
  br label %1879

1879:                                             ; preds = %1877, %1857
  %1880 = phi float [ %1860, %1857 ], [ %1878, %1877 ]
  %1881 = load ptr, ptr %10, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.ImGuiWindow, ptr %1881, i32 0, i32 18
  store float %1880, ptr %1882, align 8, !tbaa !237
  br label %1883

1883:                                             ; preds = %1879, %1850
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #12
  store i8 0, ptr %65, align 1, !tbaa !98
  %1884 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %1885 = trunc i8 %1884 to i1
  br i1 %1885, label %1886, label %1912

1886:                                             ; preds = %1883
  %1887 = load i32, ptr %7, align 4, !tbaa !9
  %1888 = and i32 %1887, 4096
  %1889 = icmp ne i32 %1888, 0
  br i1 %1889, label %1912, label %1890

1890:                                             ; preds = %1886
  %1891 = load i32, ptr %7, align 4, !tbaa !9
  %1892 = and i32 %1891, 67108864
  %1893 = icmp ne i32 %1892, 0
  br i1 %1893, label %1894, label %1895

1894:                                             ; preds = %1890
  store i8 1, ptr %65, align 1, !tbaa !98
  br label %1911

1895:                                             ; preds = %1890
  %1896 = load ptr, ptr %10, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.ImGuiWindow, ptr %1896, i32 0, i32 107
  %1898 = load i8, ptr %1897, align 1
  %1899 = and i8 %1898, 1
  %1900 = trunc i8 %1899 to i1
  br i1 %1900, label %1905, label %1901

1901:                                             ; preds = %1895
  %1902 = load i32, ptr %7, align 4, !tbaa !9
  %1903 = and i32 %1902, 16777216
  %1904 = icmp eq i32 %1903, 0
  br i1 %1904, label %1905, label %1910

1905:                                             ; preds = %1901, %1895
  %1906 = load i32, ptr %7, align 4, !tbaa !9
  %1907 = and i32 %1906, 33554432
  %1908 = icmp ne i32 %1907, 0
  br i1 %1908, label %1910, label %1909

1909:                                             ; preds = %1905
  store i8 1, ptr %65, align 1, !tbaa !98
  br label %1910

1910:                                             ; preds = %1909, %1905, %1901
  br label %1911

1911:                                             ; preds = %1910, %1894
  br label %1912

1912:                                             ; preds = %1911, %1886, %1883
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #12
  %1913 = load ptr, ptr %10, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.ImGuiWindow, ptr %1913, i32 0, i32 111
  %1915 = load ptr, ptr %1914, align 8, !tbaa !136
  %1916 = icmp ne ptr %1915, null
  br i1 %1916, label %1924, label %1917

1917:                                             ; preds = %1912
  %1918 = load ptr, ptr %10, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.ImGuiWindow, ptr %1918, i32 0, i32 107
  %1920 = load i8, ptr %1919, align 1
  %1921 = and i8 %1920, 1
  %1922 = trunc i8 %1921 to i1
  %1923 = xor i1 %1922, true
  br label %1924

1924:                                             ; preds = %1917, %1912
  %1925 = phi i1 [ true, %1912 ], [ %1923, %1917 ]
  %1926 = zext i1 %1925 to i8
  store i8 %1926, ptr %66, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  store i32 -1, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  store i32 -1, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #12
  call void @llvm.memset.p0.i64(ptr align 16 %69, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #12
  %1927 = load ptr, ptr %10, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiWindow, ptr %1927, i32 0, i32 3
  %1929 = load i32, ptr %1928, align 4, !tbaa !125
  %1930 = and i32 %1929, 16777216
  %1931 = icmp ne i32 %1930, 0
  br i1 %1931, label %1932, label %1933

1932:                                             ; preds = %1924
  br label %1941

1933:                                             ; preds = %1924
  %1934 = load ptr, ptr %8, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.ImGuiContext, ptr %1934, i32 0, i32 2
  %1936 = getelementptr inbounds %struct.ImGuiIO, ptr %1935, i32 0, i32 27
  %1937 = load i8, ptr %1936, align 2, !tbaa !241, !range !94, !noundef !95
  %1938 = trunc i8 %1937 to i1
  %1939 = zext i1 %1938 to i64
  %1940 = select i1 %1938, i32 2, i32 1
  br label %1941

1941:                                             ; preds = %1933, %1932
  %1942 = phi i32 [ 0, %1932 ], [ %1940, %1933 ]
  store i32 %1942, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #12
  %1943 = load ptr, ptr %8, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.ImGuiContext, ptr %1943, i32 0, i32 8
  %1945 = load float, ptr %1944, align 8, !tbaa !242
  %1946 = fmul float %1945, 0x3FF19999A0000000
  %1947 = load ptr, ptr %10, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiWindow, ptr %1947, i32 0, i32 18
  %1949 = load float, ptr %1948, align 8, !tbaa !237
  %1950 = fadd float %1949, 1.000000e+00
  %1951 = load ptr, ptr %8, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ImGuiContext, ptr %1951, i32 0, i32 8
  %1953 = load float, ptr %1952, align 8, !tbaa !242
  %1954 = call float @llvm.fmuladd.f32(float %1953, float 0x3FC99999A0000000, float %1950)
  %1955 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1946, float noundef %1954)
  %1956 = fptosi float %1955 to i32
  %1957 = sitofp i32 %1956 to float
  store float %1957, ptr %71, align 4, !tbaa !151
  %1958 = load i8, ptr %66, align 1, !tbaa !98, !range !94, !noundef !95
  %1959 = trunc i8 %1958 to i1
  br i1 %1959, label %1960, label %1984

1960:                                             ; preds = %1941
  %1961 = load ptr, ptr %10, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.ImGuiWindow, ptr %1961, i32 0, i32 42
  %1963 = load i8, ptr %1962, align 2, !tbaa !220, !range !94, !noundef !95
  %1964 = trunc i8 %1963 to i1
  br i1 %1964, label %1984, label %1965

1965:                                             ; preds = %1960
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #12
  %1966 = load ptr, ptr %10, align 8, !tbaa !5
  %1967 = load i32, ptr %70, align 4, !tbaa !9
  %1968 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1969 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %1966, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef %67, ptr noundef %68, i32 noundef %1967, ptr noundef %1968, ptr noundef nonnull align 4 dereferenceable(16) %57)
  store i32 %1969, ptr %72, align 4, !tbaa !9
  %1970 = load i32, ptr %72, align 4, !tbaa !9
  %1971 = icmp ne i32 %1970, 0
  br i1 %1971, label %1972, label %1983

1972:                                             ; preds = %1965
  %1973 = load i32, ptr %72, align 4, !tbaa !9
  %1974 = and i32 %1973, 1
  %1975 = icmp ne i32 %1974, 0
  br i1 %1975, label %1976, label %1977

1976:                                             ; preds = %1972
  store i8 1, ptr %37, align 1, !tbaa !98
  br label %1977

1977:                                             ; preds = %1976, %1972
  %1978 = load i32, ptr %72, align 4, !tbaa !9
  %1979 = and i32 %1978, 2
  %1980 = icmp ne i32 %1979, 0
  br i1 %1980, label %1981, label %1982

1981:                                             ; preds = %1977
  store i8 1, ptr %38, align 1, !tbaa !98
  br label %1982

1982:                                             ; preds = %1981, %1977
  br label %1983

1983:                                             ; preds = %1982, %1965
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  br label %1984

1984:                                             ; preds = %1983, %1960, %1941
  %1985 = load i32, ptr %67, align 4, !tbaa !9
  %1986 = trunc i32 %1985 to i8
  %1987 = load ptr, ptr %10, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.ImGuiWindow, ptr %1987, i32 0, i32 50
  store i8 %1986, ptr %1988, align 2, !tbaa !243
  %1989 = load i32, ptr %68, align 4, !tbaa !9
  %1990 = trunc i32 %1989 to i8
  %1991 = load ptr, ptr %10, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.ImGuiWindow, ptr %1991, i32 0, i32 51
  store i8 %1990, ptr %1992, align 1, !tbaa !244
  %1993 = load ptr, ptr %10, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiWindow, ptr %1993, i32 0, i32 38
  %1995 = load i8, ptr %1994, align 2, !tbaa !234, !range !94, !noundef !95
  %1996 = trunc i8 %1995 to i1
  br i1 %1996, label %1997, label %2037

1997:                                             ; preds = %1984
  %1998 = load ptr, ptr %10, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.ImGuiWindow, ptr %1998, i32 0, i32 7
  %2000 = load ptr, ptr %1999, align 8, !tbaa !185
  %2001 = getelementptr inbounds %struct.ImGuiViewport, ptr %2000, i32 0, i32 14
  %2002 = load i8, ptr %2001, align 1, !tbaa !245, !range !94, !noundef !95
  %2003 = trunc i8 %2002 to i1
  br i1 %2003, label %2011, label %2004

2004:                                             ; preds = %1997
  %2005 = load ptr, ptr %10, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiWindow, ptr %2005, i32 0, i32 11
  %2007 = load ptr, ptr %10, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.ImGuiWindow, ptr %2007, i32 0, i32 7
  %2009 = load ptr, ptr %2008, align 8, !tbaa !185
  %2010 = getelementptr inbounds %struct.ImGuiViewport, ptr %2009, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2010, ptr align 8 %2006, i64 8, i1 false), !tbaa.struct !163
  br label %2011

2011:                                             ; preds = %2004, %1997
  %2012 = load ptr, ptr %10, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.ImGuiWindow, ptr %2012, i32 0, i32 7
  %2014 = load ptr, ptr %2013, align 8, !tbaa !185
  %2015 = getelementptr inbounds %struct.ImGuiViewport, ptr %2014, i32 0, i32 15
  %2016 = load i8, ptr %2015, align 2, !tbaa !246, !range !94, !noundef !95
  %2017 = trunc i8 %2016 to i1
  br i1 %2017, label %2025, label %2018

2018:                                             ; preds = %2011
  %2019 = load ptr, ptr %10, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.ImGuiWindow, ptr %2019, i32 0, i32 12
  %2021 = load ptr, ptr %10, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.ImGuiWindow, ptr %2021, i32 0, i32 7
  %2023 = load ptr, ptr %2022, align 8, !tbaa !185
  %2024 = getelementptr inbounds %struct.ImGuiViewport, ptr %2023, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2024, ptr align 8 %2020, i64 8, i1 false), !tbaa.struct !163
  br label %2025

2025:                                             ; preds = %2018, %2011
  %2026 = load ptr, ptr %10, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.ImGuiWindow, ptr %2026, i32 0, i32 7
  %2028 = load ptr, ptr %2027, align 8, !tbaa !185
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %2028)
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #12
  %2029 = load ptr, ptr %10, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.ImGuiWindow, ptr %2029, i32 0, i32 7
  %2031 = load ptr, ptr %2030, align 8, !tbaa !185
  %2032 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %2031)
  %2033 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %2034 = extractvalue { <2 x float>, <2 x float> } %2032, 0
  store <2 x float> %2034, ptr %2033, align 4
  %2035 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %2036 = extractvalue { <2 x float>, <2 x float> } %2032, 1
  store <2 x float> %2036, ptr %2035, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %73, i64 16, i1 false), !tbaa.struct !181
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #12
  br label %2037

2037:                                             ; preds = %2025, %1984
  %2038 = load ptr, ptr %10, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.ImGuiWindow, ptr %2038, i32 0, i32 7
  %2040 = load ptr, ptr %2039, align 8, !tbaa !185
  %2041 = getelementptr inbounds %struct.ImGuiViewport, ptr %2040, i32 0, i32 2
  %2042 = load ptr, ptr %10, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.ImGuiWindow, ptr %2042, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2043, ptr align 8 %2041, i64 8, i1 false), !tbaa.struct !163
  %2044 = load ptr, ptr %10, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.ImGuiWindow, ptr %2044, i32 0, i32 42
  %2046 = load i8, ptr %2045, align 2, !tbaa !220, !range !94, !noundef !95
  %2047 = trunc i8 %2046 to i1
  br i1 %2047, label %2220, label %2048

2048:                                             ; preds = %2037
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  %2049 = load ptr, ptr %10, align 8, !tbaa !5
  %2050 = getelementptr inbounds %struct.ImGuiWindow, ptr %2049, i32 0, i32 13
  %2051 = getelementptr inbounds %struct.ImVec2, ptr %2050, i32 0, i32 0
  %2052 = load float, ptr %2051, align 8, !tbaa !167
  %2053 = load ptr, ptr %10, align 8, !tbaa !5
  %2054 = getelementptr inbounds %struct.ImGuiWindow, ptr %2053, i32 0, i32 13
  %2055 = getelementptr inbounds %struct.ImVec2, ptr %2054, i32 0, i32 1
  %2056 = load float, ptr %2055, align 4, !tbaa !168
  %2057 = load ptr, ptr %10, align 8, !tbaa !5
  %2058 = getelementptr inbounds %struct.ImGuiWindow, ptr %2057, i32 0, i32 21
  %2059 = load float, ptr %2058, align 4, !tbaa !223
  %2060 = load ptr, ptr %10, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.ImGuiWindow, ptr %2060, i32 0, i32 23
  %2062 = load float, ptr %2061, align 4, !tbaa !224
  %2063 = fadd float %2059, %2062
  %2064 = fsub float %2056, %2063
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef %2052, float noundef %2064)
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #12
  %2065 = load ptr, ptr %10, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiWindow, ptr %2065, i32 0, i32 72
  %2067 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %2066)
  store <2 x float> %2067, ptr %76, align 4
  %2068 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %76, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %2068, ptr %75, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %2069 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %2070 = trunc i8 %2069 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #12
  br i1 %2070, label %2071, label %2072

2071:                                             ; preds = %2048
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %77, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %2079

2072:                                             ; preds = %2048
  %2073 = load ptr, ptr %10, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.ImGuiWindow, ptr %2073, i32 0, i32 14
  %2075 = load ptr, ptr %10, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiWindow, ptr %2075, i32 0, i32 17
  %2077 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %2076, float noundef 2.000000e+00)
  store <2 x float> %2077, ptr %78, align 4
  %2078 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2074, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %2078, ptr %77, align 4
  br label %2079

2079:                                             ; preds = %2072, %2071
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  %2080 = load i8, ptr %37, align 1, !tbaa !98, !range !94, !noundef !95
  %2081 = trunc i8 %2080 to i1
  br i1 %2081, label %2082, label %2085

2082:                                             ; preds = %2079
  %2083 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 0
  %2084 = load float, ptr %2083, align 4, !tbaa !225
  br label %2088

2085:                                             ; preds = %2079
  %2086 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 0
  %2087 = load float, ptr %2086, align 4, !tbaa !225
  br label %2088

2088:                                             ; preds = %2085, %2082
  %2089 = phi float [ %2084, %2082 ], [ %2087, %2085 ]
  store float %2089, ptr %79, align 4, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  %2090 = load i8, ptr %38, align 1, !tbaa !98, !range !94, !noundef !95
  %2091 = trunc i8 %2090 to i1
  br i1 %2091, label %2092, label %2095

2092:                                             ; preds = %2088
  %2093 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 1
  %2094 = load float, ptr %2093, align 4, !tbaa !226
  br label %2098

2095:                                             ; preds = %2088
  %2096 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 1
  %2097 = load float, ptr %2096, align 4, !tbaa !226
  br label %2098

2098:                                             ; preds = %2095, %2092
  %2099 = phi float [ %2094, %2092 ], [ %2097, %2095 ]
  store float %2099, ptr %80, align 4, !tbaa !151
  %2100 = load i32, ptr %7, align 4, !tbaa !9
  %2101 = and i32 %2100, 16384
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2115, label %2103

2103:                                             ; preds = %2098
  %2104 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2105 = load float, ptr %2104, align 4, !tbaa !226
  %2106 = load float, ptr %80, align 4, !tbaa !151
  %2107 = fcmp ogt float %2105, %2106
  br i1 %2107, label %2108, label %2113

2108:                                             ; preds = %2103
  %2109 = load i32, ptr %7, align 4, !tbaa !9
  %2110 = and i32 %2109, 8
  %2111 = icmp ne i32 %2110, 0
  %2112 = xor i1 %2111, true
  br label %2113

2113:                                             ; preds = %2108, %2103
  %2114 = phi i1 [ false, %2103 ], [ %2112, %2108 ]
  br label %2115

2115:                                             ; preds = %2113, %2098
  %2116 = phi i1 [ true, %2098 ], [ %2114, %2113 ]
  %2117 = load ptr, ptr %10, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiWindow, ptr %2117, i32 0, i32 37
  %2119 = zext i1 %2116 to i8
  store i8 %2119, ptr %2118, align 1, !tbaa !247
  %2120 = load i32, ptr %7, align 4, !tbaa !9
  %2121 = and i32 %2120, 32768
  %2122 = icmp ne i32 %2121, 0
  br i1 %2122, label %2150, label %2123

2123:                                             ; preds = %2115
  %2124 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 0
  %2125 = load float, ptr %2124, align 4, !tbaa !225
  %2126 = load float, ptr %79, align 4, !tbaa !151
  %2127 = load ptr, ptr %10, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.ImGuiWindow, ptr %2127, i32 0, i32 37
  %2129 = load i8, ptr %2128, align 1, !tbaa !247, !range !94, !noundef !95
  %2130 = trunc i8 %2129 to i1
  br i1 %2130, label %2131, label %2135

2131:                                             ; preds = %2123
  %2132 = load ptr, ptr %9, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiStyle, ptr %2132, i32 0, i32 21
  %2134 = load float, ptr %2133, align 4, !tbaa !248
  br label %2136

2135:                                             ; preds = %2123
  br label %2136

2136:                                             ; preds = %2135, %2131
  %2137 = phi float [ %2134, %2131 ], [ 0.000000e+00, %2135 ]
  %2138 = fsub float %2126, %2137
  %2139 = fcmp ogt float %2125, %2138
  br i1 %2139, label %2140, label %2148

2140:                                             ; preds = %2136
  %2141 = load i32, ptr %7, align 4, !tbaa !9
  %2142 = and i32 %2141, 8
  %2143 = icmp ne i32 %2142, 0
  br i1 %2143, label %2148, label %2144

2144:                                             ; preds = %2140
  %2145 = load i32, ptr %7, align 4, !tbaa !9
  %2146 = and i32 %2145, 2048
  %2147 = icmp ne i32 %2146, 0
  br label %2148

2148:                                             ; preds = %2144, %2140, %2136
  %2149 = phi i1 [ false, %2140 ], [ false, %2136 ], [ %2147, %2144 ]
  br label %2150

2150:                                             ; preds = %2148, %2115
  %2151 = phi i1 [ true, %2115 ], [ %2149, %2148 ]
  %2152 = load ptr, ptr %10, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiWindow, ptr %2152, i32 0, i32 36
  %2154 = zext i1 %2151 to i8
  store i8 %2154, ptr %2153, align 8, !tbaa !249
  %2155 = load ptr, ptr %10, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiWindow, ptr %2155, i32 0, i32 36
  %2157 = load i8, ptr %2156, align 8, !tbaa !249, !range !94, !noundef !95
  %2158 = trunc i8 %2157 to i1
  br i1 %2158, label %2159, label %2179

2159:                                             ; preds = %2150
  %2160 = load ptr, ptr %10, align 8, !tbaa !5
  %2161 = getelementptr inbounds %struct.ImGuiWindow, ptr %2160, i32 0, i32 37
  %2162 = load i8, ptr %2161, align 1, !tbaa !247, !range !94, !noundef !95
  %2163 = trunc i8 %2162 to i1
  br i1 %2163, label %2179, label %2164

2164:                                             ; preds = %2159
  %2165 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2166 = load float, ptr %2165, align 4, !tbaa !226
  %2167 = load float, ptr %80, align 4, !tbaa !151
  %2168 = fcmp ogt float %2166, %2167
  br i1 %2168, label %2169, label %2174

2169:                                             ; preds = %2164
  %2170 = load i32, ptr %7, align 4, !tbaa !9
  %2171 = and i32 %2170, 8
  %2172 = icmp ne i32 %2171, 0
  %2173 = xor i1 %2172, true
  br label %2174

2174:                                             ; preds = %2169, %2164
  %2175 = phi i1 [ false, %2164 ], [ %2173, %2169 ]
  %2176 = load ptr, ptr %10, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct.ImGuiWindow, ptr %2176, i32 0, i32 37
  %2178 = zext i1 %2175 to i8
  store i8 %2178, ptr %2177, align 1, !tbaa !247
  br label %2179

2179:                                             ; preds = %2174, %2159, %2150
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #12
  %2180 = load ptr, ptr %10, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.ImGuiWindow, ptr %2180, i32 0, i32 37
  %2182 = load i8, ptr %2181, align 1, !tbaa !247, !range !94, !noundef !95
  %2183 = trunc i8 %2182 to i1
  br i1 %2183, label %2184, label %2188

2184:                                             ; preds = %2179
  %2185 = load ptr, ptr %9, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.ImGuiStyle, ptr %2185, i32 0, i32 21
  %2187 = load float, ptr %2186, align 4, !tbaa !248
  br label %2189

2188:                                             ; preds = %2179
  br label %2189

2189:                                             ; preds = %2188, %2184
  %2190 = phi float [ %2187, %2184 ], [ 0.000000e+00, %2188 ]
  %2191 = load ptr, ptr %10, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 36
  %2193 = load i8, ptr %2192, align 8, !tbaa !249, !range !94, !noundef !95
  %2194 = trunc i8 %2193 to i1
  br i1 %2194, label %2195, label %2199

2195:                                             ; preds = %2189
  %2196 = load ptr, ptr %9, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiStyle, ptr %2196, i32 0, i32 21
  %2198 = load float, ptr %2197, align 4, !tbaa !248
  br label %2200

2199:                                             ; preds = %2189
  br label %2200

2200:                                             ; preds = %2199, %2195
  %2201 = phi float [ %2198, %2195 ], [ 0.000000e+00, %2199 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %81, float noundef %2190, float noundef %2201)
  %2202 = load ptr, ptr %10, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.ImGuiWindow, ptr %2202, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2203, ptr align 4 %81, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #12
  %2204 = load ptr, ptr %10, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiWindow, ptr %2204, i32 0, i32 35
  %2206 = getelementptr inbounds %struct.ImVec2, ptr %2205, i32 0, i32 0
  %2207 = load float, ptr %2206, align 8, !tbaa !250
  %2208 = load ptr, ptr %10, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiWindow, ptr %2208, i32 0, i32 22
  %2210 = load float, ptr %2209, align 8, !tbaa !222
  %2211 = fadd float %2210, %2207
  store float %2211, ptr %2209, align 8, !tbaa !222
  %2212 = load ptr, ptr %10, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.ImGuiWindow, ptr %2212, i32 0, i32 35
  %2214 = getelementptr inbounds %struct.ImVec2, ptr %2213, i32 0, i32 1
  %2215 = load float, ptr %2214, align 4, !tbaa !251
  %2216 = load ptr, ptr %10, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiWindow, ptr %2216, i32 0, i32 23
  %2218 = load float, ptr %2217, align 4, !tbaa !224
  %2219 = fadd float %2218, %2215
  store float %2219, ptr %2217, align 4, !tbaa !224
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  br label %2220

2220:                                             ; preds = %2200, %2037
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #12
  %2221 = load i32, ptr %7, align 4, !tbaa !9
  %2222 = and i32 %2221, 16777216
  %2223 = icmp ne i32 %2222, 0
  br i1 %2223, label %2224, label %2234

2224:                                             ; preds = %2220
  %2225 = load i32, ptr %7, align 4, !tbaa !9
  %2226 = and i32 %2225, 67108864
  %2227 = icmp ne i32 %2226, 0
  br i1 %2227, label %2234, label %2228

2228:                                             ; preds = %2224
  %2229 = load i8, ptr %29, align 1, !tbaa !98, !range !94, !noundef !95
  %2230 = trunc i8 %2229 to i1
  br i1 %2230, label %2234, label %2231

2231:                                             ; preds = %2228
  %2232 = load ptr, ptr %22, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 76
  br label %2235

2234:                                             ; preds = %2228, %2224, %2220
  br label %2235

2235:                                             ; preds = %2234, %2231
  %2236 = phi ptr [ %2233, %2231 ], [ %54, %2234 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 4 %2236, i64 16, i1 false), !tbaa.struct !181
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #12
  %2237 = load ptr, ptr %10, align 8, !tbaa !5
  %2238 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %2237)
  %2239 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 0
  %2240 = extractvalue { <2 x float>, <2 x float> } %2238, 0
  store <2 x float> %2240, ptr %2239, align 4
  %2241 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 1
  %2242 = extractvalue { <2 x float>, <2 x float> } %2238, 1
  store <2 x float> %2242, ptr %2241, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #12
  %2243 = load ptr, ptr %10, align 8, !tbaa !5
  %2244 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %2243)
  %2245 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %84, i32 0, i32 0
  %2246 = extractvalue { <2 x float>, <2 x float> } %2244, 0
  store <2 x float> %2246, ptr %2245, align 4
  %2247 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %84, i32 0, i32 1
  %2248 = extractvalue { <2 x float>, <2 x float> } %2244, 1
  store <2 x float> %2248, ptr %2247, align 4
  %2249 = load ptr, ptr %10, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 71
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2250, ptr align 4 %83, i64 16, i1 false), !tbaa.struct !181
  %2251 = load ptr, ptr %10, align 8, !tbaa !5
  %2252 = getelementptr inbounds %struct.ImGuiWindow, ptr %2251, i32 0, i32 107
  %2253 = load i8, ptr %2252, align 1
  %2254 = and i8 %2253, 1
  %2255 = trunc i8 %2254 to i1
  br i1 %2255, label %2256, label %2265

2256:                                             ; preds = %2235
  %2257 = load ptr, ptr %10, align 8, !tbaa !5
  %2258 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %2257)
  %2259 = load ptr, ptr %10, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.ImGuiWindow, ptr %2259, i32 0, i32 71
  %2261 = getelementptr inbounds %struct.ImRect, ptr %2260, i32 0, i32 0
  %2262 = getelementptr inbounds %struct.ImVec2, ptr %2261, i32 0, i32 1
  %2263 = load float, ptr %2262, align 4, !tbaa !252
  %2264 = fadd float %2263, %2258
  store float %2264, ptr %2262, align 4, !tbaa !252
  br label %2265

2265:                                             ; preds = %2256, %2235
  %2266 = load ptr, ptr %10, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct.ImGuiWindow, ptr %2266, i32 0, i32 71
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2267, ptr noundef nonnull align 4 dereferenceable(16) %82)
  %2268 = load ptr, ptr %10, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.ImGuiWindow, ptr %2268, i32 0, i32 11
  %2270 = getelementptr inbounds %struct.ImVec2, ptr %2269, i32 0, i32 0
  %2271 = load float, ptr %2270, align 8, !tbaa !253
  %2272 = load ptr, ptr %10, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.ImGuiWindow, ptr %2272, i32 0, i32 20
  %2274 = load float, ptr %2273, align 8, !tbaa !221
  %2275 = fadd float %2271, %2274
  %2276 = load ptr, ptr %10, align 8, !tbaa !5
  %2277 = getelementptr inbounds %struct.ImGuiWindow, ptr %2276, i32 0, i32 72
  %2278 = getelementptr inbounds %struct.ImRect, ptr %2277, i32 0, i32 0
  %2279 = getelementptr inbounds %struct.ImVec2, ptr %2278, i32 0, i32 0
  store float %2275, ptr %2279, align 8, !tbaa !254
  %2280 = load ptr, ptr %10, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.ImGuiWindow, ptr %2280, i32 0, i32 11
  %2282 = getelementptr inbounds %struct.ImVec2, ptr %2281, i32 0, i32 1
  %2283 = load float, ptr %2282, align 4, !tbaa !255
  %2284 = load ptr, ptr %10, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.ImGuiWindow, ptr %2284, i32 0, i32 21
  %2286 = load float, ptr %2285, align 4, !tbaa !223
  %2287 = fadd float %2283, %2286
  %2288 = load ptr, ptr %10, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 72
  %2290 = getelementptr inbounds %struct.ImRect, ptr %2289, i32 0, i32 0
  %2291 = getelementptr inbounds %struct.ImVec2, ptr %2290, i32 0, i32 1
  store float %2287, ptr %2291, align 4, !tbaa !256
  %2292 = load ptr, ptr %10, align 8, !tbaa !5
  %2293 = getelementptr inbounds %struct.ImGuiWindow, ptr %2292, i32 0, i32 11
  %2294 = getelementptr inbounds %struct.ImVec2, ptr %2293, i32 0, i32 0
  %2295 = load float, ptr %2294, align 8, !tbaa !253
  %2296 = load ptr, ptr %10, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.ImGuiWindow, ptr %2296, i32 0, i32 12
  %2298 = getelementptr inbounds %struct.ImVec2, ptr %2297, i32 0, i32 0
  %2299 = load float, ptr %2298, align 8, !tbaa !199
  %2300 = fadd float %2295, %2299
  %2301 = load ptr, ptr %10, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.ImGuiWindow, ptr %2301, i32 0, i32 22
  %2303 = load float, ptr %2302, align 8, !tbaa !222
  %2304 = fsub float %2300, %2303
  %2305 = load ptr, ptr %10, align 8, !tbaa !5
  %2306 = getelementptr inbounds %struct.ImGuiWindow, ptr %2305, i32 0, i32 72
  %2307 = getelementptr inbounds %struct.ImRect, ptr %2306, i32 0, i32 1
  %2308 = getelementptr inbounds %struct.ImVec2, ptr %2307, i32 0, i32 0
  store float %2304, ptr %2308, align 8, !tbaa !257
  %2309 = load ptr, ptr %10, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.ImGuiWindow, ptr %2309, i32 0, i32 11
  %2311 = getelementptr inbounds %struct.ImVec2, ptr %2310, i32 0, i32 1
  %2312 = load float, ptr %2311, align 4, !tbaa !255
  %2313 = load ptr, ptr %10, align 8, !tbaa !5
  %2314 = getelementptr inbounds %struct.ImGuiWindow, ptr %2313, i32 0, i32 12
  %2315 = getelementptr inbounds %struct.ImVec2, ptr %2314, i32 0, i32 1
  %2316 = load float, ptr %2315, align 4, !tbaa !200
  %2317 = fadd float %2312, %2316
  %2318 = load ptr, ptr %10, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiWindow, ptr %2318, i32 0, i32 23
  %2320 = load float, ptr %2319, align 4, !tbaa !224
  %2321 = fsub float %2317, %2320
  %2322 = load ptr, ptr %10, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 72
  %2324 = getelementptr inbounds %struct.ImRect, ptr %2323, i32 0, i32 1
  %2325 = getelementptr inbounds %struct.ImVec2, ptr %2324, i32 0, i32 1
  store float %2321, ptr %2325, align 4, !tbaa !258
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #12
  %2326 = load i32, ptr %7, align 4, !tbaa !9
  %2327 = and i32 %2326, 1024
  %2328 = icmp ne i32 %2327, 0
  br i1 %2328, label %2333, label %2329

2329:                                             ; preds = %2265
  %2330 = load i32, ptr %7, align 4, !tbaa !9
  %2331 = and i32 %2330, 1
  %2332 = icmp ne i32 %2331, 0
  br i1 %2332, label %2337, label %2333

2333:                                             ; preds = %2329, %2265
  %2334 = load ptr, ptr %9, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.ImGuiStyle, ptr %2334, i32 0, i32 14
  %2336 = load float, ptr %2335, align 4, !tbaa !259
  br label %2341

2337:                                             ; preds = %2329
  %2338 = load ptr, ptr %10, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.ImGuiWindow, ptr %2338, i32 0, i32 19
  %2340 = load float, ptr %2339, align 4, !tbaa !205
  br label %2341

2341:                                             ; preds = %2337, %2333
  %2342 = phi float [ %2336, %2333 ], [ %2340, %2337 ]
  store float %2342, ptr %85, align 4, !tbaa !151
  %2343 = load ptr, ptr %10, align 8, !tbaa !5
  %2344 = getelementptr inbounds %struct.ImGuiWindow, ptr %2343, i32 0, i32 72
  %2345 = getelementptr inbounds %struct.ImRect, ptr %2344, i32 0, i32 0
  %2346 = getelementptr inbounds %struct.ImVec2, ptr %2345, i32 0, i32 0
  %2347 = load float, ptr %2346, align 8, !tbaa !254
  %2348 = fadd float 5.000000e-01, %2347
  %2349 = load ptr, ptr %10, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiWindow, ptr %2349, i32 0, i32 17
  %2351 = getelementptr inbounds %struct.ImVec2, ptr %2350, i32 0, i32 0
  %2352 = load float, ptr %2351, align 8, !tbaa !209
  %2353 = fmul float %2352, 5.000000e-01
  %2354 = call noundef float @_ZL7ImTruncf(float noundef %2353)
  %2355 = load ptr, ptr %10, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.ImGuiWindow, ptr %2355, i32 0, i32 19
  %2357 = load float, ptr %2356, align 4, !tbaa !205
  %2358 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2354, float noundef %2357)
  %2359 = fadd float %2348, %2358
  %2360 = call noundef float @_ZL7ImFloorf(float noundef %2359)
  %2361 = load ptr, ptr %10, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ImGuiWindow, ptr %2361, i32 0, i32 73
  %2363 = getelementptr inbounds %struct.ImRect, ptr %2362, i32 0, i32 0
  %2364 = getelementptr inbounds %struct.ImVec2, ptr %2363, i32 0, i32 0
  store float %2360, ptr %2364, align 8, !tbaa !260
  %2365 = load ptr, ptr %10, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 72
  %2367 = getelementptr inbounds %struct.ImRect, ptr %2366, i32 0, i32 0
  %2368 = getelementptr inbounds %struct.ImVec2, ptr %2367, i32 0, i32 1
  %2369 = load float, ptr %2368, align 4, !tbaa !256
  %2370 = fadd float 5.000000e-01, %2369
  %2371 = load float, ptr %85, align 4, !tbaa !151
  %2372 = fadd float %2370, %2371
  %2373 = call noundef float @_ZL7ImFloorf(float noundef %2372)
  %2374 = load ptr, ptr %10, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiWindow, ptr %2374, i32 0, i32 73
  %2376 = getelementptr inbounds %struct.ImRect, ptr %2375, i32 0, i32 0
  %2377 = getelementptr inbounds %struct.ImVec2, ptr %2376, i32 0, i32 1
  store float %2373, ptr %2377, align 4, !tbaa !261
  %2378 = load ptr, ptr %10, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiWindow, ptr %2378, i32 0, i32 72
  %2380 = getelementptr inbounds %struct.ImRect, ptr %2379, i32 0, i32 1
  %2381 = getelementptr inbounds %struct.ImVec2, ptr %2380, i32 0, i32 0
  %2382 = load float, ptr %2381, align 8, !tbaa !257
  %2383 = fadd float 5.000000e-01, %2382
  %2384 = load ptr, ptr %10, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.ImGuiWindow, ptr %2384, i32 0, i32 17
  %2386 = getelementptr inbounds %struct.ImVec2, ptr %2385, i32 0, i32 0
  %2387 = load float, ptr %2386, align 8, !tbaa !209
  %2388 = fmul float %2387, 5.000000e-01
  %2389 = call noundef float @_ZL7ImTruncf(float noundef %2388)
  %2390 = load ptr, ptr %10, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiWindow, ptr %2390, i32 0, i32 19
  %2392 = load float, ptr %2391, align 4, !tbaa !205
  %2393 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2389, float noundef %2392)
  %2394 = fsub float %2383, %2393
  %2395 = call noundef float @_ZL7ImFloorf(float noundef %2394)
  %2396 = load ptr, ptr %10, align 8, !tbaa !5
  %2397 = getelementptr inbounds %struct.ImGuiWindow, ptr %2396, i32 0, i32 73
  %2398 = getelementptr inbounds %struct.ImRect, ptr %2397, i32 0, i32 1
  %2399 = getelementptr inbounds %struct.ImVec2, ptr %2398, i32 0, i32 0
  store float %2395, ptr %2399, align 8, !tbaa !262
  %2400 = load ptr, ptr %10, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiWindow, ptr %2400, i32 0, i32 72
  %2402 = getelementptr inbounds %struct.ImRect, ptr %2401, i32 0, i32 1
  %2403 = getelementptr inbounds %struct.ImVec2, ptr %2402, i32 0, i32 1
  %2404 = load float, ptr %2403, align 4, !tbaa !258
  %2405 = fadd float 5.000000e-01, %2404
  %2406 = load ptr, ptr %10, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.ImGuiWindow, ptr %2406, i32 0, i32 19
  %2408 = load float, ptr %2407, align 4, !tbaa !205
  %2409 = fsub float %2405, %2408
  %2410 = call noundef float @_ZL7ImFloorf(float noundef %2409)
  %2411 = load ptr, ptr %10, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.ImGuiWindow, ptr %2411, i32 0, i32 73
  %2413 = getelementptr inbounds %struct.ImRect, ptr %2412, i32 0, i32 1
  %2414 = getelementptr inbounds %struct.ImVec2, ptr %2413, i32 0, i32 1
  store float %2410, ptr %2414, align 4, !tbaa !263
  %2415 = load ptr, ptr %10, align 8, !tbaa !5
  %2416 = getelementptr inbounds %struct.ImGuiWindow, ptr %2415, i32 0, i32 73
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2416, ptr noundef nonnull align 4 dereferenceable(16) %82)
  %2417 = load ptr, ptr %10, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.ImGuiWindow, ptr %2417, i32 0, i32 12
  %2419 = getelementptr inbounds %struct.ImVec2, ptr %2418, i32 0, i32 0
  %2420 = load float, ptr %2419, align 8, !tbaa !199
  %2421 = fcmp ogt float %2420, 0.000000e+00
  br i1 %2421, label %2422, label %2439

2422:                                             ; preds = %2341
  %2423 = load i32, ptr %7, align 4, !tbaa !9
  %2424 = and i32 %2423, 33554432
  %2425 = icmp ne i32 %2424, 0
  br i1 %2425, label %2439, label %2426

2426:                                             ; preds = %2422
  %2427 = load i32, ptr %7, align 4, !tbaa !9
  %2428 = and i32 %2427, 64
  %2429 = icmp ne i32 %2428, 0
  br i1 %2429, label %2439, label %2430

2430:                                             ; preds = %2426
  %2431 = load ptr, ptr %10, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiWindow, ptr %2431, i32 0, i32 12
  %2433 = getelementptr inbounds %struct.ImVec2, ptr %2432, i32 0, i32 0
  %2434 = load float, ptr %2433, align 8, !tbaa !199
  %2435 = fmul float %2434, 0x3FE4CCCCC0000000
  %2436 = call noundef float @_ZL7ImTruncf(float noundef %2435)
  %2437 = load ptr, ptr %10, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiWindow, ptr %2437, i32 0, i32 83
  store float %2436, ptr %2438, align 4, !tbaa !264
  br label %2447

2439:                                             ; preds = %2426, %2422, %2341
  %2440 = load ptr, ptr %8, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.ImGuiContext, ptr %2440, i32 0, i32 8
  %2442 = load float, ptr %2441, align 8, !tbaa !242
  %2443 = fmul float %2442, 1.600000e+01
  %2444 = call noundef float @_ZL7ImTruncf(float noundef %2443)
  %2445 = load ptr, ptr %10, align 8, !tbaa !5
  %2446 = getelementptr inbounds %struct.ImGuiWindow, ptr %2445, i32 0, i32 83
  store float %2444, ptr %2446, align 4, !tbaa !264
  br label %2447

2447:                                             ; preds = %2439, %2430
  %2448 = load ptr, ptr %10, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.ImGuiWindow, ptr %2448, i32 0, i32 14
  %2450 = getelementptr inbounds %struct.ImVec2, ptr %2449, i32 0, i32 0
  %2451 = load float, ptr %2450, align 8, !tbaa !265
  %2452 = load ptr, ptr %10, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiWindow, ptr %2452, i32 0, i32 17
  %2454 = getelementptr inbounds %struct.ImVec2, ptr %2453, i32 0, i32 0
  %2455 = load float, ptr %2454, align 8, !tbaa !209
  %2456 = call float @llvm.fmuladd.f32(float %2455, float 2.000000e+00, float %2451)
  %2457 = load ptr, ptr %10, align 8, !tbaa !5
  %2458 = getelementptr inbounds %struct.ImGuiWindow, ptr %2457, i32 0, i32 72
  %2459 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2458)
  %2460 = fsub float %2456, %2459
  %2461 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2460)
  %2462 = load ptr, ptr %10, align 8, !tbaa !5
  %2463 = getelementptr inbounds %struct.ImGuiWindow, ptr %2462, i32 0, i32 31
  %2464 = getelementptr inbounds %struct.ImVec2, ptr %2463, i32 0, i32 0
  store float %2461, ptr %2464, align 8, !tbaa !266
  %2465 = load ptr, ptr %10, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiWindow, ptr %2465, i32 0, i32 14
  %2467 = getelementptr inbounds %struct.ImVec2, ptr %2466, i32 0, i32 1
  %2468 = load float, ptr %2467, align 4, !tbaa !267
  %2469 = load ptr, ptr %10, align 8, !tbaa !5
  %2470 = getelementptr inbounds %struct.ImGuiWindow, ptr %2469, i32 0, i32 17
  %2471 = getelementptr inbounds %struct.ImVec2, ptr %2470, i32 0, i32 1
  %2472 = load float, ptr %2471, align 4, !tbaa !268
  %2473 = call float @llvm.fmuladd.f32(float %2472, float 2.000000e+00, float %2468)
  %2474 = load ptr, ptr %10, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiWindow, ptr %2474, i32 0, i32 72
  %2476 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2475)
  %2477 = fsub float %2473, %2476
  %2478 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2477)
  %2479 = load ptr, ptr %10, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiWindow, ptr %2479, i32 0, i32 31
  %2481 = getelementptr inbounds %struct.ImVec2, ptr %2480, i32 0, i32 1
  store float %2478, ptr %2481, align 4, !tbaa !269
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #12
  %2482 = load ptr, ptr %10, align 8, !tbaa !5
  %2483 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2482)
  store <2 x float> %2483, ptr %86, align 4
  %2484 = load ptr, ptr %10, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.ImGuiWindow, ptr %2484, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2485, ptr align 4 %86, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2486 = load ptr, ptr %10, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.ImGuiWindow, ptr %2486, i32 0, i32 32
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2487, ptr align 4 %87, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #12
  %2488 = load ptr, ptr %10, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiWindow, ptr %2488, i32 0, i32 25
  store float 0.000000e+00, ptr %2489, align 4, !tbaa !270
  %2490 = load ptr, ptr %10, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.ImGuiWindow, ptr %2490, i32 0, i32 24
  store float 0.000000e+00, ptr %2491, align 8, !tbaa !271
  %2492 = load ptr, ptr %10, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.ImGuiWindow, ptr %2492, i32 0, i32 89
  %2494 = load ptr, ptr %2493, align 8, !tbaa !182
  %2495 = getelementptr inbounds %struct.ImDrawList, ptr %2494, i32 0, i32 0
  %2496 = getelementptr inbounds %struct.ImVector.39, ptr %2495, i32 0, i32 0
  %2497 = load i32, ptr %2496, align 8, !tbaa !272
  %2498 = icmp eq i32 %2497, 1
  br i1 %2498, label %2499, label %2508

2499:                                             ; preds = %2447
  %2500 = load ptr, ptr %10, align 8, !tbaa !5
  %2501 = getelementptr inbounds %struct.ImGuiWindow, ptr %2500, i32 0, i32 89
  %2502 = load ptr, ptr %2501, align 8, !tbaa !182
  %2503 = getelementptr inbounds %struct.ImDrawList, ptr %2502, i32 0, i32 0
  %2504 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2503, i32 noundef 0)
  %2505 = getelementptr inbounds %struct.ImDrawCmd, ptr %2504, i32 0, i32 4
  %2506 = load i32, ptr %2505, align 8, !tbaa !273
  %2507 = icmp eq i32 %2506, 0
  br label %2508

2508:                                             ; preds = %2499, %2447
  %2509 = phi i1 [ false, %2447 ], [ %2507, %2499 ]
  br i1 %2509, label %2510, label %2511

2510:                                             ; preds = %2508
  br label %2513

2511:                                             ; preds = %2508
  call void @__assert_fail(ptr noundef @.str.159, ptr noundef @.str.3, i32 noundef 7339, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2512:                                             ; No predecessors!
  br label %2513

2513:                                             ; preds = %2512, %2510
  %2514 = load ptr, ptr %10, align 8, !tbaa !5
  %2515 = getelementptr inbounds %struct.ImGuiWindow, ptr %2514, i32 0, i32 89
  %2516 = load ptr, ptr %2515, align 8, !tbaa !182
  %2517 = load ptr, ptr %8, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.ImGuiContext, ptr %2517, i32 0, i32 7
  %2519 = load ptr, ptr %2518, align 8, !tbaa !275
  %2520 = getelementptr inbounds %struct.ImFont, ptr %2519, i32 0, i32 6
  %2521 = load ptr, ptr %2520, align 8, !tbaa !276
  %2522 = getelementptr inbounds %struct.ImFontAtlas, ptr %2521, i32 0, i32 2
  %2523 = load ptr, ptr %2522, align 8, !tbaa !277
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %2516, ptr noundef %2523)
  %2524 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 0
  %2525 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2524, ptr noundef nonnull align 4 dereferenceable(8) %2525, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #12
  %2526 = load ptr, ptr %10, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.ImGuiWindow, ptr %2526, i32 0, i32 107
  %2528 = load i8, ptr %2527, align 1
  %2529 = and i8 %2528, 1
  %2530 = trunc i8 %2529 to i1
  br i1 %2530, label %2531, label %2538

2531:                                             ; preds = %2513
  %2532 = load ptr, ptr %10, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.ImGuiWindow, ptr %2532, i32 0, i32 107
  %2534 = load i8, ptr %2533, align 1
  %2535 = lshr i8 %2534, 2
  %2536 = and i8 %2535, 1
  %2537 = trunc i8 %2536 to i1
  br label %2538

2538:                                             ; preds = %2531, %2513
  %2539 = phi i1 [ true, %2513 ], [ %2537, %2531 ]
  %2540 = zext i1 %2539 to i8
  store i8 %2540, ptr %88, align 1, !tbaa !98
  %2541 = load i8, ptr %88, align 1, !tbaa !98, !range !94, !noundef !95
  %2542 = trunc i8 %2541 to i1
  br i1 %2542, label %2543, label %2695

2543:                                             ; preds = %2538
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #12
  store i8 0, ptr %89, align 1, !tbaa !98
  %2544 = load i32, ptr %7, align 4, !tbaa !9
  %2545 = and i32 %2544, 16777216
  %2546 = icmp ne i32 %2545, 0
  br i1 %2546, label %2547, label %2620

2547:                                             ; preds = %2543
  %2548 = load i32, ptr %7, align 4, !tbaa !9
  %2549 = and i32 %2548, 67108864
  %2550 = icmp ne i32 %2549, 0
  br i1 %2550, label %2620, label %2551

2551:                                             ; preds = %2547
  %2552 = load i8, ptr %29, align 1, !tbaa !98, !range !94, !noundef !95
  %2553 = trunc i8 %2552 to i1
  br i1 %2553, label %2620, label %2554

2554:                                             ; preds = %2551
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #12
  %2555 = load ptr, ptr %22, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.ImGuiWindow, ptr %2555, i32 0, i32 70
  %2557 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2556, i32 0, i32 26
  %2558 = getelementptr inbounds %struct.ImVector.4, ptr %2557, i32 0, i32 0
  %2559 = load i32, ptr %2558, align 8, !tbaa !231
  %2560 = icmp sge i32 %2559, 2
  br i1 %2560, label %2561, label %2573

2561:                                             ; preds = %2554
  %2562 = load ptr, ptr %22, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiWindow, ptr %2562, i32 0, i32 70
  %2564 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2563, i32 0, i32 26
  %2565 = load ptr, ptr %22, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.ImGuiWindow, ptr %2565, i32 0, i32 70
  %2567 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2566, i32 0, i32 26
  %2568 = getelementptr inbounds %struct.ImVector.4, ptr %2567, i32 0, i32 0
  %2569 = load i32, ptr %2568, align 8, !tbaa !231
  %2570 = sub nsw i32 %2569, 2
  %2571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2564, i32 noundef %2570)
  %2572 = load ptr, ptr %2571, align 8, !tbaa !5
  br label %2574

2573:                                             ; preds = %2554
  br label %2574

2574:                                             ; preds = %2573, %2561
  %2575 = phi ptr [ %2572, %2561 ], [ null, %2573 ]
  store ptr %2575, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #12
  %2576 = load ptr, ptr %90, align 8, !tbaa !5
  %2577 = icmp ne ptr %2576, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #12
  br i1 %2577, label %2578, label %2592

2578:                                             ; preds = %2574
  %2579 = load ptr, ptr %90, align 8, !tbaa !5
  %2580 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %2579)
  %2581 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %92, i32 0, i32 0
  %2582 = extractvalue { <2 x float>, <2 x float> } %2580, 0
  store <2 x float> %2582, ptr %2581, align 4
  %2583 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %92, i32 0, i32 1
  %2584 = extractvalue { <2 x float>, <2 x float> } %2580, 1
  store <2 x float> %2584, ptr %2583, align 4
  %2585 = load ptr, ptr %10, align 8, !tbaa !5
  %2586 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %2585)
  %2587 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 0
  %2588 = extractvalue { <2 x float>, <2 x float> } %2586, 0
  store <2 x float> %2588, ptr %2587, align 4
  %2589 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 1
  %2590 = extractvalue { <2 x float>, <2 x float> } %2586, 1
  store <2 x float> %2590, ptr %2589, align 4
  %2591 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %92, ptr noundef nonnull align 4 dereferenceable(16) %93)
  br label %2593

2592:                                             ; preds = %2574
  br label %2593

2593:                                             ; preds = %2592, %2578
  %2594 = phi i1 [ %2591, %2578 ], [ false, %2592 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #12
  %2595 = zext i1 %2594 to i8
  store i8 %2595, ptr %91, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #12
  %2596 = load ptr, ptr %22, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.ImGuiWindow, ptr %2596, i32 0, i32 89
  %2598 = load ptr, ptr %2597, align 8, !tbaa !182
  %2599 = getelementptr inbounds %struct.ImDrawList, ptr %2598, i32 0, i32 2
  %2600 = getelementptr inbounds %struct.ImVector.40, ptr %2599, i32 0, i32 0
  %2601 = load i32, ptr %2600, align 8, !tbaa !281
  %2602 = icmp eq i32 %2601, 0
  %2603 = zext i1 %2602 to i8
  store i8 %2603, ptr %94, align 1, !tbaa !98
  %2604 = load ptr, ptr %10, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 89
  %2606 = load ptr, ptr %2605, align 8, !tbaa !182
  %2607 = getelementptr inbounds %struct.ImDrawList, ptr %2606, i32 0, i32 0
  %2608 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2607)
  %2609 = getelementptr inbounds %struct.ImDrawCmd, ptr %2608, i32 0, i32 4
  %2610 = load i32, ptr %2609, align 8, !tbaa !273
  %2611 = icmp eq i32 %2610, 0
  br i1 %2611, label %2612, label %2619

2612:                                             ; preds = %2593
  %2613 = load i8, ptr %94, align 1, !tbaa !98, !range !94, !noundef !95
  %2614 = trunc i8 %2613 to i1
  br i1 %2614, label %2619, label %2615

2615:                                             ; preds = %2612
  %2616 = load i8, ptr %91, align 1, !tbaa !98, !range !94, !noundef !95
  %2617 = trunc i8 %2616 to i1
  br i1 %2617, label %2619, label %2618

2618:                                             ; preds = %2615
  store i8 1, ptr %89, align 1, !tbaa !98
  br label %2619

2619:                                             ; preds = %2618, %2615, %2612, %2593
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #12
  br label %2620

2620:                                             ; preds = %2619, %2551, %2547, %2543
  %2621 = load i8, ptr %89, align 1, !tbaa !98, !range !94, !noundef !95
  %2622 = trunc i8 %2621 to i1
  br i1 %2622, label %2623, label %2629

2623:                                             ; preds = %2620
  %2624 = load ptr, ptr %22, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.ImGuiWindow, ptr %2624, i32 0, i32 89
  %2626 = load ptr, ptr %2625, align 8, !tbaa !182
  %2627 = load ptr, ptr %10, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.ImGuiWindow, ptr %2627, i32 0, i32 89
  store ptr %2626, ptr %2628, align 8, !tbaa !182
  br label %2629

2629:                                             ; preds = %2623, %2620
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #12
  %2630 = load ptr, ptr %8, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.ImGuiContext, ptr %2630, i32 0, i32 159
  %2632 = load ptr, ptr %2631, align 8, !tbaa !282
  %2633 = icmp ne ptr %2632, null
  br i1 %2633, label %2634, label %2638

2634:                                             ; preds = %2629
  %2635 = load ptr, ptr %8, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.ImGuiContext, ptr %2635, i32 0, i32 159
  %2637 = load ptr, ptr %2636, align 8, !tbaa !282
  br label %2642

2638:                                             ; preds = %2629
  %2639 = load ptr, ptr %8, align 8, !tbaa !5
  %2640 = getelementptr inbounds %struct.ImGuiContext, ptr %2639, i32 0, i32 112
  %2641 = load ptr, ptr %2640, align 8, !tbaa !283
  br label %2642

2642:                                             ; preds = %2638, %2634
  %2643 = phi ptr [ %2637, %2634 ], [ %2641, %2638 ]
  store ptr %2643, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #12
  %2644 = load i8, ptr %65, align 1, !tbaa !98, !range !94, !noundef !95
  %2645 = trunc i8 %2644 to i1
  br i1 %2645, label %2676, label %2646

2646:                                             ; preds = %2642
  %2647 = load ptr, ptr %95, align 8, !tbaa !5
  %2648 = icmp ne ptr %2647, null
  br i1 %2648, label %2649, label %2674

2649:                                             ; preds = %2646
  %2650 = load ptr, ptr %10, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.ImGuiWindow, ptr %2650, i32 0, i32 96
  %2652 = load ptr, ptr %2651, align 8, !tbaa !284
  %2653 = load ptr, ptr %95, align 8, !tbaa !5
  %2654 = getelementptr inbounds %struct.ImGuiWindow, ptr %2653, i32 0, i32 96
  %2655 = load ptr, ptr %2654, align 8, !tbaa !284
  %2656 = icmp eq ptr %2652, %2655
  br i1 %2656, label %2672, label %2657

2657:                                             ; preds = %2649
  %2658 = load ptr, ptr %10, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.ImGuiWindow, ptr %2658, i32 0, i32 110
  %2660 = load ptr, ptr %2659, align 8, !tbaa !135
  %2661 = icmp ne ptr %2660, null
  br i1 %2661, label %2662, label %2670

2662:                                             ; preds = %2657
  %2663 = load ptr, ptr %10, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.ImGuiWindow, ptr %2663, i32 0, i32 110
  %2665 = load ptr, ptr %2664, align 8, !tbaa !135
  %2666 = load ptr, ptr %95, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.ImGuiWindow, ptr %2666, i32 0, i32 110
  %2668 = load ptr, ptr %2667, align 8, !tbaa !135
  %2669 = icmp eq ptr %2665, %2668
  br label %2670

2670:                                             ; preds = %2662, %2657
  %2671 = phi i1 [ false, %2657 ], [ %2669, %2662 ]
  br label %2672

2672:                                             ; preds = %2670, %2649
  %2673 = phi i1 [ true, %2649 ], [ %2671, %2670 ]
  br label %2674

2674:                                             ; preds = %2672, %2646
  %2675 = phi i1 [ false, %2646 ], [ %2673, %2672 ]
  br label %2676

2676:                                             ; preds = %2674, %2642
  %2677 = phi i1 [ true, %2642 ], [ %2675, %2674 ]
  %2678 = zext i1 %2677 to i8
  store i8 %2678, ptr %96, align 1, !tbaa !98
  %2679 = load ptr, ptr %10, align 8, !tbaa !5
  %2680 = load i8, ptr %96, align 1, !tbaa !98, !range !94, !noundef !95
  %2681 = trunc i8 %2680 to i1
  %2682 = load i8, ptr %66, align 1, !tbaa !98, !range !94, !noundef !95
  %2683 = trunc i8 %2682 to i1
  %2684 = load i32, ptr %70, align 4, !tbaa !9
  %2685 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %2686 = load float, ptr %71, align 4, !tbaa !151
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2679, ptr noundef nonnull align 4 dereferenceable(16) %84, i1 noundef zeroext %2681, i1 noundef zeroext %2683, i32 noundef %2684, ptr noundef %2685, float noundef %2686)
  %2687 = load i8, ptr %89, align 1, !tbaa !98, !range !94, !noundef !95
  %2688 = trunc i8 %2687 to i1
  br i1 %2688, label %2689, label %2694

2689:                                             ; preds = %2676
  %2690 = load ptr, ptr %10, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.ImGuiWindow, ptr %2690, i32 0, i32 90
  %2692 = load ptr, ptr %10, align 8, !tbaa !5
  %2693 = getelementptr inbounds %struct.ImGuiWindow, ptr %2692, i32 0, i32 89
  store ptr %2691, ptr %2693, align 8, !tbaa !182
  br label %2694

2694:                                             ; preds = %2689, %2676
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #12
  br label %2695

2695:                                             ; preds = %2694, %2538
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #12
  %2696 = load i32, ptr %7, align 4, !tbaa !9
  %2697 = and i32 %2696, 8
  %2698 = icmp ne i32 %2697, 0
  br i1 %2698, label %2703, label %2699

2699:                                             ; preds = %2695
  %2700 = load i32, ptr %7, align 4, !tbaa !9
  %2701 = and i32 %2700, 2048
  %2702 = icmp ne i32 %2701, 0
  br label %2703

2703:                                             ; preds = %2699, %2695
  %2704 = phi i1 [ false, %2695 ], [ %2702, %2699 ]
  %2705 = zext i1 %2704 to i8
  store i8 %2705, ptr %97, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #12
  %2706 = load i32, ptr %7, align 4, !tbaa !9
  %2707 = and i32 %2706, 8
  %2708 = icmp ne i32 %2707, 0
  %2709 = xor i1 %2708, true
  %2710 = zext i1 %2709 to i8
  store i8 %2710, ptr %98, align 1, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #12
  %2711 = load ptr, ptr %10, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.ImGuiWindow, ptr %2711, i32 0, i32 16
  %2713 = getelementptr inbounds %struct.ImVec2, ptr %2712, i32 0, i32 0
  %2714 = load float, ptr %2713, align 8, !tbaa !285
  %2715 = fcmp une float %2714, 0.000000e+00
  br i1 %2715, label %2716, label %2721

2716:                                             ; preds = %2703
  %2717 = load ptr, ptr %10, align 8, !tbaa !5
  %2718 = getelementptr inbounds %struct.ImGuiWindow, ptr %2717, i32 0, i32 16
  %2719 = getelementptr inbounds %struct.ImVec2, ptr %2718, i32 0, i32 0
  %2720 = load float, ptr %2719, align 8, !tbaa !285
  br label %2751

2721:                                             ; preds = %2703
  %2722 = load i8, ptr %97, align 1, !tbaa !98, !range !94, !noundef !95
  %2723 = trunc i8 %2722 to i1
  br i1 %2723, label %2724, label %2729

2724:                                             ; preds = %2721
  %2725 = load ptr, ptr %10, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.ImGuiWindow, ptr %2725, i32 0, i32 14
  %2727 = getelementptr inbounds %struct.ImVec2, ptr %2726, i32 0, i32 0
  %2728 = load float, ptr %2727, align 8, !tbaa !265
  br label %2730

2729:                                             ; preds = %2721
  br label %2730

2730:                                             ; preds = %2729, %2724
  %2731 = phi float [ %2728, %2724 ], [ 0.000000e+00, %2729 ]
  %2732 = load ptr, ptr %10, align 8, !tbaa !5
  %2733 = getelementptr inbounds %struct.ImGuiWindow, ptr %2732, i32 0, i32 12
  %2734 = getelementptr inbounds %struct.ImVec2, ptr %2733, i32 0, i32 0
  %2735 = load float, ptr %2734, align 8, !tbaa !199
  %2736 = load ptr, ptr %10, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.ImGuiWindow, ptr %2736, i32 0, i32 17
  %2738 = getelementptr inbounds %struct.ImVec2, ptr %2737, i32 0, i32 0
  %2739 = load float, ptr %2738, align 8, !tbaa !209
  %2740 = fneg float %2739
  %2741 = call float @llvm.fmuladd.f32(float %2740, float 2.000000e+00, float %2735)
  %2742 = load ptr, ptr %10, align 8, !tbaa !5
  %2743 = getelementptr inbounds %struct.ImGuiWindow, ptr %2742, i32 0, i32 20
  %2744 = load float, ptr %2743, align 8, !tbaa !221
  %2745 = load ptr, ptr %10, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.ImGuiWindow, ptr %2745, i32 0, i32 22
  %2747 = load float, ptr %2746, align 8, !tbaa !222
  %2748 = fadd float %2744, %2747
  %2749 = fsub float %2741, %2748
  %2750 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2731, float noundef %2749)
  br label %2751

2751:                                             ; preds = %2730, %2716
  %2752 = phi float [ %2720, %2716 ], [ %2750, %2730 ]
  store float %2752, ptr %99, align 4, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #12
  %2753 = load ptr, ptr %10, align 8, !tbaa !5
  %2754 = getelementptr inbounds %struct.ImGuiWindow, ptr %2753, i32 0, i32 16
  %2755 = getelementptr inbounds %struct.ImVec2, ptr %2754, i32 0, i32 1
  %2756 = load float, ptr %2755, align 4, !tbaa !286
  %2757 = fcmp une float %2756, 0.000000e+00
  br i1 %2757, label %2758, label %2763

2758:                                             ; preds = %2751
  %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 1
  %2762 = load float, ptr %2761, align 4, !tbaa !286
  br label %2793

2763:                                             ; preds = %2751
  %2764 = load i8, ptr %98, align 1, !tbaa !98, !range !94, !noundef !95
  %2765 = trunc i8 %2764 to i1
  br i1 %2765, label %2766, label %2771

2766:                                             ; preds = %2763
  %2767 = load ptr, ptr %10, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.ImGuiWindow, ptr %2767, i32 0, i32 14
  %2769 = getelementptr inbounds %struct.ImVec2, ptr %2768, i32 0, i32 1
  %2770 = load float, ptr %2769, align 4, !tbaa !267
  br label %2772

2771:                                             ; preds = %2763
  br label %2772

2772:                                             ; preds = %2771, %2766
  %2773 = phi float [ %2770, %2766 ], [ 0.000000e+00, %2771 ]
  %2774 = load ptr, ptr %10, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.ImGuiWindow, ptr %2774, i32 0, i32 12
  %2776 = getelementptr inbounds %struct.ImVec2, ptr %2775, i32 0, i32 1
  %2777 = load float, ptr %2776, align 4, !tbaa !200
  %2778 = load ptr, ptr %10, align 8, !tbaa !5
  %2779 = getelementptr inbounds %struct.ImGuiWindow, ptr %2778, i32 0, i32 17
  %2780 = getelementptr inbounds %struct.ImVec2, ptr %2779, i32 0, i32 1
  %2781 = load float, ptr %2780, align 4, !tbaa !268
  %2782 = fneg float %2781
  %2783 = call float @llvm.fmuladd.f32(float %2782, float 2.000000e+00, float %2777)
  %2784 = load ptr, ptr %10, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.ImGuiWindow, ptr %2784, i32 0, i32 21
  %2786 = load float, ptr %2785, align 4, !tbaa !223
  %2787 = load ptr, ptr %10, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiWindow, ptr %2787, i32 0, i32 23
  %2789 = load float, ptr %2788, align 4, !tbaa !224
  %2790 = fadd float %2786, %2789
  %2791 = fsub float %2783, %2790
  %2792 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2773, float noundef %2791)
  br label %2793

2793:                                             ; preds = %2772, %2758
  %2794 = phi float [ %2762, %2758 ], [ %2792, %2772 ]
  store float %2794, ptr %100, align 4, !tbaa !151
  %2795 = load ptr, ptr %10, align 8, !tbaa !5
  %2796 = getelementptr inbounds %struct.ImGuiWindow, ptr %2795, i32 0, i32 72
  %2797 = getelementptr inbounds %struct.ImRect, ptr %2796, i32 0, i32 0
  %2798 = getelementptr inbounds %struct.ImVec2, ptr %2797, i32 0, i32 0
  %2799 = load float, ptr %2798, align 8, !tbaa !254
  %2800 = load ptr, ptr %10, align 8, !tbaa !5
  %2801 = getelementptr inbounds %struct.ImGuiWindow, ptr %2800, i32 0, i32 30
  %2802 = getelementptr inbounds %struct.ImVec2, ptr %2801, i32 0, i32 0
  %2803 = load float, ptr %2802, align 8, !tbaa !287
  %2804 = fsub float %2799, %2803
  %2805 = load ptr, ptr %10, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiWindow, ptr %2805, i32 0, i32 17
  %2807 = getelementptr inbounds %struct.ImVec2, ptr %2806, i32 0, i32 0
  %2808 = load float, ptr %2807, align 8, !tbaa !209
  %2809 = load ptr, ptr %10, align 8, !tbaa !5
  %2810 = getelementptr inbounds %struct.ImGuiWindow, ptr %2809, i32 0, i32 19
  %2811 = load float, ptr %2810, align 4, !tbaa !205
  %2812 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2808, float noundef %2811)
  %2813 = fadd float %2804, %2812
  %2814 = call noundef float @_ZL7ImTruncf(float noundef %2813)
  %2815 = load ptr, ptr %10, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiWindow, ptr %2815, i32 0, i32 74
  %2817 = getelementptr inbounds %struct.ImRect, ptr %2816, i32 0, i32 0
  %2818 = getelementptr inbounds %struct.ImVec2, ptr %2817, i32 0, i32 0
  store float %2814, ptr %2818, align 8, !tbaa !288
  %2819 = load ptr, ptr %10, align 8, !tbaa !5
  %2820 = getelementptr inbounds %struct.ImGuiWindow, ptr %2819, i32 0, i32 72
  %2821 = getelementptr inbounds %struct.ImRect, ptr %2820, i32 0, i32 0
  %2822 = getelementptr inbounds %struct.ImVec2, ptr %2821, i32 0, i32 1
  %2823 = load float, ptr %2822, align 4, !tbaa !256
  %2824 = load ptr, ptr %10, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiWindow, ptr %2824, i32 0, i32 30
  %2826 = getelementptr inbounds %struct.ImVec2, ptr %2825, i32 0, i32 1
  %2827 = load float, ptr %2826, align 4, !tbaa !289
  %2828 = fsub float %2823, %2827
  %2829 = load ptr, ptr %10, align 8, !tbaa !5
  %2830 = getelementptr inbounds %struct.ImGuiWindow, ptr %2829, i32 0, i32 17
  %2831 = getelementptr inbounds %struct.ImVec2, ptr %2830, i32 0, i32 1
  %2832 = load float, ptr %2831, align 4, !tbaa !268
  %2833 = load ptr, ptr %10, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.ImGuiWindow, ptr %2833, i32 0, i32 19
  %2835 = load float, ptr %2834, align 4, !tbaa !205
  %2836 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2832, float noundef %2835)
  %2837 = fadd float %2828, %2836
  %2838 = call noundef float @_ZL7ImTruncf(float noundef %2837)
  %2839 = load ptr, ptr %10, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.ImGuiWindow, ptr %2839, i32 0, i32 74
  %2841 = getelementptr inbounds %struct.ImRect, ptr %2840, i32 0, i32 0
  %2842 = getelementptr inbounds %struct.ImVec2, ptr %2841, i32 0, i32 1
  store float %2838, ptr %2842, align 4, !tbaa !290
  %2843 = load ptr, ptr %10, align 8, !tbaa !5
  %2844 = getelementptr inbounds %struct.ImGuiWindow, ptr %2843, i32 0, i32 74
  %2845 = getelementptr inbounds %struct.ImRect, ptr %2844, i32 0, i32 0
  %2846 = getelementptr inbounds %struct.ImVec2, ptr %2845, i32 0, i32 0
  %2847 = load float, ptr %2846, align 8, !tbaa !288
  %2848 = load float, ptr %99, align 4, !tbaa !151
  %2849 = fadd float %2847, %2848
  %2850 = load ptr, ptr %10, align 8, !tbaa !5
  %2851 = getelementptr inbounds %struct.ImGuiWindow, ptr %2850, i32 0, i32 74
  %2852 = getelementptr inbounds %struct.ImRect, ptr %2851, i32 0, i32 1
  %2853 = getelementptr inbounds %struct.ImVec2, ptr %2852, i32 0, i32 0
  store float %2849, ptr %2853, align 8, !tbaa !291
  %2854 = load ptr, ptr %10, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.ImGuiWindow, ptr %2854, i32 0, i32 74
  %2856 = getelementptr inbounds %struct.ImRect, ptr %2855, i32 0, i32 0
  %2857 = getelementptr inbounds %struct.ImVec2, ptr %2856, i32 0, i32 1
  %2858 = load float, ptr %2857, align 4, !tbaa !290
  %2859 = load float, ptr %100, align 4, !tbaa !151
  %2860 = fadd float %2858, %2859
  %2861 = load ptr, ptr %10, align 8, !tbaa !5
  %2862 = getelementptr inbounds %struct.ImGuiWindow, ptr %2861, i32 0, i32 74
  %2863 = getelementptr inbounds %struct.ImRect, ptr %2862, i32 0, i32 1
  %2864 = getelementptr inbounds %struct.ImVec2, ptr %2863, i32 0, i32 1
  store float %2860, ptr %2864, align 4, !tbaa !292
  %2865 = load ptr, ptr %10, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiWindow, ptr %2865, i32 0, i32 74
  %2867 = load ptr, ptr %10, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.ImGuiWindow, ptr %2867, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2868, ptr align 8 %2866, i64 16, i1 false), !tbaa.struct !181
  %2869 = load ptr, ptr %10, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.ImGuiWindow, ptr %2869, i32 0, i32 11
  %2871 = getelementptr inbounds %struct.ImVec2, ptr %2870, i32 0, i32 0
  %2872 = load float, ptr %2871, align 8, !tbaa !253
  %2873 = load ptr, ptr %10, align 8, !tbaa !5
  %2874 = getelementptr inbounds %struct.ImGuiWindow, ptr %2873, i32 0, i32 30
  %2875 = getelementptr inbounds %struct.ImVec2, ptr %2874, i32 0, i32 0
  %2876 = load float, ptr %2875, align 8, !tbaa !287
  %2877 = fsub float %2872, %2876
  %2878 = load ptr, ptr %10, align 8, !tbaa !5
  %2879 = getelementptr inbounds %struct.ImGuiWindow, ptr %2878, i32 0, i32 17
  %2880 = getelementptr inbounds %struct.ImVec2, ptr %2879, i32 0, i32 0
  %2881 = load float, ptr %2880, align 8, !tbaa !209
  %2882 = fadd float %2877, %2881
  %2883 = load ptr, ptr %10, align 8, !tbaa !5
  %2884 = getelementptr inbounds %struct.ImGuiWindow, ptr %2883, i32 0, i32 20
  %2885 = load float, ptr %2884, align 8, !tbaa !221
  %2886 = fadd float %2882, %2885
  %2887 = load ptr, ptr %10, align 8, !tbaa !5
  %2888 = getelementptr inbounds %struct.ImGuiWindow, ptr %2887, i32 0, i32 77
  %2889 = getelementptr inbounds %struct.ImRect, ptr %2888, i32 0, i32 0
  %2890 = getelementptr inbounds %struct.ImVec2, ptr %2889, i32 0, i32 0
  store float %2886, ptr %2890, align 8, !tbaa !293
  %2891 = load ptr, ptr %10, align 8, !tbaa !5
  %2892 = getelementptr inbounds %struct.ImGuiWindow, ptr %2891, i32 0, i32 11
  %2893 = getelementptr inbounds %struct.ImVec2, ptr %2892, i32 0, i32 1
  %2894 = load float, ptr %2893, align 4, !tbaa !255
  %2895 = load ptr, ptr %10, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.ImGuiWindow, ptr %2895, i32 0, i32 30
  %2897 = getelementptr inbounds %struct.ImVec2, ptr %2896, i32 0, i32 1
  %2898 = load float, ptr %2897, align 4, !tbaa !289
  %2899 = fsub float %2894, %2898
  %2900 = load ptr, ptr %10, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiWindow, ptr %2900, i32 0, i32 17
  %2902 = getelementptr inbounds %struct.ImVec2, ptr %2901, i32 0, i32 1
  %2903 = load float, ptr %2902, align 4, !tbaa !268
  %2904 = fadd float %2899, %2903
  %2905 = load ptr, ptr %10, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.ImGuiWindow, ptr %2905, i32 0, i32 21
  %2907 = load float, ptr %2906, align 4, !tbaa !223
  %2908 = fadd float %2904, %2907
  %2909 = load ptr, ptr %10, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.ImGuiWindow, ptr %2909, i32 0, i32 77
  %2911 = getelementptr inbounds %struct.ImRect, ptr %2910, i32 0, i32 0
  %2912 = getelementptr inbounds %struct.ImVec2, ptr %2911, i32 0, i32 1
  store float %2908, ptr %2912, align 4, !tbaa !294
  %2913 = load ptr, ptr %10, align 8, !tbaa !5
  %2914 = getelementptr inbounds %struct.ImGuiWindow, ptr %2913, i32 0, i32 77
  %2915 = getelementptr inbounds %struct.ImRect, ptr %2914, i32 0, i32 0
  %2916 = getelementptr inbounds %struct.ImVec2, ptr %2915, i32 0, i32 0
  %2917 = load float, ptr %2916, align 8, !tbaa !293
  %2918 = load ptr, ptr %10, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiWindow, ptr %2918, i32 0, i32 16
  %2920 = getelementptr inbounds %struct.ImVec2, ptr %2919, i32 0, i32 0
  %2921 = load float, ptr %2920, align 8, !tbaa !285
  %2922 = fcmp une float %2921, 0.000000e+00
  br i1 %2922, label %2923, label %2928

2923:                                             ; preds = %2793
  %2924 = load ptr, ptr %10, align 8, !tbaa !5
  %2925 = getelementptr inbounds %struct.ImGuiWindow, ptr %2924, i32 0, i32 16
  %2926 = getelementptr inbounds %struct.ImVec2, ptr %2925, i32 0, i32 0
  %2927 = load float, ptr %2926, align 8, !tbaa !285
  br label %2947

2928:                                             ; preds = %2793
  %2929 = load ptr, ptr %10, align 8, !tbaa !5
  %2930 = getelementptr inbounds %struct.ImGuiWindow, ptr %2929, i32 0, i32 12
  %2931 = getelementptr inbounds %struct.ImVec2, ptr %2930, i32 0, i32 0
  %2932 = load float, ptr %2931, align 8, !tbaa !199
  %2933 = load ptr, ptr %10, align 8, !tbaa !5
  %2934 = getelementptr inbounds %struct.ImGuiWindow, ptr %2933, i32 0, i32 17
  %2935 = getelementptr inbounds %struct.ImVec2, ptr %2934, i32 0, i32 0
  %2936 = load float, ptr %2935, align 8, !tbaa !209
  %2937 = fneg float %2936
  %2938 = call float @llvm.fmuladd.f32(float %2937, float 2.000000e+00, float %2932)
  %2939 = load ptr, ptr %10, align 8, !tbaa !5
  %2940 = getelementptr inbounds %struct.ImGuiWindow, ptr %2939, i32 0, i32 20
  %2941 = load float, ptr %2940, align 8, !tbaa !221
  %2942 = load ptr, ptr %10, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.ImGuiWindow, ptr %2942, i32 0, i32 22
  %2944 = load float, ptr %2943, align 8, !tbaa !222
  %2945 = fadd float %2941, %2944
  %2946 = fsub float %2938, %2945
  br label %2947

2947:                                             ; preds = %2928, %2923
  %2948 = phi float [ %2927, %2923 ], [ %2946, %2928 ]
  %2949 = fadd float %2917, %2948
  %2950 = load ptr, ptr %10, align 8, !tbaa !5
  %2951 = getelementptr inbounds %struct.ImGuiWindow, ptr %2950, i32 0, i32 77
  %2952 = getelementptr inbounds %struct.ImRect, ptr %2951, i32 0, i32 1
  %2953 = getelementptr inbounds %struct.ImVec2, ptr %2952, i32 0, i32 0
  store float %2949, ptr %2953, align 8, !tbaa !295
  %2954 = load ptr, ptr %10, align 8, !tbaa !5
  %2955 = getelementptr inbounds %struct.ImGuiWindow, ptr %2954, i32 0, i32 77
  %2956 = getelementptr inbounds %struct.ImRect, ptr %2955, i32 0, i32 0
  %2957 = getelementptr inbounds %struct.ImVec2, ptr %2956, i32 0, i32 1
  %2958 = load float, ptr %2957, align 4, !tbaa !294
  %2959 = load ptr, ptr %10, align 8, !tbaa !5
  %2960 = getelementptr inbounds %struct.ImGuiWindow, ptr %2959, i32 0, i32 16
  %2961 = getelementptr inbounds %struct.ImVec2, ptr %2960, i32 0, i32 1
  %2962 = load float, ptr %2961, align 4, !tbaa !286
  %2963 = fcmp une float %2962, 0.000000e+00
  br i1 %2963, label %2964, label %2969

2964:                                             ; preds = %2947
  %2965 = load ptr, ptr %10, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.ImGuiWindow, ptr %2965, i32 0, i32 16
  %2967 = getelementptr inbounds %struct.ImVec2, ptr %2966, i32 0, i32 1
  %2968 = load float, ptr %2967, align 4, !tbaa !286
  br label %2988

2969:                                             ; preds = %2947
  %2970 = load ptr, ptr %10, align 8, !tbaa !5
  %2971 = getelementptr inbounds %struct.ImGuiWindow, ptr %2970, i32 0, i32 12
  %2972 = getelementptr inbounds %struct.ImVec2, ptr %2971, i32 0, i32 1
  %2973 = load float, ptr %2972, align 4, !tbaa !200
  %2974 = load ptr, ptr %10, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiWindow, ptr %2974, i32 0, i32 17
  %2976 = getelementptr inbounds %struct.ImVec2, ptr %2975, i32 0, i32 1
  %2977 = load float, ptr %2976, align 4, !tbaa !268
  %2978 = fneg float %2977
  %2979 = call float @llvm.fmuladd.f32(float %2978, float 2.000000e+00, float %2973)
  %2980 = load ptr, ptr %10, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiWindow, ptr %2980, i32 0, i32 21
  %2982 = load float, ptr %2981, align 4, !tbaa !223
  %2983 = load ptr, ptr %10, align 8, !tbaa !5
  %2984 = getelementptr inbounds %struct.ImGuiWindow, ptr %2983, i32 0, i32 23
  %2985 = load float, ptr %2984, align 4, !tbaa !224
  %2986 = fadd float %2982, %2985
  %2987 = fsub float %2979, %2986
  br label %2988

2988:                                             ; preds = %2969, %2964
  %2989 = phi float [ %2968, %2964 ], [ %2987, %2969 ]
  %2990 = fadd float %2958, %2989
  %2991 = load ptr, ptr %10, align 8, !tbaa !5
  %2992 = getelementptr inbounds %struct.ImGuiWindow, ptr %2991, i32 0, i32 77
  %2993 = getelementptr inbounds %struct.ImRect, ptr %2992, i32 0, i32 1
  %2994 = getelementptr inbounds %struct.ImVec2, ptr %2993, i32 0, i32 1
  store float %2990, ptr %2994, align 4, !tbaa !296
  %2995 = load ptr, ptr %10, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiWindow, ptr %2995, i32 0, i32 20
  %2997 = load float, ptr %2996, align 8, !tbaa !221
  %2998 = load ptr, ptr %10, align 8, !tbaa !5
  %2999 = getelementptr inbounds %struct.ImGuiWindow, ptr %2998, i32 0, i32 17
  %3000 = getelementptr inbounds %struct.ImVec2, ptr %2999, i32 0, i32 0
  %3001 = load float, ptr %3000, align 8, !tbaa !209
  %3002 = fadd float %2997, %3001
  %3003 = load ptr, ptr %10, align 8, !tbaa !5
  %3004 = getelementptr inbounds %struct.ImGuiWindow, ptr %3003, i32 0, i32 30
  %3005 = getelementptr inbounds %struct.ImVec2, ptr %3004, i32 0, i32 0
  %3006 = load float, ptr %3005, align 8, !tbaa !287
  %3007 = fsub float %3002, %3006
  %3008 = load ptr, ptr %10, align 8, !tbaa !5
  %3009 = getelementptr inbounds %struct.ImGuiWindow, ptr %3008, i32 0, i32 70
  %3010 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3009, i32 0, i32 11
  %3011 = getelementptr inbounds %struct.ImVec1, ptr %3010, i32 0, i32 0
  store float %3007, ptr %3011, align 4, !tbaa !297
  %3012 = load ptr, ptr %10, align 8, !tbaa !5
  %3013 = getelementptr inbounds %struct.ImGuiWindow, ptr %3012, i32 0, i32 70
  %3014 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3013, i32 0, i32 13
  %3015 = getelementptr inbounds %struct.ImVec1, ptr %3014, i32 0, i32 0
  store float 0.000000e+00, ptr %3015, align 4, !tbaa !298
  %3016 = load ptr, ptr %10, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiWindow, ptr %3016, i32 0, i32 70
  %3018 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3017, i32 0, i32 12
  %3019 = getelementptr inbounds %struct.ImVec1, ptr %3018, i32 0, i32 0
  store float 0.000000e+00, ptr %3019, align 8, !tbaa !299
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #12
  %3020 = load ptr, ptr %10, align 8, !tbaa !5
  %3021 = getelementptr inbounds %struct.ImGuiWindow, ptr %3020, i32 0, i32 11
  %3022 = getelementptr inbounds %struct.ImVec2, ptr %3021, i32 0, i32 0
  %3023 = load float, ptr %3022, align 8, !tbaa !253
  %3024 = fpext float %3023 to double
  %3025 = load ptr, ptr %10, align 8, !tbaa !5
  %3026 = getelementptr inbounds %struct.ImGuiWindow, ptr %3025, i32 0, i32 17
  %3027 = getelementptr inbounds %struct.ImVec2, ptr %3026, i32 0, i32 0
  %3028 = load float, ptr %3027, align 8, !tbaa !209
  %3029 = fpext float %3028 to double
  %3030 = fadd double %3024, %3029
  %3031 = load ptr, ptr %10, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.ImGuiWindow, ptr %3031, i32 0, i32 30
  %3033 = getelementptr inbounds %struct.ImVec2, ptr %3032, i32 0, i32 0
  %3034 = load float, ptr %3033, align 8, !tbaa !287
  %3035 = fpext float %3034 to double
  %3036 = fsub double %3030, %3035
  %3037 = load ptr, ptr %10, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.ImGuiWindow, ptr %3037, i32 0, i32 20
  %3039 = load float, ptr %3038, align 8, !tbaa !221
  %3040 = fpext float %3039 to double
  %3041 = fadd double %3036, %3040
  %3042 = load ptr, ptr %10, align 8, !tbaa !5
  %3043 = getelementptr inbounds %struct.ImGuiWindow, ptr %3042, i32 0, i32 70
  %3044 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3043, i32 0, i32 12
  %3045 = getelementptr inbounds %struct.ImVec1, ptr %3044, i32 0, i32 0
  %3046 = load float, ptr %3045, align 8, !tbaa !299
  %3047 = fpext float %3046 to double
  %3048 = fadd double %3041, %3047
  store double %3048, ptr %101, align 8, !tbaa !300
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #12
  %3049 = load ptr, ptr %10, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiWindow, ptr %3049, i32 0, i32 11
  %3051 = getelementptr inbounds %struct.ImVec2, ptr %3050, i32 0, i32 1
  %3052 = load float, ptr %3051, align 4, !tbaa !255
  %3053 = fpext float %3052 to double
  %3054 = load ptr, ptr %10, align 8, !tbaa !5
  %3055 = getelementptr inbounds %struct.ImGuiWindow, ptr %3054, i32 0, i32 17
  %3056 = getelementptr inbounds %struct.ImVec2, ptr %3055, i32 0, i32 1
  %3057 = load float, ptr %3056, align 4, !tbaa !268
  %3058 = fpext float %3057 to double
  %3059 = fadd double %3053, %3058
  %3060 = load ptr, ptr %10, align 8, !tbaa !5
  %3061 = getelementptr inbounds %struct.ImGuiWindow, ptr %3060, i32 0, i32 30
  %3062 = getelementptr inbounds %struct.ImVec2, ptr %3061, i32 0, i32 1
  %3063 = load float, ptr %3062, align 4, !tbaa !289
  %3064 = fpext float %3063 to double
  %3065 = fsub double %3059, %3064
  %3066 = load ptr, ptr %10, align 8, !tbaa !5
  %3067 = getelementptr inbounds %struct.ImGuiWindow, ptr %3066, i32 0, i32 21
  %3068 = load float, ptr %3067, align 4, !tbaa !223
  %3069 = fpext float %3068 to double
  %3070 = fadd double %3065, %3069
  store double %3070, ptr %102, align 8, !tbaa !300
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #12
  %3071 = load double, ptr %101, align 8, !tbaa !300
  %3072 = fptrunc double %3071 to float
  %3073 = load double, ptr %102, align 8, !tbaa !300
  %3074 = fptrunc double %3073 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef %3072, float noundef %3074)
  %3075 = load ptr, ptr %10, align 8, !tbaa !5
  %3076 = getelementptr inbounds %struct.ImGuiWindow, ptr %3075, i32 0, i32 70
  %3077 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3076, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3077, ptr align 4 %103, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #12
  %3078 = load double, ptr %101, align 8, !tbaa !300
  %3079 = load ptr, ptr %10, align 8, !tbaa !5
  %3080 = getelementptr inbounds %struct.ImGuiWindow, ptr %3079, i32 0, i32 70
  %3081 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3080, i32 0, i32 2
  %3082 = getelementptr inbounds %struct.ImVec2, ptr %3081, i32 0, i32 0
  %3083 = load float, ptr %3082, align 8, !tbaa !301
  %3084 = fpext float %3083 to double
  %3085 = fsub double %3078, %3084
  %3086 = fptrunc double %3085 to float
  %3087 = load double, ptr %102, align 8, !tbaa !300
  %3088 = load ptr, ptr %10, align 8, !tbaa !5
  %3089 = getelementptr inbounds %struct.ImGuiWindow, ptr %3088, i32 0, i32 70
  %3090 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3089, i32 0, i32 2
  %3091 = getelementptr inbounds %struct.ImVec2, ptr %3090, i32 0, i32 1
  %3092 = load float, ptr %3091, align 4, !tbaa !302
  %3093 = fpext float %3092 to double
  %3094 = fsub double %3087, %3093
  %3095 = fptrunc double %3094 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %104, float noundef %3086, float noundef %3095)
  %3096 = load ptr, ptr %10, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.ImGuiWindow, ptr %3096, i32 0, i32 70
  %3098 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3097, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3098, ptr align 4 %104, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #12
  %3099 = load ptr, ptr %10, align 8, !tbaa !5
  %3100 = getelementptr inbounds %struct.ImGuiWindow, ptr %3099, i32 0, i32 70
  %3101 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3100, i32 0, i32 2
  %3102 = load ptr, ptr %10, align 8, !tbaa !5
  %3103 = getelementptr inbounds %struct.ImGuiWindow, ptr %3102, i32 0, i32 70
  %3104 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3103, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3104, ptr align 8 %3101, i64 8, i1 false), !tbaa.struct !163
  %3105 = load ptr, ptr %10, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.ImGuiWindow, ptr %3105, i32 0, i32 70
  %3107 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3106, i32 0, i32 0
  %3108 = load ptr, ptr %10, align 8, !tbaa !5
  %3109 = getelementptr inbounds %struct.ImGuiWindow, ptr %3108, i32 0, i32 70
  %3110 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3109, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3110, ptr align 8 %3107, i64 8, i1 false), !tbaa.struct !163
  %3111 = load ptr, ptr %10, align 8, !tbaa !5
  %3112 = getelementptr inbounds %struct.ImGuiWindow, ptr %3111, i32 0, i32 70
  %3113 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3112, i32 0, i32 2
  %3114 = load ptr, ptr %10, align 8, !tbaa !5
  %3115 = getelementptr inbounds %struct.ImGuiWindow, ptr %3114, i32 0, i32 70
  %3116 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3115, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3116, ptr align 8 %3113, i64 8, i1 false), !tbaa.struct !163
  %3117 = load ptr, ptr %10, align 8, !tbaa !5
  %3118 = getelementptr inbounds %struct.ImGuiWindow, ptr %3117, i32 0, i32 70
  %3119 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3118, i32 0, i32 2
  %3120 = load ptr, ptr %10, align 8, !tbaa !5
  %3121 = getelementptr inbounds %struct.ImGuiWindow, ptr %3120, i32 0, i32 70
  %3122 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3121, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3122, ptr align 8 %3119, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %105, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %3123 = load ptr, ptr %10, align 8, !tbaa !5
  %3124 = getelementptr inbounds %struct.ImGuiWindow, ptr %3123, i32 0, i32 70
  %3125 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3124, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3125, ptr align 4 %105, i64 8, i1 false), !tbaa.struct !163
  %3126 = load ptr, ptr %10, align 8, !tbaa !5
  %3127 = getelementptr inbounds %struct.ImGuiWindow, ptr %3126, i32 0, i32 70
  %3128 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3127, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3128, ptr align 4 %3125, i64 8, i1 false), !tbaa.struct !163
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #12
  %3129 = load ptr, ptr %10, align 8, !tbaa !5
  %3130 = getelementptr inbounds %struct.ImGuiWindow, ptr %3129, i32 0, i32 70
  %3131 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3130, i32 0, i32 8
  store float 0.000000e+00, ptr %3131, align 4, !tbaa !303
  %3132 = load ptr, ptr %10, align 8, !tbaa !5
  %3133 = getelementptr inbounds %struct.ImGuiWindow, ptr %3132, i32 0, i32 70
  %3134 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3133, i32 0, i32 7
  store float 0.000000e+00, ptr %3134, align 8, !tbaa !304
  %3135 = load ptr, ptr %10, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.ImGuiWindow, ptr %3135, i32 0, i32 70
  %3137 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3136, i32 0, i32 10
  store i8 0, ptr %3137, align 1, !tbaa !305
  %3138 = load ptr, ptr %10, align 8, !tbaa !5
  %3139 = getelementptr inbounds %struct.ImGuiWindow, ptr %3138, i32 0, i32 70
  %3140 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3139, i32 0, i32 9
  store i8 0, ptr %3140, align 8, !tbaa !306
  %3141 = load ptr, ptr %10, align 8, !tbaa !5
  %3142 = getelementptr inbounds %struct.ImGuiWindow, ptr %3141, i32 0, i32 70
  %3143 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3142, i32 0, i32 15
  store i32 0, ptr %3143, align 8, !tbaa !160
  %3144 = load ptr, ptr %10, align 8, !tbaa !5
  %3145 = getelementptr inbounds %struct.ImGuiWindow, ptr %3144, i32 0, i32 70
  %3146 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3145, i32 0, i32 17
  %3147 = load i16, ptr %3146, align 2, !tbaa !307
  %3148 = load ptr, ptr %10, align 8, !tbaa !5
  %3149 = getelementptr inbounds %struct.ImGuiWindow, ptr %3148, i32 0, i32 70
  %3150 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3149, i32 0, i32 16
  store i16 %3147, ptr %3150, align 4, !tbaa !308
  %3151 = load ptr, ptr %10, align 8, !tbaa !5
  %3152 = getelementptr inbounds %struct.ImGuiWindow, ptr %3151, i32 0, i32 70
  %3153 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3152, i32 0, i32 17
  store i16 0, ptr %3153, align 2, !tbaa !307
  %3154 = load ptr, ptr %10, align 8, !tbaa !5
  %3155 = getelementptr inbounds %struct.ImGuiWindow, ptr %3154, i32 0, i32 70
  %3156 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3155, i32 0, i32 18
  store i8 1, ptr %3156, align 8, !tbaa !309
  %3157 = load ptr, ptr %10, align 8, !tbaa !5
  %3158 = getelementptr inbounds %struct.ImGuiWindow, ptr %3157, i32 0, i32 70
  %3159 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3158, i32 0, i32 19
  store i8 0, ptr %3159, align 1, !tbaa !310
  %3160 = load ptr, ptr %10, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.ImGuiWindow, ptr %3160, i32 0, i32 31
  %3162 = getelementptr inbounds %struct.ImVec2, ptr %3161, i32 0, i32 1
  %3163 = load float, ptr %3162, align 4, !tbaa !269
  %3164 = fcmp ogt float %3163, 0.000000e+00
  %3165 = load ptr, ptr %10, align 8, !tbaa !5
  %3166 = getelementptr inbounds %struct.ImGuiWindow, ptr %3165, i32 0, i32 70
  %3167 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3166, i32 0, i32 20
  %3168 = zext i1 %3164 to i8
  store i8 %3168, ptr %3167, align 2, !tbaa !311
  %3169 = load ptr, ptr %10, align 8, !tbaa !5
  %3170 = getelementptr inbounds %struct.ImGuiWindow, ptr %3169, i32 0, i32 70
  %3171 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3170, i32 0, i32 21
  store i8 0, ptr %3171, align 1, !tbaa !312
  %3172 = load ptr, ptr %10, align 8, !tbaa !5
  %3173 = getelementptr inbounds %struct.ImGuiWindow, ptr %3172, i32 0, i32 70
  %3174 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3173, i32 0, i32 23
  %3175 = load ptr, ptr %9, align 8, !tbaa !5
  %3176 = getelementptr inbounds %struct.ImGuiStyle, ptr %3175, i32 0, i32 15
  %3177 = getelementptr inbounds %struct.ImVec2, ptr %3176, i32 0, i32 0
  %3178 = load float, ptr %3177, align 4, !tbaa !210
  %3179 = load i8, ptr %14, align 1, !tbaa !98, !range !94, !noundef !95
  %3180 = trunc i8 %3179 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %3174, float noundef %3178, i1 noundef zeroext %3180)
  %3181 = load ptr, ptr %10, align 8, !tbaa !5
  %3182 = getelementptr inbounds %struct.ImGuiWindow, ptr %3181, i32 0, i32 70
  %3183 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3182, i32 0, i32 24
  store i32 0, ptr %3183, align 8, !tbaa !313
  %3184 = load ptr, ptr %10, align 8, !tbaa !5
  %3185 = getelementptr inbounds %struct.ImGuiWindow, ptr %3184, i32 0, i32 70
  %3186 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3185, i32 0, i32 25
  store i32 0, ptr %3186, align 4, !tbaa !314
  %3187 = load ptr, ptr %10, align 8, !tbaa !5
  %3188 = getelementptr inbounds %struct.ImGuiWindow, ptr %3187, i32 0, i32 70
  %3189 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3188, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3189, i32 noundef 0)
  %3190 = load ptr, ptr %10, align 8, !tbaa !5
  %3191 = getelementptr inbounds %struct.ImGuiWindow, ptr %3190, i32 0, i32 84
  %3192 = load ptr, ptr %10, align 8, !tbaa !5
  %3193 = getelementptr inbounds %struct.ImGuiWindow, ptr %3192, i32 0, i32 70
  %3194 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3193, i32 0, i32 27
  store ptr %3191, ptr %3194, align 8, !tbaa !315
  %3195 = load ptr, ptr %10, align 8, !tbaa !5
  %3196 = getelementptr inbounds %struct.ImGuiWindow, ptr %3195, i32 0, i32 70
  %3197 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3196, i32 0, i32 28
  store ptr null, ptr %3197, align 8, !tbaa !316
  %3198 = load ptr, ptr %10, align 8, !tbaa !5
  %3199 = getelementptr inbounds %struct.ImGuiWindow, ptr %3198, i32 0, i32 70
  %3200 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3199, i32 0, i32 30
  store i32 1, ptr %3200, align 4, !tbaa !317
  %3201 = load ptr, ptr %22, align 8, !tbaa !5
  %3202 = icmp ne ptr %3201, null
  br i1 %3202, label %3203, label %3208

3203:                                             ; preds = %2988
  %3204 = load ptr, ptr %22, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.ImGuiWindow, ptr %3204, i32 0, i32 70
  %3206 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3205, i32 0, i32 30
  %3207 = load i32, ptr %3206, align 4, !tbaa !317
  br label %3209

3208:                                             ; preds = %2988
  br label %3209

3209:                                             ; preds = %3208, %3203
  %3210 = phi i32 [ %3207, %3203 ], [ 1, %3208 ]
  %3211 = load ptr, ptr %10, align 8, !tbaa !5
  %3212 = getelementptr inbounds %struct.ImGuiWindow, ptr %3211, i32 0, i32 70
  %3213 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3212, i32 0, i32 31
  store i32 %3210, ptr %3213, align 8, !tbaa !318
  %3214 = load ptr, ptr %10, align 8, !tbaa !5
  %3215 = getelementptr inbounds %struct.ImGuiWindow, ptr %3214, i32 0, i32 83
  %3216 = load float, ptr %3215, align 4, !tbaa !264
  %3217 = load ptr, ptr %10, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiWindow, ptr %3217, i32 0, i32 70
  %3219 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3218, i32 0, i32 32
  store float %3216, ptr %3219, align 4, !tbaa !319
  %3220 = load ptr, ptr %10, align 8, !tbaa !5
  %3221 = getelementptr inbounds %struct.ImGuiWindow, ptr %3220, i32 0, i32 70
  %3222 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3221, i32 0, i32 33
  store float -1.000000e+00, ptr %3222, align 8, !tbaa !320
  %3223 = load ptr, ptr %10, align 8, !tbaa !5
  %3224 = getelementptr inbounds %struct.ImGuiWindow, ptr %3223, i32 0, i32 70
  %3225 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3224, i32 0, i32 34
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3225, i32 noundef 0)
  %3226 = load ptr, ptr %10, align 8, !tbaa !5
  %3227 = getelementptr inbounds %struct.ImGuiWindow, ptr %3226, i32 0, i32 70
  %3228 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3227, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3228, i32 noundef 0)
  %3229 = load ptr, ptr %10, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiWindow, ptr %3229, i32 0, i32 58
  %3231 = load i8, ptr %3230, align 8, !tbaa !227
  %3232 = sext i8 %3231 to i32
  %3233 = icmp sgt i32 %3232, 0
  br i1 %3233, label %3234, label %3239

3234:                                             ; preds = %3209
  %3235 = load ptr, ptr %10, align 8, !tbaa !5
  %3236 = getelementptr inbounds %struct.ImGuiWindow, ptr %3235, i32 0, i32 58
  %3237 = load i8, ptr %3236, align 8, !tbaa !227
  %3238 = add i8 %3237, -1
  store i8 %3238, ptr %3236, align 8, !tbaa !227
  br label %3239

3239:                                             ; preds = %3234, %3209
  %3240 = load ptr, ptr %10, align 8, !tbaa !5
  %3241 = getelementptr inbounds %struct.ImGuiWindow, ptr %3240, i32 0, i32 59
  %3242 = load i8, ptr %3241, align 1, !tbaa !228
  %3243 = sext i8 %3242 to i32
  %3244 = icmp sgt i32 %3243, 0
  br i1 %3244, label %3245, label %3250

3245:                                             ; preds = %3239
  %3246 = load ptr, ptr %10, align 8, !tbaa !5
  %3247 = getelementptr inbounds %struct.ImGuiWindow, ptr %3246, i32 0, i32 59
  %3248 = load i8, ptr %3247, align 1, !tbaa !228
  %3249 = add i8 %3248, -1
  store i8 %3249, ptr %3247, align 1, !tbaa !228
  br label %3250

3250:                                             ; preds = %3245, %3239
  %3251 = load i8, ptr %65, align 1, !tbaa !98, !range !94, !noundef !95
  %3252 = trunc i8 %3251 to i1
  br i1 %3252, label %3253, label %3255

3253:                                             ; preds = %3250
  %3254 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %3254, i32 noundef 2)
  br label %3255

3255:                                             ; preds = %3253, %3250
  %3256 = load i8, ptr %65, align 1, !tbaa !98, !range !94, !noundef !95
  %3257 = trunc i8 %3256 to i1
  br i1 %3257, label %3258, label %3266

3258:                                             ; preds = %3255
  %3259 = load ptr, ptr %10, align 8, !tbaa !5
  %3260 = load ptr, ptr %8, align 8, !tbaa !5
  %3261 = getelementptr inbounds %struct.ImGuiContext, ptr %3260, i32 0, i32 112
  %3262 = load ptr, ptr %3261, align 8, !tbaa !283
  %3263 = icmp eq ptr %3259, %3262
  br i1 %3263, label %3264, label %3266

3264:                                             ; preds = %3258
  %3265 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %3265, i1 noundef zeroext false)
  br label %3266

3266:                                             ; preds = %3264, %3258, %3255
  %3267 = load ptr, ptr %6, align 8, !tbaa !5
  %3268 = icmp ne ptr %3267, null
  br i1 %3268, label %3269, label %3299

3269:                                             ; preds = %3266
  %3270 = load ptr, ptr %10, align 8, !tbaa !5
  %3271 = getelementptr inbounds %struct.ImGuiWindow, ptr %3270, i32 0, i32 7
  %3272 = load ptr, ptr %3271, align 8, !tbaa !185
  %3273 = getelementptr inbounds %struct.ImGuiViewport, ptr %3272, i32 0, i32 16
  %3274 = load i8, ptr %3273, align 1, !tbaa !321, !range !94, !noundef !95
  %3275 = trunc i8 %3274 to i1
  br i1 %3275, label %3276, label %3299

3276:                                             ; preds = %3269
  %3277 = load ptr, ptr %10, align 8, !tbaa !5
  %3278 = getelementptr inbounds %struct.ImGuiWindow, ptr %3277, i32 0, i32 7
  %3279 = load ptr, ptr %3278, align 8, !tbaa !185
  %3280 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %3281 = icmp ne ptr %3279, %3280
  br i1 %3281, label %3282, label %3299

3282:                                             ; preds = %3276
  br label %3283

3283:                                             ; preds = %3282
  %3284 = load ptr, ptr %8, align 8, !tbaa !5
  %3285 = getelementptr inbounds %struct.ImGuiContext, ptr %3284, i32 0, i32 262
  %3286 = load i32, ptr %3285, align 4, !tbaa !322
  %3287 = and i32 %3286, 512
  %3288 = icmp ne i32 %3287, 0
  br i1 %3288, label %3289, label %3293

3289:                                             ; preds = %3283
  %3290 = load ptr, ptr %10, align 8, !tbaa !5
  %3291 = getelementptr inbounds %struct.ImGuiWindow, ptr %3290, i32 0, i32 1
  %3292 = load ptr, ptr %3291, align 8, !tbaa !193
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef @.str.160, ptr noundef %3292)
  br label %3293

3293:                                             ; preds = %3289, %3283
  br label %3294

3294:                                             ; preds = %3293
  br label %3295

3295:                                             ; preds = %3294
  %3296 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 0, ptr %3296, align 1, !tbaa !98
  %3297 = load ptr, ptr %8, align 8, !tbaa !5
  %3298 = getelementptr inbounds %struct.ImGuiContext, ptr %3297, i32 0, i32 164
  store i8 0, ptr %3298, align 8, !tbaa !323
  br label %3299

3299:                                             ; preds = %3295, %3276, %3269, %3266
  %3300 = load i32, ptr %7, align 4, !tbaa !9
  %3301 = and i32 %3300, 1
  %3302 = icmp ne i32 %3301, 0
  br i1 %3302, label %3333, label %3303

3303:                                             ; preds = %3299
  %3304 = load ptr, ptr %10, align 8, !tbaa !5
  %3305 = getelementptr inbounds %struct.ImGuiWindow, ptr %3304, i32 0, i32 107
  %3306 = load i8, ptr %3305, align 1
  %3307 = and i8 %3306, 1
  %3308 = trunc i8 %3307 to i1
  br i1 %3308, label %3333, label %3309

3309:                                             ; preds = %3303
  %3310 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #12
  %3311 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3312 = getelementptr inbounds %struct.ImVec2, ptr %3311, i32 0, i32 0
  %3313 = load float, ptr %3312, align 4, !tbaa !324
  %3314 = load ptr, ptr %10, align 8, !tbaa !5
  %3315 = getelementptr inbounds %struct.ImGuiWindow, ptr %3314, i32 0, i32 19
  %3316 = load float, ptr %3315, align 4, !tbaa !205
  %3317 = fadd float %3313, %3316
  %3318 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3319 = getelementptr inbounds %struct.ImVec2, ptr %3318, i32 0, i32 1
  %3320 = load float, ptr %3319, align 4, !tbaa !325
  %3321 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3322 = getelementptr inbounds %struct.ImVec2, ptr %3321, i32 0, i32 0
  %3323 = load float, ptr %3322, align 4, !tbaa !326
  %3324 = load ptr, ptr %10, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.ImGuiWindow, ptr %3324, i32 0, i32 19
  %3326 = load float, ptr %3325, align 4, !tbaa !205
  %3327 = fsub float %3323, %3326
  %3328 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3329 = getelementptr inbounds %struct.ImVec2, ptr %3328, i32 0, i32 1
  %3330 = load float, ptr %3329, align 4, !tbaa !327
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %106, float noundef %3317, float noundef %3320, float noundef %3327, float noundef %3330)
  %3331 = load ptr, ptr %5, align 8, !tbaa !5
  %3332 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %3310, ptr noundef nonnull align 4 dereferenceable(16) %106, ptr noundef %3331, ptr noundef %3332)
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #12
  br label %3333

3333:                                             ; preds = %3309, %3303, %3299
  %3334 = load ptr, ptr %10, align 8, !tbaa !5
  %3335 = getelementptr inbounds %struct.ImGuiWindow, ptr %3334, i32 0, i32 78
  %3336 = getelementptr inbounds %struct.ImVec2ih, ptr %3335, i32 0, i32 1
  store i16 0, ptr %3336, align 2, !tbaa !328
  %3337 = load ptr, ptr %10, align 8, !tbaa !5
  %3338 = getelementptr inbounds %struct.ImGuiWindow, ptr %3337, i32 0, i32 78
  %3339 = getelementptr inbounds %struct.ImVec2ih, ptr %3338, i32 0, i32 0
  store i16 0, ptr %3339, align 8, !tbaa !329
  %3340 = load ptr, ptr %8, align 8, !tbaa !5
  %3341 = getelementptr inbounds %struct.ImGuiContext, ptr %3340, i32 0, i32 2
  %3342 = getelementptr inbounds %struct.ImGuiIO, ptr %3341, i32 0, i32 0
  %3343 = load i32, ptr %3342, align 8, !tbaa !201
  %3344 = and i32 %3343, 64
  %3345 = icmp ne i32 %3344, 0
  br i1 %3345, label %3346, label %3401

3346:                                             ; preds = %3333
  %3347 = load ptr, ptr %8, align 8, !tbaa !5
  %3348 = getelementptr inbounds %struct.ImGuiContext, ptr %3347, i32 0, i32 37
  %3349 = load ptr, ptr %3348, align 8, !tbaa !330
  %3350 = load ptr, ptr %10, align 8, !tbaa !5
  %3351 = icmp eq ptr %3349, %3350
  br i1 %3351, label %3352, label %3362

3352:                                             ; preds = %3346
  %3353 = load ptr, ptr %10, align 8, !tbaa !5
  %3354 = getelementptr inbounds %struct.ImGuiWindow, ptr %3353, i32 0, i32 95
  %3355 = load ptr, ptr %3354, align 8, !tbaa !331
  %3356 = getelementptr inbounds %struct.ImGuiWindow, ptr %3355, i32 0, i32 3
  %3357 = load i32, ptr %3356, align 4, !tbaa !125
  %3358 = and i32 %3357, 524288
  %3359 = icmp eq i32 %3358, 0
  br i1 %3359, label %3360, label %3362

3360:                                             ; preds = %3352
  %3361 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef %3361)
  br label %3362

3362:                                             ; preds = %3360, %3352, %3346
  %3363 = load ptr, ptr %8, align 8, !tbaa !5
  %3364 = getelementptr inbounds %struct.ImGuiContext, ptr %3363, i32 0, i32 168
  %3365 = load i8, ptr %3364, align 8, !tbaa !332, !range !94, !noundef !95
  %3366 = trunc i8 %3365 to i1
  br i1 %3366, label %3367, label %3400

3367:                                             ; preds = %3362
  %3368 = load i32, ptr %7, align 4, !tbaa !9
  %3369 = and i32 %3368, 524288
  %3370 = icmp ne i32 %3369, 0
  br i1 %3370, label %3400, label %3371

3371:                                             ; preds = %3367
  %3372 = load ptr, ptr %8, align 8, !tbaa !5
  %3373 = getelementptr inbounds %struct.ImGuiContext, ptr %3372, i32 0, i32 37
  %3374 = load ptr, ptr %3373, align 8, !tbaa !330
  %3375 = icmp eq ptr %3374, null
  br i1 %3375, label %3384, label %3376

3376:                                             ; preds = %3371
  %3377 = load ptr, ptr %8, align 8, !tbaa !5
  %3378 = getelementptr inbounds %struct.ImGuiContext, ptr %3377, i32 0, i32 37
  %3379 = load ptr, ptr %3378, align 8, !tbaa !330
  %3380 = getelementptr inbounds %struct.ImGuiWindow, ptr %3379, i32 0, i32 95
  %3381 = load ptr, ptr %3380, align 8, !tbaa !331
  %3382 = load ptr, ptr %10, align 8, !tbaa !5
  %3383 = icmp ne ptr %3381, %3382
  br i1 %3383, label %3384, label %3399

3384:                                             ; preds = %3376, %3371
  %3385 = load ptr, ptr %10, align 8, !tbaa !5
  %3386 = load ptr, ptr %10, align 8, !tbaa !5
  %3387 = getelementptr inbounds %struct.ImGuiWindow, ptr %3386, i32 0, i32 95
  %3388 = load ptr, ptr %3387, align 8, !tbaa !331
  %3389 = icmp eq ptr %3385, %3388
  br i1 %3389, label %3390, label %3398

3390:                                             ; preds = %3384
  %3391 = load ptr, ptr %10, align 8, !tbaa !5
  %3392 = getelementptr inbounds %struct.ImGuiWindow, ptr %3391, i32 0, i32 3
  %3393 = load i32, ptr %3392, align 4, !tbaa !125
  %3394 = and i32 %3393, 536870912
  %3395 = icmp ne i32 %3394, 0
  br i1 %3395, label %3398, label %3396

3396:                                             ; preds = %3390
  %3397 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef %3397)
  br label %3398

3398:                                             ; preds = %3396, %3390, %3384
  br label %3399

3399:                                             ; preds = %3398, %3376
  br label %3400

3400:                                             ; preds = %3399, %3367, %3362
  br label %3401

3401:                                             ; preds = %3400, %3333
  %3402 = load ptr, ptr %10, align 8, !tbaa !5
  %3403 = getelementptr inbounds %struct.ImGuiWindow, ptr %3402, i32 0, i32 107
  %3404 = load i8, ptr %3403, align 1
  %3405 = and i8 %3404, 1
  %3406 = trunc i8 %3405 to i1
  br i1 %3406, label %3407, label %3419

3407:                                             ; preds = %3401
  %3408 = load ptr, ptr %10, align 8, !tbaa !5
  %3409 = getelementptr inbounds %struct.ImGuiWindow, ptr %3408, i32 0, i32 27
  %3410 = load i32, ptr %3409, align 4, !tbaa !333
  %3411 = load ptr, ptr %8, align 8, !tbaa !5
  %3412 = getelementptr inbounds %struct.ImGuiContext, ptr %3411, i32 0, i32 83
  %3413 = load i32, ptr %3412, align 4, !tbaa !334
  %3414 = load ptr, ptr %10, align 8, !tbaa !5
  %3415 = getelementptr inbounds %struct.ImGuiWindow, ptr %3414, i32 0, i32 113
  %3416 = load i32, ptr %3415, align 4, !tbaa !335
  %3417 = load ptr, ptr %10, align 8, !tbaa !5
  %3418 = getelementptr inbounds %struct.ImGuiWindow, ptr %3417, i32 0, i32 114
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3410, i32 noundef %3413, i32 noundef %3416, ptr noundef nonnull align 4 dereferenceable(16) %3418)
  br label %3431

3419:                                             ; preds = %3401
  %3420 = load ptr, ptr %10, align 8, !tbaa !5
  %3421 = getelementptr inbounds %struct.ImGuiWindow, ptr %3420, i32 0, i32 27
  %3422 = load i32, ptr %3421, align 4, !tbaa !333
  %3423 = load ptr, ptr %8, align 8, !tbaa !5
  %3424 = getelementptr inbounds %struct.ImGuiContext, ptr %3423, i32 0, i32 83
  %3425 = load i32, ptr %3424, align 4, !tbaa !334
  %3426 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3427 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3428 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3426, ptr noundef nonnull align 4 dereferenceable(8) %3427, i1 noundef zeroext false)
  %3429 = zext i1 %3428 to i64
  %3430 = select i1 %3428, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3422, i32 noundef %3425, i32 noundef %3430, ptr noundef nonnull align 4 dereferenceable(16) %84)
  br label %3431

3431:                                             ; preds = %3419, %3407
  %3432 = load ptr, ptr %8, align 8, !tbaa !5
  %3433 = getelementptr inbounds %struct.ImGuiContext, ptr %3432, i32 0, i32 84
  %3434 = load i32, ptr %3433, align 8, !tbaa !336
  %3435 = icmp ne i32 %3434, 0
  br i1 %3435, label %3436, label %3453

3436:                                             ; preds = %3431
  %3437 = load ptr, ptr %10, align 8, !tbaa !5
  %3438 = getelementptr inbounds %struct.ImGuiWindow, ptr %3437, i32 0, i32 2
  %3439 = load i32, ptr %3438, align 8, !tbaa !100
  %3440 = load ptr, ptr %8, align 8, !tbaa !5
  %3441 = getelementptr inbounds %struct.ImGuiContext, ptr %3440, i32 0, i32 84
  %3442 = load i32, ptr %3441, align 8, !tbaa !336
  %3443 = icmp eq i32 %3439, %3442
  br i1 %3443, label %3452, label %3444

3444:                                             ; preds = %3436
  %3445 = load ptr, ptr %10, align 8, !tbaa !5
  %3446 = getelementptr inbounds %struct.ImGuiWindow, ptr %3445, i32 0, i32 27
  %3447 = load i32, ptr %3446, align 4, !tbaa !333
  %3448 = load ptr, ptr %8, align 8, !tbaa !5
  %3449 = getelementptr inbounds %struct.ImGuiContext, ptr %3448, i32 0, i32 84
  %3450 = load i32, ptr %3449, align 8, !tbaa !336
  %3451 = icmp eq i32 %3447, %3450
  br i1 %3451, label %3452, label %3453

3452:                                             ; preds = %3444, %3436
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %3453

3453:                                             ; preds = %3452, %3444, %3431
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  br label %3460

3454:                                             ; preds = %960
  %3455 = load ptr, ptr %10, align 8, !tbaa !5
  %3456 = load ptr, ptr %10, align 8, !tbaa !5
  %3457 = getelementptr inbounds %struct.ImGuiWindow, ptr %3456, i32 0, i32 7
  %3458 = load ptr, ptr %3457, align 8, !tbaa !185
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %3455, ptr noundef %3458)
  %3459 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %3459)
  br label %3460

3460:                                             ; preds = %3454, %3453
  %3461 = load i32, ptr %7, align 4, !tbaa !9
  %3462 = and i32 %3461, 536870912
  %3463 = icmp ne i32 %3462, 0
  br i1 %3463, label %3471, label %3464

3464:                                             ; preds = %3460
  %3465 = load ptr, ptr %10, align 8, !tbaa !5
  %3466 = getelementptr inbounds %struct.ImGuiWindow, ptr %3465, i32 0, i32 73
  %3467 = getelementptr inbounds %struct.ImRect, ptr %3466, i32 0, i32 0
  %3468 = load ptr, ptr %10, align 8, !tbaa !5
  %3469 = getelementptr inbounds %struct.ImGuiWindow, ptr %3468, i32 0, i32 73
  %3470 = getelementptr inbounds %struct.ImRect, ptr %3469, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3467, ptr noundef nonnull align 4 dereferenceable(8) %3470, i1 noundef zeroext true)
  br label %3471

3471:                                             ; preds = %3464, %3460
  %3472 = load ptr, ptr %10, align 8, !tbaa !5
  %3473 = getelementptr inbounds %struct.ImGuiWindow, ptr %3472, i32 0, i32 41
  store i8 0, ptr %3473, align 1, !tbaa !337
  %3474 = load ptr, ptr %10, align 8, !tbaa !5
  %3475 = getelementptr inbounds %struct.ImGuiWindow, ptr %3474, i32 0, i32 52
  %3476 = load i16, ptr %3475, align 8, !tbaa !338
  %3477 = add i16 %3476, 1
  store i16 %3477, ptr %3475, align 8, !tbaa !338
  %3478 = load ptr, ptr %8, align 8, !tbaa !5
  %3479 = getelementptr inbounds %struct.ImGuiContext, ptr %3478, i32 0, i32 89
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(156) %3479)
  %3480 = load i8, ptr %13, align 1, !tbaa !98, !range !94, !noundef !95
  %3481 = trunc i8 %3480 to i1
  br i1 %3481, label %3482, label %3771

3482:                                             ; preds = %3471
  %3483 = load ptr, ptr %10, align 8, !tbaa !5
  %3484 = getelementptr inbounds %struct.ImGuiWindow, ptr %3483, i32 0, i32 107
  %3485 = load i8, ptr %3484, align 1
  %3486 = and i8 %3485, 1
  %3487 = trunc i8 %3486 to i1
  br i1 %3487, label %3488, label %3510

3488:                                             ; preds = %3482
  %3489 = load ptr, ptr %10, align 8, !tbaa !5
  %3490 = getelementptr inbounds %struct.ImGuiWindow, ptr %3489, i32 0, i32 107
  %3491 = load i8, ptr %3490, align 1
  %3492 = lshr i8 %3491, 2
  %3493 = and i8 %3492, 1
  %3494 = trunc i8 %3493 to i1
  br i1 %3494, label %3510, label %3495

3495:                                             ; preds = %3488
  %3496 = load ptr, ptr %10, align 8, !tbaa !5
  %3497 = getelementptr inbounds %struct.ImGuiWindow, ptr %3496, i32 0, i32 81
  %3498 = load i32, ptr %3497, align 4, !tbaa !339
  %3499 = load ptr, ptr %8, align 8, !tbaa !5
  %3500 = getelementptr inbounds %struct.ImGuiContext, ptr %3499, i32 0, i32 12
  %3501 = load i32, ptr %3500, align 8, !tbaa !97
  %3502 = icmp eq i32 %3498, %3501
  br i1 %3502, label %3503, label %3506

3503:                                             ; preds = %3495
  %3504 = load ptr, ptr %10, align 8, !tbaa !5
  %3505 = getelementptr inbounds %struct.ImGuiWindow, ptr %3504, i32 0, i32 63
  store i8 1, ptr %3505, align 1, !tbaa !178
  br label %3509

3506:                                             ; preds = %3495
  %3507 = load ptr, ptr %10, align 8, !tbaa !5
  %3508 = getelementptr inbounds %struct.ImGuiWindow, ptr %3507, i32 0, i32 62
  store i8 1, ptr %3508, align 8, !tbaa !197
  br label %3509

3509:                                             ; preds = %3506, %3503
  br label %3510

3510:                                             ; preds = %3509, %3488, %3482
  %3511 = load i32, ptr %7, align 4, !tbaa !9
  %3512 = and i32 %3511, 16777216
  %3513 = icmp ne i32 %3512, 0
  br i1 %3513, label %3514, label %3648

3514:                                             ; preds = %3510
  %3515 = load i32, ptr %7, align 4, !tbaa !9
  %3516 = and i32 %3515, 268435456
  %3517 = icmp ne i32 %3516, 0
  br i1 %3517, label %3648, label %3518

3518:                                             ; preds = %3514
  %3519 = load i32, ptr %7, align 4, !tbaa !9
  %3520 = and i32 %3519, 1
  %3521 = icmp ne i32 %3520, 0
  br i1 %3521, label %3528, label %3522

3522:                                             ; preds = %3518
  %3523 = load ptr, ptr %10, align 8, !tbaa !5
  %3524 = getelementptr inbounds %struct.ImGuiWindow, ptr %3523, i32 0, i32 107
  %3525 = load i8, ptr %3524, align 1
  %3526 = and i8 %3525, 1
  %3527 = trunc i8 %3526 to i1
  br label %3528

3528:                                             ; preds = %3522, %3518
  %3529 = phi i1 [ true, %3518 ], [ %3527, %3522 ]
  br i1 %3529, label %3530, label %3531

3530:                                             ; preds = %3528
  br label %3533

3531:                                             ; preds = %3528
  call void @__assert_fail(ptr noundef @.str.161, ptr noundef @.str.3, i32 noundef 7547, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3532:                                             ; No predecessors!
  br label %3533

3533:                                             ; preds = %3532, %3530
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #12
  %3534 = load i32, ptr %7, align 4, !tbaa !9
  %3535 = and i32 %3534, 8388608
  %3536 = icmp ne i32 %3535, 0
  br i1 %3536, label %3537, label %3559

3537:                                             ; preds = %3533
  %3538 = load ptr, ptr %8, align 8, !tbaa !5
  %3539 = getelementptr inbounds %struct.ImGuiContext, ptr %3538, i32 0, i32 134
  %3540 = load i8, ptr %3539, align 4, !tbaa !340, !range !94, !noundef !95
  %3541 = trunc i8 %3540 to i1
  br i1 %3541, label %3542, label %3557

3542:                                             ; preds = %3537
  %3543 = load ptr, ptr %8, align 8, !tbaa !5
  %3544 = getelementptr inbounds %struct.ImGuiContext, ptr %3543, i32 0, i32 112
  %3545 = load ptr, ptr %3544, align 8, !tbaa !283
  %3546 = icmp ne ptr %3545, null
  br i1 %3546, label %3547, label %3557

3547:                                             ; preds = %3542
  %3548 = load ptr, ptr %8, align 8, !tbaa !5
  %3549 = getelementptr inbounds %struct.ImGuiContext, ptr %3548, i32 0, i32 112
  %3550 = load ptr, ptr %3549, align 8, !tbaa !283
  %3551 = getelementptr inbounds %struct.ImGuiWindow, ptr %3550, i32 0, i32 97
  %3552 = load ptr, ptr %3551, align 8, !tbaa !341
  %3553 = load ptr, ptr %10, align 8, !tbaa !5
  %3554 = getelementptr inbounds %struct.ImGuiWindow, ptr %3553, i32 0, i32 97
  %3555 = load ptr, ptr %3554, align 8, !tbaa !341
  %3556 = icmp eq ptr %3552, %3555
  br label %3557

3557:                                             ; preds = %3547, %3542, %3537
  %3558 = phi i1 [ false, %3542 ], [ false, %3537 ], [ %3556, %3547 ]
  br label %3559

3559:                                             ; preds = %3557, %3533
  %3560 = phi i1 [ false, %3533 ], [ %3558, %3557 ]
  %3561 = zext i1 %3560 to i8
  store i8 %3561, ptr %107, align 1, !tbaa !98
  %3562 = load ptr, ptr %8, align 8, !tbaa !5
  %3563 = getelementptr inbounds %struct.ImGuiContext, ptr %3562, i32 0, i32 251
  %3564 = load i8, ptr %3563, align 8, !tbaa !342, !range !94, !noundef !95
  %3565 = trunc i8 %3564 to i1
  br i1 %3565, label %3613, label %3566

3566:                                             ; preds = %3559
  %3567 = load i8, ptr %107, align 1, !tbaa !98, !range !94, !noundef !95
  %3568 = trunc i8 %3567 to i1
  br i1 %3568, label %3613, label %3569

3569:                                             ; preds = %3566
  %3570 = load ptr, ptr %10, align 8, !tbaa !5
  %3571 = getelementptr inbounds %struct.ImGuiWindow, ptr %3570, i32 0, i32 71
  %3572 = getelementptr inbounds %struct.ImRect, ptr %3571, i32 0, i32 0
  %3573 = getelementptr inbounds %struct.ImVec2, ptr %3572, i32 0, i32 0
  %3574 = load float, ptr %3573, align 8, !tbaa !343
  %3575 = load ptr, ptr %10, align 8, !tbaa !5
  %3576 = getelementptr inbounds %struct.ImGuiWindow, ptr %3575, i32 0, i32 71
  %3577 = getelementptr inbounds %struct.ImRect, ptr %3576, i32 0, i32 1
  %3578 = getelementptr inbounds %struct.ImVec2, ptr %3577, i32 0, i32 0
  %3579 = load float, ptr %3578, align 8, !tbaa !344
  %3580 = fcmp oge float %3574, %3579
  br i1 %3580, label %3593, label %3581

3581:                                             ; preds = %3569
  %3582 = load ptr, ptr %10, align 8, !tbaa !5
  %3583 = getelementptr inbounds %struct.ImGuiWindow, ptr %3582, i32 0, i32 71
  %3584 = getelementptr inbounds %struct.ImRect, ptr %3583, i32 0, i32 0
  %3585 = getelementptr inbounds %struct.ImVec2, ptr %3584, i32 0, i32 1
  %3586 = load float, ptr %3585, align 4, !tbaa !252
  %3587 = load ptr, ptr %10, align 8, !tbaa !5
  %3588 = getelementptr inbounds %struct.ImGuiWindow, ptr %3587, i32 0, i32 71
  %3589 = getelementptr inbounds %struct.ImRect, ptr %3588, i32 0, i32 1
  %3590 = getelementptr inbounds %struct.ImVec2, ptr %3589, i32 0, i32 1
  %3591 = load float, ptr %3590, align 4, !tbaa !345
  %3592 = fcmp oge float %3586, %3591
  br i1 %3592, label %3593, label %3612

3593:                                             ; preds = %3581, %3569
  %3594 = load ptr, ptr %10, align 8, !tbaa !5
  %3595 = getelementptr inbounds %struct.ImGuiWindow, ptr %3594, i32 0, i32 58
  %3596 = load i8, ptr %3595, align 8, !tbaa !227
  %3597 = sext i8 %3596 to i32
  %3598 = icmp sgt i32 %3597, 0
  br i1 %3598, label %3605, label %3599

3599:                                             ; preds = %3593
  %3600 = load ptr, ptr %10, align 8, !tbaa !5
  %3601 = getelementptr inbounds %struct.ImGuiWindow, ptr %3600, i32 0, i32 59
  %3602 = load i8, ptr %3601, align 1, !tbaa !228
  %3603 = sext i8 %3602 to i32
  %3604 = icmp sgt i32 %3603, 0
  br i1 %3604, label %3605, label %3608

3605:                                             ; preds = %3599, %3593
  %3606 = load ptr, ptr %10, align 8, !tbaa !5
  %3607 = getelementptr inbounds %struct.ImGuiWindow, ptr %3606, i32 0, i32 63
  store i8 1, ptr %3607, align 1, !tbaa !178
  br label %3611

3608:                                             ; preds = %3599
  %3609 = load ptr, ptr %10, align 8, !tbaa !5
  %3610 = getelementptr inbounds %struct.ImGuiWindow, ptr %3609, i32 0, i32 62
  store i8 1, ptr %3610, align 8, !tbaa !197
  br label %3611

3611:                                             ; preds = %3608, %3605
  br label %3612

3612:                                             ; preds = %3611, %3581
  br label %3613

3613:                                             ; preds = %3612, %3566, %3559
  %3614 = load ptr, ptr %22, align 8, !tbaa !5
  %3615 = icmp ne ptr %3614, null
  br i1 %3615, label %3616, label %3630

3616:                                             ; preds = %3613
  %3617 = load ptr, ptr %22, align 8, !tbaa !5
  %3618 = getelementptr inbounds %struct.ImGuiWindow, ptr %3617, i32 0, i32 42
  %3619 = load i8, ptr %3618, align 2, !tbaa !220, !range !94, !noundef !95
  %3620 = trunc i8 %3619 to i1
  br i1 %3620, label %3627, label %3621

3621:                                             ; preds = %3616
  %3622 = load ptr, ptr %22, align 8, !tbaa !5
  %3623 = getelementptr inbounds %struct.ImGuiWindow, ptr %3622, i32 0, i32 62
  %3624 = load i8, ptr %3623, align 8, !tbaa !197
  %3625 = sext i8 %3624 to i32
  %3626 = icmp sgt i32 %3625, 0
  br i1 %3626, label %3627, label %3630

3627:                                             ; preds = %3621, %3616
  %3628 = load ptr, ptr %10, align 8, !tbaa !5
  %3629 = getelementptr inbounds %struct.ImGuiWindow, ptr %3628, i32 0, i32 62
  store i8 1, ptr %3629, align 8, !tbaa !197
  br label %3630

3630:                                             ; preds = %3627, %3621, %3613
  %3631 = load ptr, ptr %22, align 8, !tbaa !5
  %3632 = icmp ne ptr %3631, null
  br i1 %3632, label %3633, label %3647

3633:                                             ; preds = %3630
  %3634 = load ptr, ptr %22, align 8, !tbaa !5
  %3635 = getelementptr inbounds %struct.ImGuiWindow, ptr %3634, i32 0, i32 42
  %3636 = load i8, ptr %3635, align 2, !tbaa !220, !range !94, !noundef !95
  %3637 = trunc i8 %3636 to i1
  br i1 %3637, label %3644, label %3638

3638:                                             ; preds = %3633
  %3639 = load ptr, ptr %22, align 8, !tbaa !5
  %3640 = getelementptr inbounds %struct.ImGuiWindow, ptr %3639, i32 0, i32 63
  %3641 = load i8, ptr %3640, align 1, !tbaa !178
  %3642 = sext i8 %3641 to i32
  %3643 = icmp sgt i32 %3642, 0
  br i1 %3643, label %3644, label %3647

3644:                                             ; preds = %3638, %3633
  %3645 = load ptr, ptr %10, align 8, !tbaa !5
  %3646 = getelementptr inbounds %struct.ImGuiWindow, ptr %3645, i32 0, i32 63
  store i8 1, ptr %3646, align 1, !tbaa !178
  br label %3647

3647:                                             ; preds = %3644, %3638, %3630
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #12
  br label %3648

3648:                                             ; preds = %3647, %3514, %3510
  %3649 = load ptr, ptr %9, align 8, !tbaa !5
  %3650 = getelementptr inbounds %struct.ImGuiStyle, ptr %3649, i32 0, i32 0
  %3651 = load float, ptr %3650, align 4, !tbaa !346
  %3652 = fcmp ole float %3651, 0.000000e+00
  br i1 %3652, label %3653, label %3656

3653:                                             ; preds = %3648
  %3654 = load ptr, ptr %10, align 8, !tbaa !5
  %3655 = getelementptr inbounds %struct.ImGuiWindow, ptr %3654, i32 0, i32 62
  store i8 1, ptr %3655, align 8, !tbaa !197
  br label %3656

3656:                                             ; preds = %3653, %3648
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #12
  %3657 = load ptr, ptr %10, align 8, !tbaa !5
  %3658 = getelementptr inbounds %struct.ImGuiWindow, ptr %3657, i32 0, i32 62
  %3659 = load i8, ptr %3658, align 8, !tbaa !197
  %3660 = sext i8 %3659 to i32
  %3661 = icmp sgt i32 %3660, 0
  br i1 %3661, label %3668, label %3662

3662:                                             ; preds = %3656
  %3663 = load ptr, ptr %10, align 8, !tbaa !5
  %3664 = getelementptr inbounds %struct.ImGuiWindow, ptr %3663, i32 0, i32 63
  %3665 = load i8, ptr %3664, align 1, !tbaa !178
  %3666 = sext i8 %3665 to i32
  %3667 = icmp sgt i32 %3666, 0
  br label %3668

3668:                                             ; preds = %3662, %3656
  %3669 = phi i1 [ true, %3656 ], [ %3667, %3662 ]
  %3670 = zext i1 %3669 to i8
  store i8 %3670, ptr %108, align 1, !tbaa !98
  %3671 = load i8, ptr %108, align 1, !tbaa !98, !range !94, !noundef !95
  %3672 = trunc i8 %3671 to i1
  br i1 %3672, label %3679, label %3673

3673:                                             ; preds = %3668
  %3674 = load ptr, ptr %10, align 8, !tbaa !5
  %3675 = getelementptr inbounds %struct.ImGuiWindow, ptr %3674, i32 0, i32 64
  %3676 = load i8, ptr %3675, align 2, !tbaa !198
  %3677 = sext i8 %3676 to i32
  %3678 = icmp sgt i32 %3677, 0
  br label %3679

3679:                                             ; preds = %3673, %3668
  %3680 = phi i1 [ true, %3668 ], [ %3678, %3673 ]
  %3681 = load ptr, ptr %10, align 8, !tbaa !5
  %3682 = getelementptr inbounds %struct.ImGuiWindow, ptr %3681, i32 0, i32 46
  %3683 = zext i1 %3680 to i8
  store i8 %3683, ptr %3682, align 2, !tbaa !347
  %3684 = load ptr, ptr %10, align 8, !tbaa !5
  %3685 = getelementptr inbounds %struct.ImGuiWindow, ptr %3684, i32 0, i32 65
  %3686 = load i8, ptr %3685, align 1, !tbaa !348
  %3687 = sext i8 %3686 to i32
  %3688 = icmp sgt i32 %3687, 0
  br i1 %3688, label %3689, label %3698

3689:                                             ; preds = %3679
  %3690 = load ptr, ptr %10, align 8, !tbaa !5
  %3691 = getelementptr inbounds %struct.ImGuiWindow, ptr %3690, i32 0, i32 65
  %3692 = load i8, ptr %3691, align 1, !tbaa !348
  %3693 = add i8 %3692, -1
  store i8 %3693, ptr %3691, align 1, !tbaa !348
  %3694 = load ptr, ptr %10, align 8, !tbaa !5
  %3695 = getelementptr inbounds %struct.ImGuiWindow, ptr %3694, i32 0, i32 3
  %3696 = load i32, ptr %3695, align 4, !tbaa !125
  %3697 = or i32 %3696, 197120
  store i32 %3697, ptr %3695, align 4, !tbaa !125
  br label %3698

3698:                                             ; preds = %3689, %3679
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #12
  store i8 0, ptr %109, align 1, !tbaa !98
  %3699 = load ptr, ptr %10, align 8, !tbaa !5
  %3700 = getelementptr inbounds %struct.ImGuiWindow, ptr %3699, i32 0, i32 42
  %3701 = load i8, ptr %3700, align 2, !tbaa !220, !range !94, !noundef !95
  %3702 = trunc i8 %3701 to i1
  br i1 %3702, label %3711, label %3703

3703:                                             ; preds = %3698
  %3704 = load ptr, ptr %10, align 8, !tbaa !5
  %3705 = getelementptr inbounds %struct.ImGuiWindow, ptr %3704, i32 0, i32 39
  %3706 = load i8, ptr %3705, align 1, !tbaa !179, !range !94, !noundef !95
  %3707 = trunc i8 %3706 to i1
  br i1 %3707, label %3708, label %3711

3708:                                             ; preds = %3703
  %3709 = load i8, ptr %108, align 1, !tbaa !98, !range !94, !noundef !95
  %3710 = trunc i8 %3709 to i1
  br i1 %3710, label %3711, label %3731

3711:                                             ; preds = %3708, %3703, %3698
  %3712 = load ptr, ptr %10, align 8, !tbaa !5
  %3713 = getelementptr inbounds %struct.ImGuiWindow, ptr %3712, i32 0, i32 58
  %3714 = load i8, ptr %3713, align 8, !tbaa !227
  %3715 = sext i8 %3714 to i32
  %3716 = icmp sle i32 %3715, 0
  br i1 %3716, label %3717, label %3730

3717:                                             ; preds = %3711
  %3718 = load ptr, ptr %10, align 8, !tbaa !5
  %3719 = getelementptr inbounds %struct.ImGuiWindow, ptr %3718, i32 0, i32 59
  %3720 = load i8, ptr %3719, align 1, !tbaa !228
  %3721 = sext i8 %3720 to i32
  %3722 = icmp sle i32 %3721, 0
  br i1 %3722, label %3723, label %3730

3723:                                             ; preds = %3717
  %3724 = load ptr, ptr %10, align 8, !tbaa !5
  %3725 = getelementptr inbounds %struct.ImGuiWindow, ptr %3724, i32 0, i32 63
  %3726 = load i8, ptr %3725, align 1, !tbaa !178
  %3727 = sext i8 %3726 to i32
  %3728 = icmp sle i32 %3727, 0
  br i1 %3728, label %3729, label %3730

3729:                                             ; preds = %3723
  store i8 1, ptr %109, align 1, !tbaa !98
  br label %3730

3730:                                             ; preds = %3729, %3723, %3717, %3711
  br label %3731

3731:                                             ; preds = %3730, %3708
  %3732 = load i8, ptr %109, align 1, !tbaa !98, !range !94, !noundef !95
  %3733 = trunc i8 %3732 to i1
  %3734 = load ptr, ptr %10, align 8, !tbaa !5
  %3735 = getelementptr inbounds %struct.ImGuiWindow, ptr %3734, i32 0, i32 44
  %3736 = zext i1 %3733 to i8
  store i8 %3736, ptr %3735, align 8, !tbaa !349
  %3737 = load ptr, ptr %10, align 8, !tbaa !5
  %3738 = getelementptr inbounds %struct.ImGuiWindow, ptr %3737, i32 0, i32 44
  %3739 = load i8, ptr %3738, align 8, !tbaa !349, !range !94, !noundef !95
  %3740 = trunc i8 %3739 to i1
  br i1 %3740, label %3741, label %3749

3741:                                             ; preds = %3731
  %3742 = load ptr, ptr %10, align 8, !tbaa !5
  %3743 = getelementptr inbounds %struct.ImGuiWindow, ptr %3742, i32 0, i32 70
  %3744 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3743, i32 0, i32 16
  %3745 = load i16, ptr %3744, align 4, !tbaa !308
  %3746 = load ptr, ptr %10, align 8, !tbaa !5
  %3747 = getelementptr inbounds %struct.ImGuiWindow, ptr %3746, i32 0, i32 70
  %3748 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3747, i32 0, i32 17
  store i16 %3745, ptr %3748, align 2, !tbaa !307
  br label %3749

3749:                                             ; preds = %3741, %3731
  %3750 = load ptr, ptr %10, align 8, !tbaa !5
  %3751 = getelementptr inbounds %struct.ImGuiWindow, ptr %3750, i32 0, i32 44
  %3752 = load i8, ptr %3751, align 8, !tbaa !349, !range !94, !noundef !95
  %3753 = trunc i8 %3752 to i1
  br i1 %3753, label %3754, label %3770

3754:                                             ; preds = %3749
  %3755 = load ptr, ptr %10, align 8, !tbaa !5
  %3756 = getelementptr inbounds %struct.ImGuiWindow, ptr %3755, i32 0, i32 45
  %3757 = load i8, ptr %3756, align 1, !tbaa !124, !range !94, !noundef !95
  %3758 = trunc i8 %3757 to i1
  br i1 %3758, label %3770, label %3759

3759:                                             ; preds = %3754
  %3760 = load ptr, ptr %10, align 8, !tbaa !5
  %3761 = getelementptr inbounds %struct.ImGuiWindow, ptr %3760, i32 0, i32 45
  %3762 = load i8, ptr %3761, align 1, !tbaa !124, !range !94, !noundef !95
  %3763 = trunc i8 %3762 to i1
  %3764 = zext i1 %3763 to i32
  %3765 = icmp eq i32 %3764, 0
  br i1 %3765, label %3766, label %3767

3766:                                             ; preds = %3759
  br label %3769

3767:                                             ; preds = %3759
  call void @__assert_fail(ptr noundef @.str.162, ptr noundef @.str.3, i32 noundef 7595, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3768:                                             ; No predecessors!
  br label %3769

3769:                                             ; preds = %3768, %3766
  br label %3770

3770:                                             ; preds = %3769, %3754, %3749
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #12
  br label %3771

3771:                                             ; preds = %3770, %3471
  %3772 = load ptr, ptr %10, align 8, !tbaa !5
  %3773 = getelementptr inbounds %struct.ImGuiWindow, ptr %3772, i32 0, i32 47
  %3774 = load i8, ptr %3773, align 1, !tbaa !118, !range !94, !noundef !95
  %3775 = trunc i8 %3774 to i1
  br i1 %3775, label %3825, label %3776

3776:                                             ; preds = %3771
  %3777 = load ptr, ptr %8, align 8, !tbaa !5
  %3778 = getelementptr inbounds %struct.ImGuiContext, ptr %3777, i32 0, i32 2
  %3779 = getelementptr inbounds %struct.ImGuiIO, ptr %3778, i32 0, i32 36
  %3780 = load i8, ptr %3779, align 1, !tbaa !350, !range !94, !noundef !95
  %3781 = trunc i8 %3780 to i1
  br i1 %3781, label %3782, label %3785

3782:                                             ; preds = %3776
  %3783 = load i8, ptr %11, align 1, !tbaa !98, !range !94, !noundef !95
  %3784 = trunc i8 %3783 to i1
  br i1 %3784, label %3801, label %3785

3785:                                             ; preds = %3782, %3776
  %3786 = load ptr, ptr %8, align 8, !tbaa !5
  %3787 = getelementptr inbounds %struct.ImGuiContext, ptr %3786, i32 0, i32 2
  %3788 = getelementptr inbounds %struct.ImGuiIO, ptr %3787, i32 0, i32 37
  %3789 = load i8, ptr %3788, align 2, !tbaa !351, !range !94, !noundef !95
  %3790 = trunc i8 %3789 to i1
  br i1 %3790, label %3791, label %3824

3791:                                             ; preds = %3785
  %3792 = load ptr, ptr %8, align 8, !tbaa !5
  %3793 = getelementptr inbounds %struct.ImGuiContext, ptr %3792, i32 0, i32 270
  %3794 = load i8, ptr %3793, align 4, !tbaa !352
  %3795 = sext i8 %3794 to i32
  %3796 = load ptr, ptr %8, align 8, !tbaa !5
  %3797 = getelementptr inbounds %struct.ImGuiContext, ptr %3796, i32 0, i32 29
  %3798 = getelementptr inbounds %struct.ImVector.5, ptr %3797, i32 0, i32 0
  %3799 = load i32, ptr %3798, align 8, !tbaa !116
  %3800 = icmp eq i32 %3795, %3799
  br i1 %3800, label %3801, label %3824

3801:                                             ; preds = %3791, %3782
  %3802 = load ptr, ptr %10, align 8, !tbaa !5
  %3803 = getelementptr inbounds %struct.ImGuiWindow, ptr %3802, i32 0, i32 58
  %3804 = load i8, ptr %3803, align 8, !tbaa !227
  %3805 = sext i8 %3804 to i32
  %3806 = icmp sgt i32 %3805, 0
  br i1 %3806, label %3807, label %3812

3807:                                             ; preds = %3801
  %3808 = load ptr, ptr %10, align 8, !tbaa !5
  %3809 = getelementptr inbounds %struct.ImGuiWindow, ptr %3808, i32 0, i32 58
  %3810 = load i8, ptr %3809, align 8, !tbaa !227
  %3811 = add i8 %3810, 1
  store i8 %3811, ptr %3809, align 8, !tbaa !227
  br label %3812

3812:                                             ; preds = %3807, %3801
  %3813 = load ptr, ptr %10, align 8, !tbaa !5
  %3814 = getelementptr inbounds %struct.ImGuiWindow, ptr %3813, i32 0, i32 59
  %3815 = load i8, ptr %3814, align 1, !tbaa !228
  %3816 = sext i8 %3815 to i32
  %3817 = icmp sgt i32 %3816, 0
  br i1 %3817, label %3818, label %3823

3818:                                             ; preds = %3812
  %3819 = load ptr, ptr %10, align 8, !tbaa !5
  %3820 = getelementptr inbounds %struct.ImGuiWindow, ptr %3819, i32 0, i32 59
  %3821 = load i8, ptr %3820, align 1, !tbaa !228
  %3822 = add i8 %3821, 1
  store i8 %3822, ptr %3820, align 1, !tbaa !228
  br label %3823

3823:                                             ; preds = %3818, %3812
  store i1 false, ptr %4, align 1
  store i32 1, ptr %110, align 4
  br label %3831

3824:                                             ; preds = %3791, %3785
  br label %3825

3825:                                             ; preds = %3824, %3771
  %3826 = load ptr, ptr %10, align 8, !tbaa !5
  %3827 = getelementptr inbounds %struct.ImGuiWindow, ptr %3826, i32 0, i32 44
  %3828 = load i8, ptr %3827, align 8, !tbaa !349, !range !94, !noundef !95
  %3829 = trunc i8 %3828 to i1
  %3830 = xor i1 %3829, true
  store i1 %3830, ptr %4, align 1
  store i32 1, ptr %110, align 4
  br label %3831

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

; 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: 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
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 @_ZN5ImGui14FindWindowByIDEj(i32 noundef) #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(102) 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(102)) 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(102)) #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) #13

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152)) #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(1152)) #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 i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, 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(156)) #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 }
attributes #13 = { 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 #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 16552}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14624, !24, i64 14840, !10, i64 15972, !10, i64 15976, !6, i64 15984, !17, i64 15992, !17, i64 15996, !25, i64 16000, !28, i64 16528, !10, i64 16536, !10, i64 16540, !10, i64 16544, !10, i64 16548, !14, i64 16552, !14, i64 16553, !14, i64 16554, !14, i64 16555, !14, i64 16556, !6, i64 16560, !29, i64 16568, !29, i64 16584, !19, i64 16600, !10, i64 16604, !30, i64 16608, !30, i64 16624, !30, i64 16640, !31, i64 16656, !32, i64 16672, !10, i64 16688, !16, i64 16692, !10, i64 16700, !6, i64 16704, !6, i64 16712, !6, i64 16720, !6, i64 16728, !6, i64 16736, !16, i64 16744, !10, i64 16752, !10, i64 16756, !17, i64 16760, !16, i64 16764, !16, i64 16772, !10, i64 16780, !10, i64 16784, !10, i64 16788, !14, i64 16792, !14, i64 16793, !17, i64 16796, !17, i64 16800, !10, i64 16804, !10, i64 16808, !17, i64 16812, !14, i64 16816, !14, i64 16817, !14, i64 16818, !14, i64 16819, !14, i64 16820, !14, i64 16821, !14, i64 16822, !10, i64 16823, !16, i64 16824, !6, i64 16832, !34, i64 16840, !10, i64 16844, !14, i64 16848, !14, i64 16849, !6, i64 16856, !10, i64 16864, !17, i64 16868, !28, i64 16872, !28, i64 16880, !28, i64 16888, !35, i64 16896, !7, i64 16916, !36, i64 18768, !10, i64 19112, !14, i64 19116, !10, i64 19120, !10, i64 19124, !10, i64 19128, !10, i64 19132, !10, i64 19136, !38, i64 19144, !40, i64 19176, !42, i64 19256, !14, i64 19416, !10, i64 19420, !44, i64 19424, !45, i64 19440, !46, i64 19456, !47, i64 19472, !48, i64 19488, !49, i64 19504, !50, i64 19520, !50, i64 19536, !51, i64 19552, !10, i64 19568, !52, i64 19576, !17, i64 19592, !6, i64 19600, !6, i64 19608, !6, i64 19616, !10, i64 19624, !53, i64 19632, !10, i64 19680, !10, i64 19684, !10, i64 19688, !6, i64 19696, !10, i64 19704, !10, i64 19708, !47, i64 19712, !10, i64 19728, !10, i64 19732, !10, i64 19736, !10, i64 19740, !10, i64 19744, !17, i64 19748, !10, i64 19752, !10, i64 19756, !10, i64 19760, !10, i64 19764, !10, i64 19768, !34, i64 19772, !54, i64 19776, !39, i64 19784, !14, i64 19792, !14, i64 19793, !14, i64 19794, !14, i64 19795, !14, i64 19796, !14, i64 19797, !14, i64 19798, !55, i64 19800, !14, i64 19864, !14, i64 19865, !14, i64 19866, !10, i64 19868, !10, i64 19872, !10, i64 19876, !10, i64 19880, !10, i64 19884, !10, i64 19888, !41, i64 19892, !41, i64 19908, !10, i64 19924, !10, i64 19928, !10, i64 19932, !55, i64 19936, !55, i64 20000, !55, i64 20064, !55, i64 20128, !10, i64 20192, !10, i64 20196, !6, i64 20200, !6, i64 20208, !6, i64 20216, !17, i64 20224, !17, i64 20228, !14, i64 20232, !16, i64 20236, !16, i64 20244, !17, i64 20252, !14, i64 20256, !14, i64 20257, !14, i64 20258, !10, i64 20260, !10, i64 20264, !10, i64 20268, !56, i64 20272, !41, i64 20336, !41, i64 20352, !10, i64 20368, !10, i64 20372, !17, i64 20376, !10, i64 20380, !10, i64 20384, !10, i64 20388, !10, i64 20392, !57, i64 20400, !7, i64 20416, !10, i64 20432, !58, i64 20440, !6, i64 20456, !10, i64 20464, !10, i64 20468, !59, i64 20472, !60, i64 20488, !62, i64 20528, !63, i64 20544, !6, i64 20560, !64, i64 20568, !66, i64 20608, !67, i64 20624, !10, i64 20640, !10, i64 20644, !17, i64 20648, !17, i64 20652, !10, i64 20656, !10, i64 20660, !10, i64 20664, !17, i64 20668, !16, i64 20672, !68, i64 20680, !72, i64 24408, !73, i64 24432, !10, i64 24552, !10, i64 24556, !10, i64 24560, !10, i64 24564, !17, i64 24568, !17, i64 24572, !10, i64 24576, !26, i64 24580, !75, i64 24596, !41, i64 24644, !14, i64 24660, !17, i64 24664, !17, i64 24668, !14, i64 24672, !14, i64 24673, !17, i64 24676, !17, i64 24680, !17, i64 24684, !17, i64 24688, !18, i64 24692, !18, i64 24694, !18, i64 24696, !69, i64 24704, !76, i64 24720, !77, i64 24736, !79, i64 24840, !79, i64 24856, !10, i64 24872, !80, i64 24880, !6, i64 24936, !14, i64 24944, !17, i64 24948, !83, i64 24952, !84, i64 24968, !85, i64 24984, !86, i64 25000, !87, i64 25016, !10, i64 25032, !7, i64 25040, !14, i64 25128, !88, i64 25132, !6, i64 25136, !83, i64 25144, !6, i64 25160, !6, i64 25168, !17, i64 25176, !14, i64 25180, !10, i64 25184, !10, i64 25188, !10, i64 25192, !10, i64 25196, !83, i64 25200, !89, i64 25216, !10, i64 25240, !7, i64 25244, !7, i64 25245, !14, i64 25246, !10, i64 25248, !7, i64 25252, !14, i64 25253, !7, i64 25254, !10, i64 25256, !17, i64 25260, !26, i64 25264, !90, i64 25280, !91, i64 25304, !93, i64 25344, !6, i64 25408, !7, i64 25416, !10, i64 25656, !10, i64 25660, !17, i64 25664, !10, i64 25668, !10, i64 25672, !10, i64 25676, !69, i64 25680, !7, i64 25696}
!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, !14, i64 124, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !18, i64 200, !14, i64 202, !14, i64 203, !14, i64 204, !14, i64 205, !14, i64 206, !14, i64 207, !14, i64 208, !17, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !16, i64 232, !7, i64 240, !7, i64 2904, !7, i64 3572, !6, i64 3640, !16, i64 3648, !7, i64 3656, !17, i64 3664, !17, i64 3668, !19, i64 3672, !10, i64 3676, !14, i64 3680, !14, i64 3681, !14, i64 3682, !14, i64 3683, !10, i64 3684, !7, i64 3688, !14, i64 14344, !16, i64 14348, !7, i64 14356, !7, i64 14400, !7, i64 14440, !7, i64 14445, !7, i64 14450, !7, i64 14460, !7, i64 14470, !7, i64 14475, !7, i64 14480, !14, i64 14485, !7, i64 14488, !7, i64 14508, !7, i64 14528, !7, i64 14568, !17, i64 14588, !14, i64 14592, !14, i64 14593, !7, i64 14594, !14, i64 14595, !18, i64 14596, !20, i64 14600}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS16ImGuiMouseSource", !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, !17, i64 148, !17, i64 152, !10, i64 156, !16, i64 160, !16, i64 168, !17, i64 176, !16, i64 180, !16, i64 188, !16, i64 196, !16, i64 204, !17, i64 212, !17, i64 216, !14, i64 220, !14, i64 221, !14, i64 222, !17, i64 224, !17, i64 228, !7, i64 232, !17, i64 1112, !17, i64 1116, !17, i64 1120, !10, i64 1124, !10, i64 1128}
!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 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!36 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !37, i64 312, !37, i64 328}
!37 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !39, i64 8, !17, i64 16, !10, i64 20, !14, i64 24, !10, i64 25}
!39 = !{!"long long", !7, i64 0}
!40 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !41, i64 12, !41, i64 28, !41, i64 44, !41, i64 60}
!41 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!42 = !{!"_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, !10, i64 60, !14, i64 64, !14, i64 65, !41, i64 68, !6, i64 88, !6, i64 96, !17, i64 104, !10, i64 108, !10, i64 112, !43, i64 116, !16, i64 148}
!43 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !14, i64 28, !14, i64 29}
!44 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS20ImGuiPlatformMonitor", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !17, i64 32, !6, i64 40}
!54 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!55 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !41, i64 16, !10, i64 32, !39, i64 40, !17, i64 48, !17, i64 52, !17, i64 56}
!56 = !{!"_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}
!57 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS6ImPoolI10ImGuiTableE", !61, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!61 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !65, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!65 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !69, i64 40, !69, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !70, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720}
!69 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_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, !71, i64 32}
!71 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!72 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !69, i64 8}
!73 = !{!"_ZTS6ImFont", !62, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !74, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, 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}
!74 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS21ImGuiComboPreviewData", !41, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!76 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS22ImGuiTypingSelectState", !78, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!78 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!79 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!80 = !{!"_ZTS16ImGuiDockContext", !32, i64 0, !81, i64 16, !82, i64 32, !14, i64 48}
!81 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS15ImGuiTextBuffer", !69, i64 0}
!84 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !69, i64 0}
!86 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !69, i64 0}
!87 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!88 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!89 = !{!"_ZTS14ImGuiTextIndex", !48, i64 0, !10, i64 16}
!90 = !{!"_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, !14, i64 9, !10, i64 12, !10, i64 16}
!91 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !92, i64 16, !14, i64 32, !17, i64 36}
!92 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!93 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !18, i64 8, !7, i64 12}
!94 = !{i8 0, i8 2}
!95 = !{}
!96 = !{!13, !10, i64 16540}
!97 = !{!13, !10, i64 16536}
!98 = !{!14, !14, i64 0}
!99 = !{!13, !10, i64 16700}
!100 = !{!101, !10, i64 16}
!101 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !43, i64 32, !6, i64 64, !10, i64 72, !16, i64 76, !10, i64 84, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !17, i64 168, !17, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !16, i64 232, !14, i64 240, !14, i64 241, !14, i64 242, !14, i64 243, !14, i64 244, !14, i64 245, !14, i64 246, !14, i64 247, !14, i64 248, !14, i64 249, !14, i64 250, !14, i64 251, !14, i64 252, !14, i64 253, !7, i64 254, !7, i64 255, !18, i64 256, !18, i64 258, !18, i64 260, !18, i64 262, !18, i64 264, !10, i64 268, !7, i64 272, !7, i64 273, !14, i64 274, !10, i64 276, !7, i64 280, !7, i64 281, !7, i64 282, !7, i64 283, !10, i64 284, !10, i64 285, !10, i64 286, !10, i64 287, !16, i64 288, !16, i64 296, !76, i64 304, !102, i64 320, !41, i64 552, !41, i64 568, !41, i64 584, !41, i64 600, !41, i64 616, !41, i64 632, !41, i64 648, !105, i64 664, !105, i64 668, !10, i64 672, !10, i64 676, !17, i64 680, !17, i64 684, !32, i64 688, !106, i64 704, !17, i64 720, !17, i64 724, !10, i64 728, !6, i64 736, !107, i64 744, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !6, i64 1008, !7, i64 1016, !7, i64 1024, !7, i64 1056, !10, i64 1072, !10, i64 1076, !10, i64 1080, !14, i64 1084, !14, i64 1085, !14, i64 1085, !14, i64 1085, !14, i64 1085, !18, i64 1086, !114, i64 1088, !6, i64 1112, !6, i64 1120, !10, i64 1128, !10, i64 1132, !41, i64 1136}
!102 = !{!"_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, !103, i64 68, !103, i64 72, !103, i64 76, !16, i64 80, !54, i64 88, !18, i64 92, !18, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !104, 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, !62, i64 200, !62, i64 216}
!103 = !{!"_ZTS6ImVec1", !17, i64 0}
!104 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!105 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!106 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!107 = !{!"_ZTS10ImDrawList", !108, i64 0, !20, i64 16, !109, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !110, i64 88, !111, i64 104, !27, i64 120, !112, i64 136, !113, i64 168, !17, i64 192}
!108 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!109 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!110 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!111 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!112 = !{!"_ZTS15ImDrawCmdHeader", !26, i64 0, !6, i64 16, !10, i64 24}
!113 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !63, i64 8}
!114 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!115 = !{!101, !10, i64 672}
!116 = !{!13, !10, i64 16656}
!117 = !{!13, !14, i64 16553}
!118 = !{!101, !14, i64 251}
!119 = !{!13, !10, i64 19536}
!120 = !{!101, !10, i64 268}
!121 = !{!122, !10, i64 0}
!122 = !{!"_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}
!123 = !{!122, !6, i64 8}
!124 = !{!101, !14, i64 249}
!125 = !{!101, !10, i64 20}
!126 = !{!101, !10, i64 24}
!127 = !{!13, !10, i64 19256}
!128 = !{!13, !10, i64 19316}
!129 = !{!101, !10, i64 28}
!130 = !{!13, !28, i64 16528}
!131 = !{!101, !17, i64 680}
!132 = !{!101, !18, i64 260}
!133 = !{!13, !10, i64 16688}
!134 = !{!101, !18, i64 262}
!135 = !{!101, !6, i64 1112}
!136 = !{!101, !6, i64 1120}
!137 = !{!13, !10, i64 19368}
!138 = !{!13, !10, i64 19272}
!139 = !{!101, !10, i64 1128}
!140 = !{!141, !6, i64 136}
!141 = !{!"_ZTS13ImGuiDockNode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !142, i64 20, !6, i64 24, !7, i64 32, !30, i64 48, !6, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !143, i64 96, !43, i64 100, !10, i64 132, !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}
!142 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!143 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!144 = !{!145, !6, i64 0}
!145 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !40, i64 8, !146, i64 84}
!146 = !{!"_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}
!147 = !{!101, !6, i64 944}
!148 = !{!101, !10, i64 304}
!149 = !{!13, !6, i64 16704}
!150 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !151, i64 16, i64 4, !151, i64 20, i64 4, !151, i64 24, i64 4, !151, i64 28, i64 4, !151, i64 32, i64 4, !151, i64 36, i64 4, !151, i64 40, i64 4, !151, i64 44, i64 4, !151, i64 48, i64 4, !151, i64 52, i64 4, !151, i64 56, i64 4, !151, i64 60, i64 4, !151, i64 64, i64 4, !151, i64 68, i64 4, !151, i64 72, i64 4, !151}
!151 = !{!17, !17, i64 0}
!152 = !{!13, !10, i64 19568}
!153 = !{!101, !6, i64 952}
!154 = !{!101, !6, i64 960}
!155 = !{!101, !6, i64 1000}
!156 = !{!141, !10, i64 16}
!157 = !{!101, !10, i64 40}
!158 = !{!13, !10, i64 19128}
!159 = !{!101, !10, i64 1072}
!160 = !{!101, !54, i64 408}
!161 = !{!122, !10, i64 24}
!162 = !{!13, !10, i64 19260}
!163 = !{i64 0, i64 4, !151, i64 4, i64 4, !151}
!164 = !{!13, !10, i64 19264}
!165 = !{!13, !17, i64 19292}
!166 = !{!13, !17, i64 19296}
!167 = !{!101, !17, i64 104}
!168 = !{!101, !17, i64 108}
!169 = !{!13, !17, i64 19308}
!170 = !{!101, !17, i64 208}
!171 = !{!101, !17, i64 216}
!172 = !{!13, !17, i64 19312}
!173 = !{!101, !17, i64 212}
!174 = !{!101, !17, i64 220}
!175 = !{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 4, !9, i64 28, i64 1, !98, i64 29, i64 1, !98}
!176 = !{!13, !14, i64 19321}
!177 = !{!13, !10, i64 19268}
!178 = !{!101, !7, i64 281}
!179 = !{!101, !14, i64 243}
!180 = !{!101, !14, i64 253}
!181 = !{i64 0, i64 4, !151, i64 4, i64 4, !151, i64 8, i64 4, !151, i64 12, i64 4, !151}
!182 = !{!101, !6, i64 736}
!183 = !{!101, !10, i64 496}
!184 = !{!101, !14, i64 1084}
!185 = !{!101, !6, i64 64}
!186 = !{!187, !6, i64 96}
!187 = !{!"_ZTS14ImGuiViewportP", !188, 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, !18, i64 138, !7, i64 140, !7, i64 152, !189, i64 168, !191, i64 232, !16, i64 264, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296, !16, i64 304, !16, i64 312}
!188 = !{!"_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}
!189 = !{!"_ZTS10ImDrawData", !14, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !190, i64 16, !16, i64 32, !16, i64 40, !16, i64 48, !6, i64 56}
!190 = !{!"_ZTS8ImVectorIP10ImDrawListE", !10, i64 0, !10, i64 4, !6, i64 8}
!191 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !190, i64 16}
!192 = !{!13, !6, i64 20216}
!193 = !{!101, !6, i64 8}
!194 = !{!101, !10, i64 176}
!195 = !{!196, !196, i64 0}
!196 = !{!"long", !7, i64 0}
!197 = !{!101, !7, i64 280}
!198 = !{!101, !7, i64 282}
!199 = !{!101, !17, i64 96}
!200 = !{!101, !17, i64 100}
!201 = !{!13, !10, i64 8}
!202 = !{!188, !17, i64 40}
!203 = !{!101, !17, i64 724}
!204 = !{!24, !17, i64 48}
!205 = !{!101, !17, i64 148}
!206 = !{!24, !17, i64 56}
!207 = !{!24, !17, i64 20}
!208 = !{!24, !17, i64 12}
!209 = !{!101, !17, i64 136}
!210 = !{!24, !17, i64 76}
!211 = !{!13, !17, i64 19404}
!212 = !{!101, !17, i64 420}
!213 = !{!13, !17, i64 19408}
!214 = !{!101, !17, i64 424}
!215 = !{!13, !6, i64 16712}
!216 = !{!13, !10, i64 16784}
!217 = !{!13, !10, i64 16788}
!218 = !{!18, !18, i64 0}
!219 = !{!101, !14, i64 247}
!220 = !{!101, !14, i64 246}
!221 = !{!101, !17, i64 152}
!222 = !{!101, !17, i64 160}
!223 = !{!101, !17, i64 156}
!224 = !{!101, !17, i64 164}
!225 = !{!16, !17, i64 0}
!226 = !{!16, !17, i64 4}
!227 = !{!101, !7, i64 272}
!228 = !{!101, !7, i64 273}
!229 = !{!101, !14, i64 274}
!230 = !{!101, !10, i64 276}
!231 = !{!101, !10, i64 464}
!232 = !{!101, !17, i64 288}
!233 = !{!101, !10, i64 84}
!234 = !{!101, !14, i64 242}
!235 = !{!188, !10, i64 4}
!236 = !{!13, !10, i64 14808}
!237 = !{!101, !17, i64 144}
!238 = !{!24, !17, i64 44}
!239 = !{!24, !17, i64 52}
!240 = !{!24, !17, i64 16}
!241 = !{!13, !14, i64 102}
!242 = !{!13, !17, i64 15992}
!243 = !{!101, !7, i64 254}
!244 = !{!101, !7, i64 255}
!245 = !{!188, !14, i64 89}
!246 = !{!188, !14, i64 90}
!247 = !{!101, !14, i64 241}
!248 = !{!24, !17, i64 116}
!249 = !{!101, !14, i64 240}
!250 = !{!101, !17, i64 232}
!251 = !{!101, !17, i64 236}
!252 = !{!101, !17, i64 556}
!253 = !{!101, !17, i64 88}
!254 = !{!101, !17, i64 568}
!255 = !{!101, !17, i64 92}
!256 = !{!101, !17, i64 572}
!257 = !{!101, !17, i64 576}
!258 = !{!101, !17, i64 580}
!259 = !{!24, !17, i64 72}
!260 = !{!101, !17, i64 584}
!261 = !{!101, !17, i64 588}
!262 = !{!101, !17, i64 592}
!263 = !{!101, !17, i64 596}
!264 = !{!101, !17, i64 684}
!265 = !{!101, !17, i64 112}
!266 = !{!101, !17, i64 200}
!267 = !{!101, !17, i64 116}
!268 = !{!101, !17, i64 140}
!269 = !{!101, !17, i64 204}
!270 = !{!101, !17, i64 172}
!271 = !{!101, !17, i64 168}
!272 = !{!107, !10, i64 0}
!273 = !{!274, !10, i64 32}
!274 = !{!"_ZTS9ImDrawCmd", !26, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!275 = !{!13, !6, i64 15984}
!276 = !{!73, !6, i64 64}
!277 = !{!278, !6, i64 8}
!278 = !{!"_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, !46, i64 88, !279, i64 104, !280, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!279 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!280 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!281 = !{!107, !10, i64 32}
!282 = !{!13, !6, i64 20200}
!283 = !{!13, !6, i64 19696}
!284 = !{!101, !6, i64 984}
!285 = !{!101, !17, i64 128}
!286 = !{!101, !17, i64 132}
!287 = !{!101, !17, i64 192}
!288 = !{!101, !17, i64 600}
!289 = !{!101, !17, i64 196}
!290 = !{!101, !17, i64 604}
!291 = !{!101, !17, i64 608}
!292 = !{!101, !17, i64 612}
!293 = !{!101, !17, i64 648}
!294 = !{!101, !17, i64 652}
!295 = !{!101, !17, i64 656}
!296 = !{!101, !17, i64 660}
!297 = !{!101, !17, i64 388}
!298 = !{!101, !17, i64 396}
!299 = !{!101, !17, i64 392}
!300 = !{!28, !28, i64 0}
!301 = !{!101, !17, i64 336}
!302 = !{!101, !17, i64 340}
!303 = !{!101, !17, i64 380}
!304 = !{!101, !17, i64 376}
!305 = !{!101, !14, i64 385}
!306 = !{!101, !14, i64 384}
!307 = !{!101, !18, i64 414}
!308 = !{!101, !18, i64 412}
!309 = !{!101, !14, i64 416}
!310 = !{!101, !14, i64 417}
!311 = !{!101, !14, i64 418}
!312 = !{!101, !14, i64 419}
!313 = !{!101, !10, i64 456}
!314 = !{!101, !10, i64 460}
!315 = !{!101, !6, i64 480}
!316 = !{!101, !6, i64 488}
!317 = !{!101, !10, i64 500}
!318 = !{!101, !10, i64 504}
!319 = !{!101, !17, i64 508}
!320 = !{!101, !17, i64 512}
!321 = !{!188, !14, i64 91}
!322 = !{!13, !10, i64 25196}
!323 = !{!13, !14, i64 20232}
!324 = !{!41, !17, i64 0}
!325 = !{!41, !17, i64 4}
!326 = !{!41, !17, i64 8}
!327 = !{!41, !17, i64 12}
!328 = !{!101, !18, i64 666}
!329 = !{!101, !18, i64 664}
!330 = !{!13, !6, i64 16728}
!331 = !{!101, !6, i64 976}
!332 = !{!13, !14, i64 20256}
!333 = !{!101, !10, i64 180}
!334 = !{!13, !10, i64 19132}
!335 = !{!101, !10, i64 1132}
!336 = !{!13, !10, i64 19136}
!337 = !{!101, !14, i64 245}
!338 = !{!101, !18, i64 256}
!339 = !{!101, !10, i64 676}
!340 = !{!13, !14, i64 19796}
!341 = !{!101, !6, i64 992}
!342 = !{!13, !14, i64 25128}
!343 = !{!101, !17, i64 552}
!344 = !{!101, !17, i64 560}
!345 = !{!101, !17, i64 564}
!346 = !{!24, !17, i64 0}
!347 = !{!101, !14, i64 250}
!348 = !{!101, !7, i64 283}
!349 = !{!101, !14, i64 248}
!350 = !{!13, !14, i64 129}
!351 = !{!13, !14, i64 130}
!352 = !{!13, !7, i64 25252}


; 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 }
%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 [72 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [66 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> @_ZL7ImTruncRK6ImVec2(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 @_ZL7ImTruncf(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 @_ZL7ImFloorf(float noundef) local_unnamed_addr #4

; 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: nounwind
declare void @llvm.debugtrap() #12

; 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(1152)) 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: 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 i32, align 4
  %30 = alloca [4 x i32], align 16
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca %struct.ImRect, align 4
  %37 = alloca %struct.ImRect, align 8
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImRect, align 8
  %40 = alloca %struct.ImRect, align 8
  %41 = alloca %struct.ImVec2, align 8
  %42 = alloca %struct.ImVec2, align 8
  %43 = alloca %struct.ImVec2, align 8
  %44 = alloca %struct.ImRect, align 4
  %45 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %46 = getelementptr inbounds i8, ptr %45, i64 14840
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %47

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

.critedge:                                        ; preds = %3, %47
  tail call void @__assert_fail(ptr noundef nonnull @.str.150, ptr noundef nonnull @.str.3, i32 noundef 6738, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

49:                                               ; preds = %47
  %50 = getelementptr inbounds i8, ptr %45, i64 16552
  %51 = load i8, ptr %50, align 8, !tbaa !10, !range !93, !noundef !94
  %52 = trunc nuw i8 %51 to i1
  br i1 %52, label %54, label %53

53:                                               ; preds = %49
  tail call void @__assert_fail(ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.3, i32 noundef 6739, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

54:                                               ; preds = %49
  %55 = getelementptr inbounds i8, ptr %45, i64 16540
  %56 = load i32, ptr %55, align 4, !tbaa !95
  %57 = getelementptr inbounds i8, ptr %45, i64 16536
  %58 = load i32, ptr %57, align 8, !tbaa !96
  %.not399 = icmp eq i32 %56, %58
  br i1 %.not399, label %59, label %60

59:                                               ; preds = %54
  tail call void @__assert_fail(ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.3, i32 noundef 6740, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

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

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

65:                                               ; preds = %63, %60
  %66 = phi ptr [ %64, %63 ], [ %61, %60 ]
  %67 = getelementptr inbounds i8, ptr %45, i64 16700
  %68 = load i32, ptr %67, align 4, !tbaa !97
  %69 = getelementptr inbounds i8, ptr %66, i64 16
  %70 = load i32, ptr %69, align 8, !tbaa !98
  %71 = icmp eq i32 %68, %70
  br i1 %71, label %72, label %73

72:                                               ; preds = %65
  tail call void @llvm.debugtrap()
  br label %73

73:                                               ; preds = %72, %65
  %74 = and i32 %2, 197120
  %75 = icmp eq i32 %74, 197120
  %76 = or i32 %2, 6
  %spec.select = select i1 %75, i32 %76, i32 %2
  %77 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %77, 8388608
  br i1 %or.cond, label %78, label %79

78:                                               ; preds = %73
  tail call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.3, i32 noundef 6757, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

79:                                               ; preds = %73
  %80 = load i32, ptr %57, align 8, !tbaa !96
  %81 = getelementptr inbounds i8, ptr %66, i64 672
  %82 = load i32, ptr %81, align 8, !tbaa !113
  %.not402 = icmp eq i32 %82, %80
  %83 = getelementptr inbounds i8, ptr %45, i64 16656
  %84 = load i32, ptr %83, align 8, !tbaa !114
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %89

86:                                               ; preds = %79
  %87 = getelementptr inbounds i8, ptr %45, i64 16553
  %88 = load i8, ptr %87, align 1, !tbaa !115, !range !93, !noundef !94
  br label %89

89:                                               ; preds = %86, %79
  %90 = phi i8 [ 0, %79 ], [ %88, %86 ]
  %91 = getelementptr inbounds i8, ptr %66, i64 251
  store i8 %90, ptr %91, align 1, !tbaa !116
  %92 = add nsw i32 %80, -1
  %93 = icmp slt i32 %82, %92
  %94 = and i32 %spec.select, 67108864
  %.not403 = icmp eq i32 %94, 0
  br i1 %.not403, label %109, label %95

95:                                               ; preds = %89
  %96 = getelementptr inbounds i8, ptr %45, i64 19520
  %97 = getelementptr inbounds i8, ptr %45, i64 19536
  %98 = load i32, ptr %97, align 8, !tbaa !117
  %99 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %96, i32 noundef %98)
  %100 = getelementptr inbounds i8, ptr %66, i64 268
  %101 = load i32, ptr %100, align 4, !tbaa !118
  %102 = load i32, ptr %99, align 8, !tbaa !119
  %103 = icmp ne i32 %101, %102
  %104 = getelementptr inbounds i8, ptr %99, i64 8
  %105 = load ptr, ptr %104, align 8, !tbaa !121
  %106 = icmp ne ptr %66, %105
  %107 = or i1 %103, %106
  %108 = or i1 %93, %107
  br label %109

109:                                              ; preds = %95, %89
  %.0349.in = phi i1 [ %108, %95 ], [ %93, %89 ]
  %110 = getelementptr inbounds i8, ptr %66, i64 249
  %111 = load i8, ptr %110, align 1, !tbaa !122, !range !93, !noundef !94
  %112 = trunc nuw i8 %111 to i1
  br i1 %.not402, label %139, label %113

113:                                              ; preds = %109
  tail call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef nonnull %66, i1 noundef zeroext %62, i32 noundef %spec.select)
  %114 = zext i1 %.0349.in to i8
  store i8 %114, ptr %110, align 1, !tbaa !122
  br i1 %.0349.in, label %115, label %116

115:                                              ; preds = %113
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %66, i32 noundef 8, i1 noundef zeroext true)
  br label %116

116:                                              ; preds = %115, %113
  %117 = getelementptr inbounds i8, ptr %66, i64 20
  %118 = load i32, ptr %117, align 4, !tbaa !123
  %119 = getelementptr inbounds i8, ptr %66, i64 24
  store i32 %118, ptr %119, align 8, !tbaa !124
  store i32 %spec.select, ptr %117, align 4, !tbaa !123
  %120 = getelementptr inbounds i8, ptr %45, i64 19256
  %121 = load i32, ptr %120, align 8, !tbaa !125
  %122 = and i32 %121, 256
  %.not404 = icmp eq i32 %122, 0
  br i1 %.not404, label %126, label %123

123:                                              ; preds = %116
  %124 = getelementptr inbounds i8, ptr %45, i64 19316
  %125 = load i32, ptr %124, align 4, !tbaa !126
  br label %126

126:                                              ; preds = %116, %123
  %127 = phi i32 [ %125, %123 ], [ 0, %116 ]
  %128 = getelementptr inbounds i8, ptr %66, i64 28
  store i32 %127, ptr %128, align 4, !tbaa !127
  store i32 %80, ptr %81, align 8, !tbaa !113
  %129 = getelementptr inbounds i8, ptr %45, i64 16528
  %130 = load double, ptr %129, align 8, !tbaa !128
  %131 = fptrunc double %130 to float
  %132 = getelementptr inbounds i8, ptr %66, i64 680
  store float %131, ptr %132, align 8, !tbaa !129
  %133 = getelementptr inbounds i8, ptr %66, i64 260
  store i16 0, ptr %133, align 4, !tbaa !130
  %134 = getelementptr inbounds i8, ptr %45, i64 16688
  %135 = load i32, ptr %134, align 8, !tbaa !131
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr %134, align 8, !tbaa !131
  %137 = trunc i32 %135 to i16
  %138 = getelementptr inbounds i8, ptr %66, i64 262
  store i16 %137, ptr %138, align 2, !tbaa !132
  br label %142

139:                                              ; preds = %109
  %140 = getelementptr inbounds i8, ptr %66, i64 20
  %141 = load i32, ptr %140, align 4, !tbaa !123
  br label %142

142:                                              ; preds = %139, %126
  %.1 = phi i32 [ %spec.select, %126 ], [ %141, %139 ]
  %143 = getelementptr inbounds i8, ptr %66, i64 1112
  %144 = load ptr, ptr %143, align 8, !tbaa !133
  %145 = icmp eq ptr %144, null
  br i1 %145, label %.critedge2, label %146

146:                                              ; preds = %142
  %147 = getelementptr inbounds i8, ptr %66, i64 1120
  %148 = load ptr, ptr %147, align 8, !tbaa !134
  %149 = icmp eq ptr %148, null
  br i1 %149, label %.critedge2, label %150

150:                                              ; preds = %146
  tail call void @__assert_fail(ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.3, i32 noundef 6795, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

.critedge2:                                       ; preds = %142, %146
  %151 = getelementptr inbounds i8, ptr %45, i64 19256
  %152 = load i32, ptr %151, align 8, !tbaa !125
  %153 = and i32 %152, 1024
  %.not405 = icmp eq i32 %153, 0
  br i1 %.not405, label %159, label %154

154:                                              ; preds = %.critedge2
  %155 = getelementptr inbounds i8, ptr %45, i64 19368
  %156 = load i32, ptr %155, align 8, !tbaa !135
  %157 = getelementptr inbounds i8, ptr %45, i64 19272
  %158 = load i32, ptr %157, align 8, !tbaa !136
  tail call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef nonnull %66, i32 noundef %156, i32 noundef %158)
  br label %159

159:                                              ; preds = %154, %.critedge2
  br i1 %.not402, label %194, label %160

160:                                              ; preds = %159
  %161 = getelementptr inbounds i8, ptr %66, i64 1128
  %162 = load i32, ptr %161, align 8, !tbaa !137
  %.not406 = icmp eq i32 %162, 0
  br i1 %.not406, label %163, label %.thread.thread

163:                                              ; preds = %160
  %164 = load ptr, ptr %143, align 8, !tbaa !133
  %.not597 = icmp eq ptr %164, null
  br i1 %.not597, label %.thread, label %.thread.thread

.thread.thread:                                   ; preds = %163, %160
  %165 = getelementptr inbounds i8, ptr %66, i64 1085
  %166 = load i8, ptr %165, align 1
  br label %170

.thread:                                          ; preds = %163
  %167 = tail call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef nonnull %66)
  %168 = getelementptr inbounds i8, ptr %66, i64 1085
  %169 = load i8, ptr %168, align 1
  br i1 %167, label %170, label %192

170:                                              ; preds = %.thread.thread, %.thread
  %171 = phi i8 [ %166, %.thread.thread ], [ %169, %.thread ]
  %172 = phi ptr [ %165, %.thread.thread ], [ %168, %.thread ]
  tail call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef nonnull %66, ptr noundef %1)
  %173 = getelementptr inbounds i8, ptr %66, i64 20
  %174 = load i32, ptr %173, align 4, !tbaa !123
  %175 = load i8, ptr %172, align 1
  %176 = trunc i8 %175 to i1
  br i1 %176, label %177, label %183

177:                                              ; preds = %170
  %178 = load ptr, ptr %143, align 8, !tbaa !133
  %.not409 = icmp eq ptr %178, null
  br i1 %.not409, label %179, label %180

179:                                              ; preds = %177
  tail call void @__assert_fail(ptr noundef nonnull @.str.155, ptr noundef nonnull @.str.3, i32 noundef 6810, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

180:                                              ; preds = %177
  %181 = load i32, ptr %151, align 8, !tbaa !125
  %182 = and i32 %181, -17
  store i32 %182, ptr %151, align 8, !tbaa !125
  %.pre = load i8, ptr %172, align 1
  br label %183

183:                                              ; preds = %180, %170
  %184 = phi i8 [ %.pre, %180 ], [ %175, %170 ]
  %185 = and i8 %184, 4
  %.not410 = icmp eq i8 %185, 0
  %186 = and i8 %171, 6
  %187 = icmp ne i8 %186, 2
  %brmerge503 = select i1 %.not410, i1 true, i1 %187
  br i1 %brmerge503, label %194, label %188

188:                                              ; preds = %183
  %189 = load i8, ptr %110, align 1, !tbaa !122, !range !93, !noundef !94
  %190 = trunc nuw i8 %189 to i1
  %brmerge504 = select i1 %190, i1 true, i1 %112
  br i1 %brmerge504, label %194, label %191

191:                                              ; preds = %188
  store i8 1, ptr %110, align 1, !tbaa !122
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %66, i32 noundef 8, i1 noundef zeroext true)
  br label %194

192:                                              ; preds = %.thread
  %193 = and i8 %169, -8
  store i8 %193, ptr %168, align 1
  br label %194

194:                                              ; preds = %192, %191, %183, %188, %159
  %.3 = phi i32 [ %.1, %159 ], [ %174, %188 ], [ %174, %191 ], [ %174, %183 ], [ %.1, %192 ]
  %195 = getelementptr inbounds i8, ptr %66, i64 1085
  %196 = load i8, ptr %195, align 1
  %197 = trunc i8 %196 to i1
  br i1 %197, label %198, label %202

198:                                              ; preds = %194
  %199 = load ptr, ptr %143, align 8, !tbaa !133
  %200 = getelementptr inbounds i8, ptr %199, i64 136
  %201 = load ptr, ptr %200, align 8, !tbaa !138
  %.not411 = icmp eq ptr %201, null
  br i1 %.not411, label %202, label %207

202:                                              ; preds = %198, %194
  %203 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %83)
  br i1 %203, label %207, label %204

204:                                              ; preds = %202
  %205 = tail call noundef nonnull align 8 dereferenceable(102) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %83)
  %206 = load ptr, ptr %205, align 8, !tbaa !142
  br label %207

207:                                              ; preds = %198, %204, %202
  %208 = phi ptr [ %206, %204 ], [ null, %202 ], [ %201, %198 ]
  br i1 %.not402, label %212, label %209

209:                                              ; preds = %207
  %210 = and i32 %.3, 83886080
  %.not412 = icmp eq i32 %210, 0
  %211 = select i1 %.not412, ptr null, ptr %208
  br label %215

212:                                              ; preds = %207
  %213 = getelementptr inbounds i8, ptr %66, i64 944
  %214 = load ptr, ptr %213, align 8, !tbaa !145
  br label %215

215:                                              ; preds = %212, %209
  %216 = phi ptr [ %211, %209 ], [ %214, %212 ]
  %217 = icmp eq ptr %216, null
  %218 = and i32 %.3, 16777216
  %219 = icmp ne i32 %218, 0
  %.not414 = select i1 %217, i1 %219, i1 false
  br i1 %.not414, label %220, label %221

220:                                              ; preds = %215
  tail call void @__assert_fail(ptr noundef nonnull @.str.156, ptr noundef nonnull @.str.3, i32 noundef 6830, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

221:                                              ; preds = %215
  %222 = getelementptr inbounds i8, ptr %66, i64 304
  %223 = load i32, ptr %222, align 8, !tbaa !146
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %226

225:                                              ; preds = %221
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %222, ptr noundef nonnull align 4 dereferenceable(4) %69)
  br label %226

226:                                              ; preds = %225, %221
  %227 = getelementptr inbounds i8, ptr %45, i64 16704
  store ptr %66, ptr %227, align 8, !tbaa !147
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %5) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(102) %5)
  %228 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %228, ptr %5, align 8, !tbaa !142
  %229 = getelementptr inbounds i8, ptr %45, i64 19176
  %230 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(76) %230, ptr noundef nonnull align 8 dereferenceable(76) %229, i64 76, i1 false), !tbaa.struct !148
  %231 = getelementptr inbounds i8, ptr %5, i64 84
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %231, ptr noundef nonnull %45)
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull align 8 dereferenceable(102) %5)
  %232 = and i32 %.3, 268435456
  %.not415 = icmp eq i32 %232, 0
  br i1 %.not415, label %237, label %233

233:                                              ; preds = %226
  %234 = getelementptr inbounds i8, ptr %45, i64 19568
  %235 = load i32, ptr %234, align 8, !tbaa !151
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %234, align 8, !tbaa !151
  br label %237

237:                                              ; preds = %233, %226
  %.pre613 = load ptr, ptr %4, align 8
  br i1 %.not402, label %264, label %238

238:                                              ; preds = %237
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre613, i32 noundef %.3, ptr noundef %216)
  %239 = load ptr, ptr %4, align 8
  %240 = getelementptr inbounds i8, ptr %239, i64 952
  store ptr %208, ptr %240, align 8, !tbaa !152
  %241 = getelementptr inbounds i8, ptr %239, i64 960
  %242 = load ptr, ptr %241, align 8, !tbaa !153
  %.not416 = icmp eq ptr %242, %239
  %243 = select i1 %.not416, ptr null, ptr %208
  %244 = getelementptr inbounds i8, ptr %239, i64 1000
  store ptr %243, ptr %244, align 8, !tbaa !154
  %245 = icmp eq ptr %243, null
  br i1 %245, label %246, label %256

246:                                              ; preds = %238
  %247 = getelementptr inbounds i8, ptr %239, i64 1112
  %248 = load ptr, ptr %247, align 8, !tbaa !133
  %.not417 = icmp eq ptr %248, null
  br i1 %.not417, label %256, label %249

249:                                              ; preds = %246
  %250 = getelementptr inbounds i8, ptr %248, i64 16
  %251 = load i32, ptr %250, align 8, !tbaa !155
  %252 = and i32 %251, 262144
  %.not418 = icmp eq i32 %252, 0
  br i1 %.not418, label %256, label %253

253:                                              ; preds = %249
  %254 = getelementptr inbounds i8, ptr %248, i64 136
  %255 = load ptr, ptr %254, align 8, !tbaa !138
  store ptr %255, ptr %244, align 8, !tbaa !154
  br label %256

256:                                              ; preds = %249, %253, %246, %238
  %257 = getelementptr inbounds i8, ptr %239, i64 40
  %258 = load i32, ptr %257, align 8, !tbaa !156
  %.not419 = icmp eq i32 %258, 0
  br i1 %.not419, label %264, label %259

259:                                              ; preds = %256
  %260 = call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %258)
  %261 = load ptr, ptr %4, align 8
  %262 = getelementptr inbounds i8, ptr %261, i64 1000
  store ptr %260, ptr %262, align 8, !tbaa !154
  %.not420 = icmp eq ptr %260, null
  br i1 %.not420, label %263, label %264

263:                                              ; preds = %259
  call void @__assert_fail(ptr noundef nonnull @.str.157, ptr noundef nonnull @.str.3, i32 noundef 6864, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

264:                                              ; preds = %256, %259, %237
  %265 = phi ptr [ %239, %256 ], [ %261, %259 ], [ %.pre613, %237 ]
  %266 = and i32 %.3, 8388608
  %.not421 = icmp eq i32 %266, 0
  %267 = getelementptr inbounds i8, ptr %45, i64 19128
  %268 = getelementptr inbounds i8, ptr %265, i64 16
  %.in = select i1 %.not421, ptr %268, ptr %267
  %269 = load i32, ptr %.in, align 8, !tbaa !149
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %269)
  %270 = load i32, ptr %267, align 8, !tbaa !157
  %271 = load ptr, ptr %4, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 1072
  store i32 %270, ptr %272, align 8, !tbaa !158
  %273 = and i32 %.3, 67108864
  %.not422 = icmp eq i32 %273, 0
  br i1 %.not422, label %287, label %274

274:                                              ; preds = %264
  %275 = getelementptr inbounds i8, ptr %45, i64 19520
  %276 = getelementptr inbounds i8, ptr %45, i64 19536
  %277 = load i32, ptr %276, align 8, !tbaa !117
  %278 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %275, i32 noundef %277)
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %278, i64 8
  store ptr %279, ptr %280, align 8, !tbaa !121
  %281 = getelementptr inbounds i8, ptr %208, i64 408
  %282 = load i32, ptr %281, align 8, !tbaa !159
  %283 = getelementptr inbounds i8, ptr %278, i64 24
  store i32 %282, ptr %283, align 8, !tbaa !160
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull align 8 dereferenceable(52) %278)
  %284 = load i32, ptr %278, align 8, !tbaa !119
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 268
  store i32 %284, ptr %286, align 4, !tbaa !118
  br label %287

287:                                              ; preds = %274, %264
  %288 = phi ptr [ %285, %274 ], [ %271, %264 ]
  %289 = load i32, ptr %151, align 8, !tbaa !125
  %290 = and i32 %289, 1
  %.not423 = icmp eq i32 %290, 0
  br i1 %.not423, label %317, label %291

291:                                              ; preds = %287
  %292 = getelementptr inbounds i8, ptr %288, i64 284
  %293 = load i32, ptr %292, align 4
  %294 = shl i32 %293, 24
  %295 = ashr exact i32 %294, 24
  %296 = getelementptr inbounds i8, ptr %45, i64 19260
  %297 = load i32, ptr %296, align 4, !tbaa !161
  %298 = and i32 %295, %297
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %313

300:                                              ; preds = %291
  %301 = getelementptr inbounds i8, ptr %45, i64 19284
  %302 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %301)
  %303 = fcmp ogt float %302, 0x3EE4F8B580000000
  %.pre614 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %303, label %304, label %._crit_edge

._crit_edge:                                      ; preds = %300
  %.pre615 = load i32, ptr %296, align 4, !tbaa !161
  br label %313

304:                                              ; preds = %300
  %305 = getelementptr inbounds i8, ptr %45, i64 19276
  %306 = getelementptr inbounds i8, ptr %.pre614, i64 288
  %307 = load i64, ptr %305, align 4
  store i64 %307, ptr %306, align 8
  %308 = getelementptr inbounds i8, ptr %.pre614, i64 296
  %309 = load i64, ptr %301, align 4
  store i64 %309, ptr %308, align 8
  %310 = getelementptr inbounds i8, ptr %.pre614, i64 284
  %311 = load i32, ptr %310, align 4
  %312 = and i32 %311, -15
  store i32 %312, ptr %310, align 4
  br label %317

313:                                              ; preds = %._crit_edge, %291
  %314 = phi i32 [ %.pre615, %._crit_edge ], [ %297, %291 ]
  %315 = phi ptr [ %.pre614, %._crit_edge ], [ %288, %291 ]
  %316 = getelementptr inbounds i8, ptr %45, i64 19276
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %315, ptr noundef nonnull align 4 dereferenceable(8) %316, i32 noundef %314)
  br label %317

317:                                              ; preds = %304, %313, %287
  %.0350.shrunk = phi i1 [ true, %304 ], [ %299, %313 ], [ false, %287 ]
  %318 = load i32, ptr %151, align 8, !tbaa !125
  %319 = and i32 %318, 2
  %.not424 = icmp eq i32 %319, 0
  br i1 %.not424, label %359, label %320

320:                                              ; preds = %317
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i64 284
  %323 = load i32, ptr %322, align 4
  %324 = shl i32 %323, 16
  %325 = ashr i32 %324, 24
  %326 = getelementptr inbounds i8, ptr %45, i64 19264
  %327 = load i32, ptr %326, align 8, !tbaa !162
  %328 = and i32 %325, %327
  %.not425 = icmp eq i32 %328, 0
  br i1 %.not425, label %.thread565, label %329

329:                                              ; preds = %320
  %330 = getelementptr inbounds i8, ptr %45, i64 19292
  %331 = load float, ptr %330, align 4, !tbaa !163
  %332 = fcmp ogt float %331, 0.000000e+00
  %333 = getelementptr inbounds i8, ptr %45, i64 19296
  %334 = load float, ptr %333, align 4, !tbaa !164
  %335 = fcmp ogt float %334, 0.000000e+00
  br label %.thread565

.thread565:                                       ; preds = %320, %329
  %336 = phi i1 [ %332, %329 ], [ false, %320 ]
  %337 = phi i1 [ %335, %329 ], [ false, %320 ]
  %338 = getelementptr inbounds i8, ptr %321, i64 28
  %339 = load i32, ptr %338, align 4, !tbaa !127
  %340 = and i32 %339, 4
  %.not427 = icmp ne i32 %340, 0
  %341 = and i32 %323, 1024
  %342 = icmp eq i32 %341, 0
  %or.cond591 = and i1 %342, %.not427
  br i1 %or.cond591, label %343, label %347

343:                                              ; preds = %.thread565
  %344 = getelementptr inbounds i8, ptr %321, i64 104
  %345 = load float, ptr %344, align 8, !tbaa !165
  %346 = getelementptr inbounds i8, ptr %45, i64 19292
  store float %345, ptr %346, align 4, !tbaa !163
  br label %347

347:                                              ; preds = %343, %.thread565
  %348 = and i32 %339, 8
  %.not428 = icmp eq i32 %348, 0
  br i1 %.not428, label %357, label %349

349:                                              ; preds = %347
  %350 = load i32, ptr %322, align 4
  %351 = and i32 %350, 1024
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %353, label %357

353:                                              ; preds = %349
  %354 = getelementptr inbounds i8, ptr %321, i64 108
  %355 = load float, ptr %354, align 4, !tbaa !166
  %356 = getelementptr inbounds i8, ptr %45, i64 19296
  store float %355, ptr %356, align 4, !tbaa !164
  br label %357

357:                                              ; preds = %353, %349, %347
  %358 = getelementptr inbounds i8, ptr %45, i64 19292
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %321, ptr noundef nonnull align 4 dereferenceable(8) %358, i32 noundef %327)
  %.pre616 = load i32, ptr %151, align 8, !tbaa !125
  br label %359

359:                                              ; preds = %357, %317
  %360 = phi i32 [ %.pre616, %357 ], [ %318, %317 ]
  %.0352 = phi i1 [ %337, %357 ], [ false, %317 ]
  %.0351 = phi i1 [ %336, %357 ], [ false, %317 ]
  %361 = and i32 %360, 128
  %.not429 = icmp eq i32 %361, 0
  br i1 %.not429, label %378, label %362

362:                                              ; preds = %359
  %363 = getelementptr inbounds i8, ptr %45, i64 19308
  %364 = load float, ptr %363, align 4, !tbaa !167
  %365 = fcmp ult float %364, 0.000000e+00
  br i1 %365, label %370, label %366

366:                                              ; preds = %362
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i64 208
  store float %364, ptr %368, align 8, !tbaa !168
  %369 = getelementptr inbounds i8, ptr %367, i64 216
  store float 0.000000e+00, ptr %369, align 8, !tbaa !169
  br label %370

370:                                              ; preds = %366, %362
  %371 = getelementptr inbounds i8, ptr %45, i64 19312
  %372 = load float, ptr %371, align 4, !tbaa !170
  %373 = fcmp ult float %372, 0.000000e+00
  br i1 %373, label %378, label %374

374:                                              ; preds = %370
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 212
  store float %372, ptr %376, align 4, !tbaa !171
  %377 = getelementptr inbounds i8, ptr %375, i64 220
  store float 0.000000e+00, ptr %377, align 4, !tbaa !172
  br label %378

378:                                              ; preds = %370, %374, %359
  %379 = and i32 %360, 4
  %.not430 = icmp eq i32 %379, 0
  br i1 %.not430, label %385, label %380

380:                                              ; preds = %378
  %381 = getelementptr inbounds i8, ptr %45, i64 19300
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds i8, ptr %382, i64 128
  %384 = load i64, ptr %381, align 4
  store i64 %384, ptr %383, align 8
  br label %390

385:                                              ; preds = %378
  br i1 %.not402, label %._crit_edge667, label %386

._crit_edge667:                                   ; preds = %385
  %.pre620.pre663.pre.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %390

386:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %387 = load ptr, ptr %4, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 128
  %389 = load i64, ptr %6, align 8
  store i64 %389, ptr %388, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  br label %390

390:                                              ; preds = %._crit_edge667, %386, %380
  %.pre620.pre663.pre = phi ptr [ %.pre620.pre663.pre.pre, %._crit_edge667 ], [ %387, %386 ], [ %382, %380 ]
  %391 = load i32, ptr %151, align 8, !tbaa !125
  %392 = and i32 %391, 2048
  %.not431 = icmp eq i32 %392, 0
  br i1 %.not431, label %396, label %393

393:                                              ; preds = %390
  %394 = getelementptr inbounds i8, ptr %45, i64 19372
  %395 = getelementptr inbounds i8, ptr %.pre620.pre663.pre, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(30) %395, ptr noundef nonnull align 4 dereferenceable(30) %394, i64 30, i1 false), !tbaa.struct !173
  %.pre617 = load i32, ptr %151, align 8, !tbaa !125
  br label %396

396:                                              ; preds = %393, %390
  %397 = phi i32 [ %.pre617, %393 ], [ %391, %390 ]
  %398 = and i32 %397, 8
  %.not432 = icmp eq i32 %398, 0
  br i1 %.not432, label %405, label %399

399:                                              ; preds = %396
  %400 = getelementptr inbounds i8, ptr %45, i64 19321
  %401 = load i8, ptr %400, align 1, !tbaa !175, !range !93, !noundef !94
  %402 = trunc nuw i8 %401 to i1
  %403 = getelementptr inbounds i8, ptr %45, i64 19268
  %404 = load i32, ptr %403, align 4, !tbaa !176
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre620.pre663.pre, i1 noundef zeroext %402, i32 noundef %404)
  %.pre618 = load i32, ptr %151, align 8, !tbaa !125
  %.pre620.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %405

405:                                              ; preds = %399, %396
  %.pre620 = phi ptr [ %.pre620.pre, %399 ], [ %.pre620.pre663.pre, %396 ]
  %406 = phi i32 [ %.pre618, %399 ], [ %397, %396 ]
  %407 = and i32 %406, 32
  %.not433 = icmp eq i32 %407, 0
  br i1 %.not433, label %409, label %408

408:                                              ; preds = %405
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre620, i32 noundef 0)
  %.pre619 = load ptr, ptr %4, align 8, !tbaa !5
  br label %409

409:                                              ; preds = %408, %405
  %410 = phi ptr [ %.pre619, %408 ], [ %.pre620, %405 ]
  %411 = getelementptr inbounds i8, ptr %410, i64 249
  %412 = load i8, ptr %411, align 1, !tbaa !122, !range !93, !noundef !94
  %413 = trunc nuw i8 %412 to i1
  br i1 %413, label %414, label %415

414:                                              ; preds = %409
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %410, i32 noundef 8, i1 noundef zeroext false)
  br label %415

415:                                              ; preds = %414, %409
  store ptr null, ptr %227, align 8, !tbaa !147
  br i1 %.not402, label %1676, label %416

416:                                              ; preds = %415
  %417 = and i32 %.3, 50331648
  %418 = icmp eq i32 %417, 50331648
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 281
  %421 = load i8, ptr %420, align 1, !tbaa !177
  %422 = icmp slt i8 %421, 1
  %423 = getelementptr inbounds i8, ptr %419, i64 243
  store i8 1, ptr %423, align 1, !tbaa !178
  %424 = icmp ne ptr %1, null
  %425 = getelementptr inbounds i8, ptr %419, i64 253
  %426 = zext i1 %424 to i8
  store i8 %426, ptr %425, align 1, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #12
  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)
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 632
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !180
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  %429 = getelementptr inbounds i8, ptr %427, i64 304
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %429, i32 noundef 1)
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds i8, ptr %430, i64 736
  %432 = load ptr, ptr %431, align 8, !tbaa !181
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %432)
  %433 = load ptr, ptr %4, align 8, !tbaa !5
  %434 = getelementptr inbounds i8, ptr %433, i64 496
  store i32 -1, ptr %434, align 8, !tbaa !182
  %435 = and i32 %.3, 536870912
  %.not434 = icmp eq i32 %435, 0
  br i1 %.not434, label %442, label %436

436:                                              ; preds = %416
  %437 = getelementptr inbounds i8, ptr %433, i64 736
  %438 = load ptr, ptr %437, align 8, !tbaa !181
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %438, i32 noundef 2)
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds i8, ptr %439, i64 736
  %441 = load ptr, ptr %440, align 8, !tbaa !181
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %441, i32 noundef 1)
  %.pre621 = load ptr, ptr %4, align 8, !tbaa !5
  br label %442

442:                                              ; preds = %436, %416
  %443 = phi ptr [ %.pre621, %436 ], [ %433, %416 ]
  %444 = getelementptr inbounds i8, ptr %443, i64 1084
  %445 = load i8, ptr %444, align 4, !tbaa !183, !range !93, !noundef !94
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %447, label %448

447:                                              ; preds = %442
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %443)
  %.pre622 = load ptr, ptr %4, align 8, !tbaa !5
  br label %448

448:                                              ; preds = %447, %442
  %449 = phi ptr [ %.pre622, %447 ], [ %443, %442 ]
  %450 = getelementptr inbounds i8, ptr %449, i64 64
  %451 = load ptr, ptr %450, align 8, !tbaa !184
  %.not435 = icmp eq ptr %451, null
  br i1 %.not435, label %456, label %452

452:                                              ; preds = %448
  %453 = getelementptr inbounds i8, ptr %451, i64 96
  %454 = load ptr, ptr %453, align 8, !tbaa !185
  %455 = icmp eq ptr %454, %449
  br i1 %455, label %.critedge509, label %456

456:                                              ; preds = %452, %448
  %457 = getelementptr inbounds i8, ptr %449, i64 1085
  %458 = load i8, ptr %457, align 1
  %459 = trunc i8 %458 to i1
  br i1 %459, label %.critedge509, label %460

460:                                              ; preds = %456
  %461 = getelementptr inbounds i8, ptr %45, i64 20216
  %462 = load ptr, ptr %461, align 8, !tbaa !191
  %.not436 = icmp eq ptr %462, null
  br i1 %.not436, label %.critedge507, label %463

463:                                              ; preds = %460
  %464 = getelementptr inbounds i8, ptr %449, i64 20
  %465 = load i32, ptr %464, align 4, !tbaa !123
  %466 = and i32 %465, 131072
  %467 = icmp ne i32 %466, 0
  %brmerge510 = or i1 %62, %467
  br i1 %brmerge510, label %.critedge507, label %468

.critedge509:                                     ; preds = %452, %456
  br i1 %62, label %.critedge507, label %468

468:                                              ; preds = %463, %.critedge509
  %469 = getelementptr inbounds i8, ptr %449, i64 8
  %470 = load ptr, ptr %469, align 8, !tbaa !192
  %471 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %470) #15
  %.not437 = icmp eq i32 %471, 0
  br i1 %.not437, label %.critedge507, label %472

472:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %473 = getelementptr inbounds i8, ptr %449, i64 176
  %474 = load i32, ptr %473, align 8, !tbaa !193
  %475 = sext i32 %474 to i64
  store i64 %475, ptr %9, align 8, !tbaa !194
  %476 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %470, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %477 = load ptr, ptr %4, align 8, !tbaa !5
  %478 = getelementptr inbounds i8, ptr %477, i64 8
  store ptr %476, ptr %478, align 8, !tbaa !192
  %479 = load i64, ptr %9, align 8, !tbaa !194
  %480 = trunc i64 %479 to i32
  %481 = getelementptr inbounds i8, ptr %477, i64 176
  store i32 %480, ptr %481, align 8, !tbaa !193
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %.critedge507

.critedge507:                                     ; preds = %460, %463, %472, %468, %.critedge509
  %482 = phi ptr [ %449, %460 ], [ %449, %463 ], [ %477, %472 ], [ %449, %468 ], [ %449, %.critedge509 ]
  %483 = getelementptr inbounds i8, ptr %482, i64 112
  %484 = getelementptr inbounds i8, ptr %482, i64 120
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef nonnull %482, ptr noundef nonnull %483, ptr noundef nonnull %484)
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = getelementptr inbounds i8, ptr %485, i64 280
  %487 = load i8, ptr %486, align 8, !tbaa !196
  %488 = icmp sgt i8 %487, 0
  br i1 %488, label %489, label %491

489:                                              ; preds = %.critedge507
  %490 = add nsw i8 %487, -1
  store i8 %490, ptr %486, align 8, !tbaa !196
  br label %491

491:                                              ; preds = %489, %.critedge507
  %492 = getelementptr inbounds i8, ptr %485, i64 281
  %493 = load i8, ptr %492, align 1, !tbaa !177
  %494 = icmp sgt i8 %493, 0
  br i1 %494, label %495, label %497

495:                                              ; preds = %491
  %496 = add nsw i8 %493, -1
  store i8 %496, ptr %492, align 1, !tbaa !177
  br label %497

497:                                              ; preds = %495, %491
  %498 = getelementptr inbounds i8, ptr %485, i64 282
  %499 = load i8, ptr %498, align 2, !tbaa !197
  %500 = icmp sgt i8 %499, 0
  br i1 %500, label %501, label %503

501:                                              ; preds = %497
  %502 = add nsw i8 %499, -1
  store i8 %502, ptr %498, align 2, !tbaa !197
  br label %503

503:                                              ; preds = %501, %497
  %.not611 = xor i1 %62, true
  %504 = select i1 %.0351, i1 %.0352, i1 false
  %or.cond612 = select i1 %.not611, i1 true, i1 %504
  br i1 %or.cond612, label %506, label %505

505:                                              ; preds = %503
  store i8 1, ptr %492, align 1, !tbaa !177
  br label %506

506:                                              ; preds = %505, %503
  %507 = and i32 %.3, 100663296
  %.not438 = icmp ne i32 %507, 0
  %or.cond512.not = select i1 %.0349.in, i1 %.not438, i1 false
  br i1 %or.cond512.not, label %508, label %523

508:                                              ; preds = %506
  store i8 1, ptr %492, align 1, !tbaa !177
  %509 = and i32 %.3, 64
  %.not439 = icmp eq i32 %509, 0
  br i1 %.not439, label %523, label %510

510:                                              ; preds = %508
  br i1 %.0351, label %514, label %511

511:                                              ; preds = %510
  %512 = getelementptr inbounds i8, ptr %485, i64 104
  store float 0.000000e+00, ptr %512, align 8, !tbaa !165
  %513 = getelementptr inbounds i8, ptr %485, i64 96
  store float 0.000000e+00, ptr %513, align 8, !tbaa !198
  br label %514

514:                                              ; preds = %511, %510
  br i1 %.0352, label %518, label %515

515:                                              ; preds = %514
  %516 = getelementptr inbounds i8, ptr %485, i64 108
  store float 0.000000e+00, ptr %516, align 4, !tbaa !166
  %517 = getelementptr inbounds i8, ptr %485, i64 100
  store float 0.000000e+00, ptr %517, align 4, !tbaa !199
  br label %518

518:                                              ; preds = %515, %514
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %519 = load ptr, ptr %4, align 8, !tbaa !5
  %520 = getelementptr inbounds i8, ptr %519, i64 120
  %521 = load i64, ptr %10, align 8
  store i64 %521, ptr %520, align 8
  %522 = getelementptr inbounds i8, ptr %519, i64 112
  store i64 %521, ptr %522, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %523

523:                                              ; preds = %508, %518, %506
  %524 = phi ptr [ %485, %508 ], [ %519, %518 ], [ %485, %506 ]
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef nonnull %524)
  %525 = load ptr, ptr %4, align 8, !tbaa !5
  %526 = getelementptr inbounds i8, ptr %525, i64 64
  %527 = load ptr, ptr %526, align 8, !tbaa !184
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %525, ptr noundef %527)
  %528 = getelementptr inbounds i8, ptr %45, i64 8
  %529 = load i32, ptr %528, align 8, !tbaa !200
  %530 = and i32 %529, 32768
  %.not440 = icmp eq i32 %530, 0
  %.pre623 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not440, label %536, label %531

531:                                              ; preds = %523
  %532 = getelementptr inbounds i8, ptr %.pre623, i64 64
  %533 = load ptr, ptr %532, align 8, !tbaa !184
  %534 = getelementptr inbounds i8, ptr %533, i64 40
  %535 = load float, ptr %534, align 8, !tbaa !201
  br label %536

536:                                              ; preds = %523, %531
  %537 = phi float [ %535, %531 ], [ 1.000000e+00, %523 ]
  %538 = getelementptr inbounds i8, ptr %.pre623, i64 724
  store float %537, ptr %538, align 4, !tbaa !202
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre623)
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds i8, ptr %539, i64 20
  %541 = load i32, ptr %540, align 4, !tbaa !123
  %542 = getelementptr inbounds i8, ptr %539, i64 1085
  %543 = load i8, ptr %542, align 1
  %544 = trunc i8 %543 to i1
  %545 = and i32 %541, 16777216
  %.not441 = icmp eq i32 %545, 0
  %or.cond513 = select i1 %544, i1 true, i1 %.not441
  br i1 %or.cond513, label %546, label %549

546:                                              ; preds = %536
  %547 = and i32 %541, 100663296
  %.not442 = icmp ne i32 %547, 0
  %548 = and i32 %541, 134217728
  %.not443 = icmp eq i32 %548, 0
  %or.cond514 = and i1 %.not442, %.not443
  %.in444.v = select i1 %or.cond514, i64 14896, i64 14860
  br label %549

549:                                              ; preds = %536, %546
  %.in444.v.sink = phi i64 [ %.in444.v, %546 ], [ 14888, %536 ]
  %.in444 = getelementptr inbounds i8, ptr %45, i64 %.in444.v.sink
  %550 = load float, ptr %.in444, align 4, !tbaa !150
  %551 = getelementptr inbounds i8, ptr %539, i64 148
  store float %550, ptr %551, align 4
  %552 = getelementptr inbounds i8, ptr %45, i64 14848
  %553 = getelementptr inbounds i8, ptr %539, i64 136
  %554 = load i64, ptr %552, align 4
  store i64 %554, ptr %553, align 8
  %or.cond515.not = xor i1 %or.cond513, true
  %555 = and i32 %541, 67108864
  %.not446 = icmp eq i32 %555, 0
  %or.cond516 = select i1 %or.cond515.not, i1 %.not446, i1 false
  br i1 %or.cond516, label %556, label %571

556:                                              ; preds = %549
  %557 = getelementptr inbounds i8, ptr %539, i64 28
  %558 = load i32, ptr %557, align 4, !tbaa !127
  %559 = and i32 %558, 2
  %.not447 = icmp eq i32 %559, 0
  %560 = fcmp oeq float %550, 0.000000e+00
  %or.cond681 = select i1 %.not447, i1 %560, i1 false
  br i1 %or.cond681, label %561, label %571

561:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %562 = and i32 %541, 1024
  %.not448 = icmp eq i32 %562, 0
  br i1 %.not448, label %566, label %563

563:                                              ; preds = %561
  %564 = getelementptr inbounds i8, ptr %45, i64 14852
  %565 = load float, ptr %564, align 4, !tbaa !203
  br label %566

566:                                              ; preds = %561, %563
  %567 = phi float [ %565, %563 ], [ 0.000000e+00, %561 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %567)
  %568 = load ptr, ptr %4, align 8, !tbaa !5
  %569 = getelementptr inbounds i8, ptr %568, i64 136
  %570 = load i64, ptr %11, align 8
  store i64 %570, ptr %569, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br label %571

571:                                              ; preds = %566, %556, %549
  %.in673.in = phi i64 [ %570, %566 ], [ %554, %556 ], [ %554, %549 ]
  %.in673 = trunc i64 %.in673.in to i32
  %572 = bitcast i32 %.in673 to float
  %573 = getelementptr inbounds i8, ptr %45, i64 14916
  %574 = load float, ptr %573, align 4, !tbaa !204
  %575 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %572, float noundef %574)
  %576 = getelementptr inbounds i8, ptr %45, i64 19404
  %577 = load float, ptr %576, align 4, !tbaa !205
  %578 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %575, float noundef %577)
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds i8, ptr %579, i64 420
  store float %578, ptr %580, align 4, !tbaa !206
  %581 = getelementptr inbounds i8, ptr %45, i64 19408
  %582 = load float, ptr %581, align 4, !tbaa !207
  %583 = getelementptr inbounds i8, ptr %579, i64 424
  store float %582, ptr %583, align 4, !tbaa !208
  %584 = and i32 %541, 1
  %.not449 = icmp eq i32 %584, 0
  %585 = and i32 %541, 33
  %or.cond517 = icmp eq i32 %585, 0
  br i1 %or.cond517, label %586, label %625

586:                                              ; preds = %571
  %587 = getelementptr inbounds i8, ptr %579, i64 1085
  %588 = load i8, ptr %587, align 1
  %589 = trunc i8 %588 to i1
  br i1 %589, label %625, label %590

590:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #12
  %591 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %579)
  %592 = extractvalue { <2 x float>, <2 x float> } %591, 0
  store <2 x float> %592, ptr %12, align 8
  %593 = getelementptr inbounds i8, ptr %12, i64 8
  %594 = extractvalue { <2 x float>, <2 x float> } %591, 1
  store <2 x float> %594, ptr %593, align 8
  %595 = getelementptr inbounds i8, ptr %45, i64 16712
  %596 = load ptr, ptr %595, align 8, !tbaa !209
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = icmp eq ptr %596, %597
  br i1 %598, label %599, label %615

599:                                              ; preds = %590
  %600 = getelementptr inbounds i8, ptr %45, i64 16784
  %601 = load i32, ptr %600, align 8, !tbaa !210
  %602 = icmp eq i32 %601, 0
  br i1 %602, label %603, label %615

603:                                              ; preds = %599
  %604 = getelementptr inbounds i8, ptr %45, i64 16788
  %605 = load i32, ptr %604, align 4, !tbaa !211
  %606 = icmp eq i32 %605, 0
  br i1 %606, label %607, label %615

607:                                              ; preds = %603
  %608 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %593, i1 noundef zeroext true)
  br i1 %608, label %609, label %._crit_edge624

._crit_edge624:                                   ; preds = %607
  %.pre625 = load ptr, ptr %4, align 8, !tbaa !5
  br label %615

609:                                              ; preds = %607
  %610 = getelementptr inbounds i8, ptr %45, i64 14458
  %611 = load i16, ptr %610, align 2, !tbaa !212
  %612 = icmp eq i16 %611, 2
  %.pre626 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %612, label %613, label %615

613:                                              ; preds = %609
  %614 = getelementptr inbounds i8, ptr %.pre626, i64 247
  store i8 1, ptr %614, align 1, !tbaa !213
  br label %615

615:                                              ; preds = %._crit_edge624, %613, %609, %603, %599, %590
  %616 = phi ptr [ %.pre625, %._crit_edge624 ], [ %.pre626, %613 ], [ %.pre626, %609 ], [ %597, %603 ], [ %597, %599 ], [ %597, %590 ]
  %617 = getelementptr inbounds i8, ptr %616, i64 247
  %618 = load i8, ptr %617, align 1, !tbaa !213, !range !93, !noundef !94
  %619 = trunc nuw i8 %618 to i1
  br i1 %619, label %620, label %624

620:                                              ; preds = %615
  %621 = getelementptr inbounds i8, ptr %616, i64 246
  %622 = load i8, ptr %621, align 2, !tbaa !214, !range !93, !noundef !94
  %623 = xor i8 %622, 1
  store i8 %623, ptr %621, align 2, !tbaa !214
  %.not598.not = icmp ne i8 %622, 0
  %spec.select518 = or i1 %.not598.not, %62
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %616)
  %.pre627.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %624

624:                                              ; preds = %620, %615
  %.pre627 = phi ptr [ %.pre627.pre, %620 ], [ %616, %615 ]
  %.1360 = phi i1 [ %spec.select518, %620 ], [ %62, %615 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  br label %627

625:                                              ; preds = %586, %571
  %626 = getelementptr inbounds i8, ptr %579, i64 246
  store i8 0, ptr %626, align 2, !tbaa !214
  br label %627

627:                                              ; preds = %625, %624
  %628 = phi ptr [ %579, %625 ], [ %.pre627, %624 ]
  %.2361 = phi i1 [ %62, %625 ], [ %.1360, %624 ]
  %629 = getelementptr inbounds i8, ptr %628, i64 247
  store i8 0, ptr %629, align 1, !tbaa !213
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %630 = getelementptr inbounds i8, ptr %628, i64 232
  %631 = load i64, ptr %630, align 8
  store i64 %631, ptr %13, align 8
  %632 = getelementptr inbounds i8, ptr %628, i64 152
  store float 0.000000e+00, ptr %632, align 8, !tbaa !215
  %633 = getelementptr inbounds i8, ptr %628, i64 160
  store float 0.000000e+00, ptr %633, align 8, !tbaa !216
  %634 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %628)
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %635)
  %637 = fadd float %634, %636
  %638 = load ptr, ptr %4, align 8, !tbaa !5
  %639 = getelementptr inbounds i8, ptr %638, i64 156
  store float %637, ptr %639, align 4, !tbaa !217
  %640 = getelementptr inbounds i8, ptr %638, i64 164
  store float 0.000000e+00, ptr %640, align 4, !tbaa !218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %641 = load ptr, ptr %4, align 8, !tbaa !5
  %642 = getelementptr inbounds i8, ptr %641, i64 232
  %643 = load i64, ptr %14, align 8
  store i64 %643, ptr %642, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %644 = getelementptr inbounds i8, ptr %641, i64 120
  %645 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %641, ptr noundef nonnull align 4 dereferenceable(8) %644)
  store <2 x float> %645, ptr %15, align 8
  %646 = and i32 %541, 64
  %.not451.not = icmp eq i32 %646, 0
  %647 = extractelement <2 x float> %645, i64 0
  %648 = extractelement <2 x float> %645, i64 1
  %.pre628 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not451.not, label %659, label %649

649:                                              ; preds = %627
  %650 = getelementptr inbounds i8, ptr %.pre628, i64 246
  %651 = load i8, ptr %650, align 2, !tbaa !214, !range !93, !noundef !94
  %652 = trunc nuw i8 %651 to i1
  br i1 %652, label %659, label %653

653:                                              ; preds = %649
  br i1 %.0351, label %656, label %654

654:                                              ; preds = %653
  %655 = getelementptr inbounds i8, ptr %.pre628, i64 104
  store float %647, ptr %655, align 8, !tbaa !165
  br label %656

656:                                              ; preds = %654, %653
  %.0354 = phi i1 [ %62, %653 ], [ true, %654 ]
  br i1 %.0352, label %708, label %657

657:                                              ; preds = %656
  %658 = getelementptr inbounds i8, ptr %.pre628, i64 108
  store float %648, ptr %658, align 4, !tbaa !166
  br label %708

659:                                              ; preds = %649, %627
  %660 = getelementptr inbounds i8, ptr %.pre628, i64 272
  %661 = load i8, ptr %660, align 8, !tbaa !219
  %662 = icmp sgt i8 %661, 0
  br i1 %662, label %667, label %663

663:                                              ; preds = %659
  %664 = getelementptr inbounds i8, ptr %.pre628, i64 273
  %665 = load i8, ptr %664, align 1, !tbaa !220
  %666 = icmp sgt i8 %665, 0
  br i1 %666, label %.thread567, label %708

667:                                              ; preds = %659
  br i1 %.0351, label %.thread567, label %668

668:                                              ; preds = %667
  %669 = getelementptr inbounds i8, ptr %.pre628, i64 274
  %670 = load i8, ptr %669, align 2, !tbaa !221, !range !93, !noundef !94
  %671 = trunc nuw i8 %670 to i1
  br i1 %671, label %672, label %676

672:                                              ; preds = %668
  %673 = getelementptr inbounds i8, ptr %.pre628, i64 104
  %674 = load float, ptr %673, align 8, !tbaa !165
  %675 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %674, float noundef %647)
  %.pre629 = load ptr, ptr %4, align 8, !tbaa !5
  br label %676

676:                                              ; preds = %668, %672
  %677 = phi ptr [ %.pre629, %672 ], [ %.pre628, %668 ]
  %678 = phi float [ %675, %672 ], [ %647, %668 ]
  %679 = getelementptr inbounds i8, ptr %677, i64 104
  store float %678, ptr %679, align 8, !tbaa !165
  br label %.thread567

.thread567:                                       ; preds = %663, %676, %667
  %680 = phi ptr [ %.pre628, %667 ], [ %677, %676 ], [ %.pre628, %663 ]
  %.1355 = phi i1 [ %62, %667 ], [ true, %676 ], [ %62, %663 ]
  br i1 %.0352, label %702, label %681

681:                                              ; preds = %.thread567
  %682 = getelementptr inbounds i8, ptr %680, i64 273
  %683 = load i8, ptr %682, align 1, !tbaa !220
  %684 = icmp sgt i8 %683, 0
  br i1 %684, label %685, label %702

685:                                              ; preds = %681
  %686 = getelementptr inbounds i8, ptr %680, i64 274
  %687 = load i8, ptr %686, align 2, !tbaa !221, !range !93, !noundef !94
  %688 = trunc nuw i8 %687 to i1
  br i1 %688, label %689, label %695

689:                                              ; preds = %685
  %690 = getelementptr inbounds i8, ptr %680, i64 108
  %691 = load float, ptr %690, align 4, !tbaa !166
  %692 = getelementptr inbounds i8, ptr %15, i64 4
  %693 = load float, ptr %692, align 4, !tbaa !222
  %694 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %691, float noundef %693)
  %.pre630 = load ptr, ptr %4, align 8, !tbaa !5
  br label %698

695:                                              ; preds = %685
  %696 = getelementptr inbounds i8, ptr %15, i64 4
  %697 = load float, ptr %696, align 4, !tbaa !222
  br label %698

698:                                              ; preds = %695, %689
  %699 = phi ptr [ %.pre630, %689 ], [ %680, %695 ]
  %700 = phi float [ %694, %689 ], [ %697, %695 ]
  %701 = getelementptr inbounds i8, ptr %699, i64 108
  store float %700, ptr %701, align 4, !tbaa !166
  br label %702

702:                                              ; preds = %698, %681, %.thread567
  %703 = phi ptr [ %680, %.thread567 ], [ %699, %698 ], [ %680, %681 ]
  %.3362 = phi i1 [ %.2361, %.thread567 ], [ true, %698 ], [ %.2361, %681 ]
  %704 = getelementptr inbounds i8, ptr %703, i64 246
  %705 = load i8, ptr %704, align 2, !tbaa !214, !range !93, !noundef !94
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %708, label %707

707:                                              ; preds = %702
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %703)
  %.pre631 = load ptr, ptr %4, align 8, !tbaa !5
  br label %708

708:                                              ; preds = %663, %707, %702, %656, %657
  %709 = phi ptr [ %703, %702 ], [ %.pre631, %707 ], [ %.pre628, %663 ], [ %.pre628, %656 ], [ %.pre628, %657 ]
  %.4363 = phi i1 [ %.3362, %702 ], [ %.3362, %707 ], [ %.2361, %663 ], [ %.2361, %656 ], [ true, %657 ]
  %.2356 = phi i1 [ %.1355, %702 ], [ %.1355, %707 ], [ %62, %663 ], [ %.0354, %656 ], [ %.0354, %657 ]
  %710 = getelementptr inbounds i8, ptr %709, i64 104
  %711 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %709, ptr noundef nonnull align 4 dereferenceable(8) %710)
  %712 = load ptr, ptr %4, align 8, !tbaa !5
  %713 = getelementptr inbounds i8, ptr %712, i64 104
  store <2 x float> %711, ptr %713, align 8
  %714 = getelementptr inbounds i8, ptr %712, i64 246
  %715 = load i8, ptr %714, align 2, !tbaa !214, !range !93, !noundef !94
  %716 = trunc nuw i8 %715 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #12
  %or.cond519 = select i1 %716, i1 %.not441, i1 false
  br i1 %or.cond519, label %717, label %723

717:                                              ; preds = %708
  %718 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %712)
  %719 = extractvalue { <2 x float>, <2 x float> } %718, 0
  store <2 x float> %719, ptr %16, align 8
  %720 = getelementptr inbounds i8, ptr %16, i64 8
  %721 = extractvalue { <2 x float>, <2 x float> } %718, 1
  store <2 x float> %721, ptr %720, align 8
  %722 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre632 = load ptr, ptr %4, align 8, !tbaa !5
  br label %723

723:                                              ; preds = %708, %717
  %724 = phi ptr [ %.pre632, %717 ], [ %712, %708 ]
  %.sroa.059.0 = phi <2 x float> [ %722, %717 ], [ %711, %708 ]
  %725 = getelementptr inbounds i8, ptr %724, i64 96
  store <2 x float> %.sroa.059.0, ptr %725, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  br i1 %.0349.in, label %726, label %736

726:                                              ; preds = %723
  %727 = getelementptr inbounds i8, ptr %724, i64 276
  store i32 -1, ptr %727, align 4, !tbaa !223
  %728 = and i32 %541, 201326592
  %or.cond520 = icmp ne i32 %728, 67108864
  %brmerge521 = or i1 %.0350.shrunk, %or.cond520
  br i1 %brmerge521, label %736, label %729

729:                                              ; preds = %726
  %730 = getelementptr inbounds i8, ptr %45, i64 19536
  %731 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %730)
  %732 = getelementptr inbounds i8, ptr %731, i64 36
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds i8, ptr %733, i64 88
  %735 = load i64, ptr %732, align 4
  store i64 %735, ptr %734, align 8
  br label %736

736:                                              ; preds = %726, %729, %723
  %737 = phi ptr [ %724, %726 ], [ %733, %729 ], [ %724, %723 ]
  br i1 %.not441, label %752, label %738

738:                                              ; preds = %736
  br i1 %217, label %.critedge4, label %739

739:                                              ; preds = %738
  %740 = getelementptr inbounds i8, ptr %216, i64 243
  %741 = load i8, ptr %740, align 1, !tbaa !178, !range !93, !noundef !94
  %742 = trunc nuw i8 %741 to i1
  br i1 %742, label %743, label %.critedge4

.critedge4:                                       ; preds = %738, %739
  call void @__assert_fail(ptr noundef nonnull @.str.158, ptr noundef nonnull @.str.3, i32 noundef 7122, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

743:                                              ; preds = %739
  %744 = getelementptr inbounds i8, ptr %216, i64 464
  %745 = load i32, ptr %744, align 8, !tbaa !224
  %746 = trunc i32 %745 to i16
  %747 = getelementptr inbounds i8, ptr %737, i64 260
  store i16 %746, ptr %747, align 4, !tbaa !130
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %744, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not456.not = xor i1 %.not446, true
  %brmerge522 = or i1 %.0350.shrunk, %.not456.not
  %brmerge523 = select i1 %brmerge522, i1 true, i1 %418
  %.pre633 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge523, label %752, label %748

748:                                              ; preds = %743
  %749 = getelementptr inbounds i8, ptr %216, i64 320
  %750 = getelementptr inbounds i8, ptr %.pre633, i64 88
  %751 = load i64, ptr %749, align 8
  store i64 %751, ptr %750, align 8
  br label %752

752:                                              ; preds = %743, %748, %736
  %753 = phi ptr [ %.pre633, %743 ], [ %.pre633, %748 ], [ %737, %736 ]
  %754 = getelementptr inbounds i8, ptr %753, i64 288
  %755 = load float, ptr %754, align 8, !tbaa !225
  %756 = fcmp une float %755, 0x47EFFFFFE0000000
  br i1 %756, label %757, label %.critedge525

757:                                              ; preds = %752
  %758 = getelementptr inbounds i8, ptr %753, i64 281
  %759 = load i8, ptr %758, align 1, !tbaa !177
  %760 = icmp eq i8 %759, 0
  br i1 %760, label %761, label %.critedge525

761:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %762 = getelementptr inbounds i8, ptr %753, i64 96
  %763 = getelementptr inbounds i8, ptr %753, i64 296
  %764 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %762, ptr noundef nonnull align 4 dereferenceable(8) %763)
  store <2 x float> %764, ptr %18, align 8
  %765 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %754, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %765, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %753, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  %.pre634 = load ptr, ptr %4, align 8, !tbaa !5
  br label %782

.critedge525:                                     ; preds = %752, %757
  %766 = and i32 %541, 268435456
  %.not457 = icmp eq i32 %766, 0
  br i1 %.not457, label %771, label %767

767:                                              ; preds = %.critedge525
  %768 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %753)
  %769 = load ptr, ptr %4, align 8, !tbaa !5
  %770 = getelementptr inbounds i8, ptr %769, i64 88
  store <2 x float> %768, ptr %770, align 8
  br label %782

771:                                              ; preds = %.critedge525
  %brmerge526 = or i1 %.0350.shrunk, %.not446
  %brmerge528 = select i1 %brmerge526, i1 true, i1 %422
  br i1 %brmerge528, label %776, label %772

772:                                              ; preds = %771
  %773 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %753)
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds i8, ptr %774, i64 88
  store <2 x float> %773, ptr %775, align 8
  br label %782

776:                                              ; preds = %771
  %777 = and i32 %541, 33554432
  %.not459 = icmp eq i32 %777, 0
  %brmerge529 = or i1 %.0350.shrunk, %.not459
  %brmerge530 = select i1 %brmerge529, i1 true, i1 %418
  br i1 %brmerge530, label %782, label %778

778:                                              ; preds = %776
  %779 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %753)
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = getelementptr inbounds i8, ptr %780, i64 88
  store <2 x float> %779, ptr %781, align 8
  br label %782

782:                                              ; preds = %776, %767, %778, %772, %761
  %783 = phi ptr [ %753, %776 ], [ %769, %767 ], [ %780, %778 ], [ %774, %772 ], [ %.pre634, %761 ]
  %784 = getelementptr inbounds i8, ptr %783, i64 84
  %785 = load i32, ptr %784, align 4, !tbaa !226
  %786 = icmp sgt i32 %785, -1
  br i1 %786, label %787, label %826

787:                                              ; preds = %782
  %788 = getelementptr inbounds i8, ptr %783, i64 242
  %789 = load i8, ptr %788, align 2, !tbaa !227, !range !93, !noundef !94
  %790 = trunc nuw i8 %789 to i1
  br i1 %790, label %826, label %791

791:                                              ; preds = %787
  %792 = getelementptr inbounds i8, ptr %783, i64 64
  %793 = load ptr, ptr %792, align 8, !tbaa !184
  %794 = getelementptr inbounds i8, ptr %793, i64 4
  %795 = load i32, ptr %794, align 4, !tbaa !228
  %796 = and i32 %795, 4096
  %.not460 = icmp eq i32 %796, 0
  br i1 %.not460, label %797, label %826

797:                                              ; preds = %791
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #12
  %798 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %793)
  %799 = extractvalue { <2 x float>, <2 x float> } %798, 0
  store <2 x float> %799, ptr %19, align 8
  %800 = getelementptr inbounds i8, ptr %19, i64 8
  %801 = extractvalue { <2 x float>, <2 x float> } %798, 1
  store <2 x float> %801, ptr %800, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #12
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %802)
  %804 = extractvalue { <2 x float>, <2 x float> } %803, 0
  store <2 x float> %804, ptr %20, align 8
  %805 = getelementptr inbounds i8, ptr %20, i64 8
  %806 = extractvalue { <2 x float>, <2 x float> } %803, 1
  store <2 x float> %806, ptr %805, align 8
  %807 = 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) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #12
  %.pre637 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %807, label %826, label %808

808:                                              ; preds = %797
  %809 = getelementptr inbounds i8, ptr %.pre637, i64 16
  %810 = load i32, ptr %809, align 8, !tbaa !98
  %811 = getelementptr inbounds i8, ptr %.pre637, i64 88
  %812 = getelementptr inbounds i8, ptr %.pre637, i64 96
  %813 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %.pre637, i32 noundef %810, ptr noundef nonnull align 4 dereferenceable(8) %811, ptr noundef nonnull align 4 dereferenceable(8) %812, i32 noundef 32)
  %814 = load ptr, ptr %4, align 8, !tbaa !5
  %815 = getelementptr inbounds i8, ptr %814, i64 64
  store ptr %813, ptr %815, align 8, !tbaa !184
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %814, ptr noundef %813)
  %816 = load i32, ptr %528, align 8, !tbaa !200
  %817 = and i32 %816, 32768
  %.not461 = icmp eq i32 %817, 0
  %.pre635 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not461, label %823, label %818

818:                                              ; preds = %808
  %819 = getelementptr inbounds i8, ptr %.pre635, i64 64
  %820 = load ptr, ptr %819, align 8, !tbaa !184
  %821 = getelementptr inbounds i8, ptr %820, i64 40
  %822 = load float, ptr %821, align 8, !tbaa !201
  br label %823

823:                                              ; preds = %808, %818
  %824 = phi float [ %822, %818 ], [ 1.000000e+00, %808 ]
  %825 = getelementptr inbounds i8, ptr %.pre635, i64 724
  store float %824, ptr %825, align 4, !tbaa !202
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre635)
  %.pre636 = load ptr, ptr %4, align 8, !tbaa !5
  br label %826

826:                                              ; preds = %797, %823, %791, %787, %782
  %827 = phi ptr [ %.pre637, %797 ], [ %.pre636, %823 ], [ %783, %791 ], [ %783, %787 ], [ %783, %782 ]
  %828 = getelementptr inbounds i8, ptr %827, i64 242
  %829 = load i8, ptr %828, align 2, !tbaa !227, !range !93, !noundef !94
  %830 = trunc nuw i8 %829 to i1
  br i1 %830, label %831, label %832

831:                                              ; preds = %826
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef nonnull %827, ptr noundef %208)
  %.pre638 = load ptr, ptr %4, align 8, !tbaa !5
  br label %832

832:                                              ; preds = %831, %826
  %833 = phi ptr [ %.pre638, %831 ], [ %827, %826 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #12
  %834 = getelementptr inbounds i8, ptr %833, i64 64
  %835 = load ptr, ptr %834, align 8, !tbaa !184
  %836 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %835)
  %837 = extractvalue { <2 x float>, <2 x float> } %836, 0
  store <2 x float> %837, ptr %21, align 8
  %838 = getelementptr inbounds i8, ptr %21, i64 8
  %839 = extractvalue { <2 x float>, <2 x float> } %836, 1
  store <2 x float> %839, ptr %838, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #12
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  %841 = getelementptr inbounds i8, ptr %840, i64 64
  %842 = load ptr, ptr %841, align 8, !tbaa !184
  %843 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %842)
  %844 = extractvalue { <2 x float>, <2 x float> } %843, 0
  store <2 x float> %844, ptr %22, align 8
  %845 = getelementptr inbounds i8, ptr %22, i64 8
  %846 = extractvalue { <2 x float>, <2 x float> } %843, 1
  store <2 x float> %846, ptr %845, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %847 = getelementptr inbounds i8, ptr %45, i64 15036
  %848 = getelementptr inbounds i8, ptr %45, i64 15044
  %849 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %847, ptr noundef nonnull align 4 dereferenceable(8) %848)
  store <2 x float> %849, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %850 = 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> %850, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #12
  %851 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %845, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %851, 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) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  %.not455.not = xor i1 %.not441, true
  %brmerge531 = or i1 %.0350.shrunk, %.not455.not
  br i1 %brmerge531, label %883, label %852

852:                                              ; preds = %832
  %853 = load ptr, ptr %4, align 8, !tbaa !5
  %854 = getelementptr inbounds i8, ptr %853, i64 242
  %855 = load i8, ptr %854, align 2, !tbaa !227, !range !93, !noundef !94
  %856 = trunc nuw i8 %855 to i1
  br i1 %856, label %863, label %857

857:                                              ; preds = %852
  %858 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %859 = fcmp ogt float %858, 0.000000e+00
  br i1 %859, label %860, label %._crit_edge639

._crit_edge639:                                   ; preds = %857
  %.pre640 = load ptr, ptr %4, align 8, !tbaa !5
  br label %863

860:                                              ; preds = %857
  %861 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %862 = fcmp ogt float %861, 0.000000e+00
  %.pre641 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %862, label %.sink.split, label %863

863:                                              ; preds = %._crit_edge639, %860, %852
  %864 = phi ptr [ %.pre640, %._crit_edge639 ], [ %.pre641, %860 ], [ %853, %852 ]
  %865 = getelementptr inbounds i8, ptr %864, i64 242
  %866 = load i8, ptr %865, align 2, !tbaa !227, !range !93, !noundef !94
  %867 = trunc nuw i8 %866 to i1
  br i1 %867, label %868, label %883

868:                                              ; preds = %863
  %869 = getelementptr inbounds i8, ptr %45, i64 14808
  %870 = load i32, ptr %869, align 8, !tbaa !229
  %871 = icmp sgt i32 %870, 0
  br i1 %871, label %872, label %883

872:                                              ; preds = %868
  %873 = getelementptr inbounds i8, ptr %864, i64 64
  %874 = load ptr, ptr %873, align 8, !tbaa !184
  %875 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %874)
  %876 = getelementptr inbounds i8, ptr %875, i64 16
  %877 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %876, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %877, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %878 = getelementptr inbounds i8, ptr %875, i64 24
  %879 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %876, ptr noundef nonnull align 4 dereferenceable(8) %878)
  store <2 x float> %879, ptr %27, align 8
  %880 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %23)
  %881 = getelementptr inbounds i8, ptr %24, i64 8
  store <2 x float> %880, ptr %881, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %860, %872
  %.pre641.sink = phi ptr [ %882, %872 ], [ %.pre641, %860 ]
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %.pre641.sink, ptr noundef nonnull align 4 dereferenceable(16) %24)
  br label %883

883:                                              ; preds = %.sink.split, %832, %868, %863
  %884 = load ptr, ptr %4, align 8, !tbaa !5
  %885 = getelementptr inbounds i8, ptr %884, i64 88
  %886 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %885)
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds i8, ptr %887, i64 88
  store <2 x float> %886, ptr %888, align 8
  %889 = getelementptr inbounds i8, ptr %887, i64 242
  %890 = load i8, ptr %889, align 2, !tbaa !227, !range !93, !noundef !94
  %891 = trunc nuw i8 %890 to i1
  br i1 %891, label %900, label %892

892:                                              ; preds = %883
  %893 = getelementptr inbounds i8, ptr %887, i64 1085
  %894 = load i8, ptr %893, align 1
  %895 = trunc i8 %894 to i1
  br i1 %895, label %900, label %896

896:                                              ; preds = %892
  %897 = and i32 %541, 201326592
  %or.cond532 = icmp eq i32 %897, 67108864
  %. = select i1 %or.cond532, i64 14892, i64 14856
  %.sink = select i1 %.not441, i64 %., i64 14884
  %898 = getelementptr inbounds i8, ptr %45, i64 %.sink
  %899 = load float, ptr %898, align 4, !tbaa !150
  br label %900

900:                                              ; preds = %883, %892, %896
  %.sink682 = phi float [ %899, %896 ], [ 0.000000e+00, %892 ], [ 0.000000e+00, %883 ]
  %901 = getelementptr inbounds i8, ptr %887, i64 144
  store float %.sink682, ptr %901, align 8, !tbaa !230
  %902 = and i32 %541, 4096
  %.not465 = icmp eq i32 %902, 0
  %or.cond533.not = select i1 %.0349.in, i1 %.not465, i1 false
  %brmerge592.not = select i1 %or.cond533.not, i1 %.not446, i1 false
  br i1 %brmerge592.not, label %903, label %908

903:                                              ; preds = %900
  %904 = getelementptr inbounds i8, ptr %887, i64 1085
  %905 = load i8, ptr %904, align 1
  %906 = trunc i8 %905 to i1
  %or.cond534 = or i1 %.not441, %906
  %907 = and i32 %541, 33554432
  %.not467 = icmp eq i32 %907, 0
  %or.cond535 = select i1 %or.cond534, i1 %.not467, i1 false
  br label %908

908:                                              ; preds = %900, %903
  %.0365 = phi i1 [ %or.cond533.not, %900 ], [ %or.cond535, %903 ]
  %909 = getelementptr inbounds i8, ptr %887, i64 1120
  %910 = load ptr, ptr %909, align 8, !tbaa !134
  %.not468 = icmp eq ptr %910, null
  br i1 %.not468, label %911, label %916

911:                                              ; preds = %908
  %912 = getelementptr inbounds i8, ptr %887, i64 1085
  %913 = load i8, ptr %912, align 1
  %914 = trunc i8 %913 to i1
  %915 = xor i1 %914, true
  br label %916

916:                                              ; preds = %911, %908
  %917 = phi i1 [ true, %908 ], [ %915, %911 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #12
  store i32 -1, ptr %28, align 4, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #12
  store i32 -1, ptr %29, align 4, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %30, i8 0, i64 16, i1 false)
  %918 = getelementptr inbounds i8, ptr %887, i64 20
  %919 = load i32, ptr %918, align 4, !tbaa !123
  %920 = and i32 %919, 16777216
  %.not469 = icmp eq i32 %920, 0
  br i1 %.not469, label %921, label %926

921:                                              ; preds = %916
  %922 = getelementptr inbounds i8, ptr %45, i64 102
  %923 = load i8, ptr %922, align 2, !tbaa !231, !range !93, !noundef !94
  %924 = trunc nuw i8 %923 to i1
  %925 = select i1 %924, i32 2, i32 1
  br label %926

926:                                              ; preds = %916, %921
  %927 = phi i32 [ %925, %921 ], [ 0, %916 ]
  %928 = getelementptr inbounds i8, ptr %45, i64 15992
  %929 = load float, ptr %928, align 8, !tbaa !232
  %930 = fmul float %929, 0x3FF19999A0000000
  %931 = fadd float %.sink682, 1.000000e+00
  %932 = call float @llvm.fmuladd.f32(float %929, float 0x3FC99999A0000000, float %931)
  %933 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %930, float noundef %932)
  %934 = fptosi float %933 to i32
  %935 = sitofp i32 %934 to float
  br i1 %917, label %936, label %946

936:                                              ; preds = %926
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = getelementptr inbounds i8, ptr %937, i64 246
  %939 = load i8, ptr %938, align 2, !tbaa !214, !range !93, !noundef !94
  %940 = trunc nuw i8 %939 to i1
  br i1 %940, label %946, label %941

941:                                              ; preds = %936
  %942 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %937, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %28, ptr noundef nonnull %29, i32 noundef %927, ptr noundef nonnull %30, ptr noundef nonnull align 4 dereferenceable(16) %24)
  %.not470 = icmp eq i32 %942, 0
  br i1 %.not470, label %946, label %943

943:                                              ; preds = %941
  %944 = and i32 %942, 1
  %.not471 = icmp ne i32 %944, 0
  %spec.select536 = or i1 %.not471, %.2356
  %945 = and i32 %942, 2
  %.not472 = icmp ne i32 %945, 0
  %spec.select564 = or i1 %.not472, %.4363
  br label %946

946:                                              ; preds = %943, %941, %936, %926
  %.6 = phi i1 [ %.4363, %936 ], [ %.4363, %926 ], [ %.4363, %941 ], [ %spec.select564, %943 ]
  %.5 = phi i1 [ %.2356, %936 ], [ %.2356, %926 ], [ %.2356, %941 ], [ %spec.select536, %943 ]
  %947 = load i32, ptr %28, align 4, !tbaa !149
  %948 = trunc i32 %947 to i8
  %949 = load ptr, ptr %4, align 8, !tbaa !5
  %950 = getelementptr inbounds i8, ptr %949, i64 254
  store i8 %948, ptr %950, align 2, !tbaa !233
  %951 = load i32, ptr %29, align 4, !tbaa !149
  %952 = trunc i32 %951 to i8
  %953 = getelementptr inbounds i8, ptr %949, i64 255
  store i8 %952, ptr %953, align 1, !tbaa !234
  %954 = getelementptr inbounds i8, ptr %949, i64 242
  %955 = load i8, ptr %954, align 2, !tbaa !227, !range !93, !noundef !94
  %956 = trunc nuw i8 %955 to i1
  br i1 %956, label %957, label %984

957:                                              ; preds = %946
  %958 = getelementptr inbounds i8, ptr %949, i64 64
  %959 = load ptr, ptr %958, align 8, !tbaa !184
  %960 = getelementptr inbounds i8, ptr %959, i64 89
  %961 = load i8, ptr %960, align 1, !tbaa !235, !range !93, !noundef !94
  %962 = trunc nuw i8 %961 to i1
  br i1 %962, label %967, label %963

963:                                              ; preds = %957
  %964 = getelementptr inbounds i8, ptr %949, i64 88
  %965 = getelementptr inbounds i8, ptr %959, i64 8
  %966 = load i64, ptr %964, align 8
  store i64 %966, ptr %965, align 8
  %.pre642 = load ptr, ptr %958, align 8, !tbaa !184
  br label %967

967:                                              ; preds = %963, %957
  %968 = phi ptr [ %.pre642, %963 ], [ %959, %957 ]
  %969 = getelementptr inbounds i8, ptr %968, i64 90
  %970 = load i8, ptr %969, align 2, !tbaa !236, !range !93, !noundef !94
  %971 = trunc nuw i8 %970 to i1
  br i1 %971, label %976, label %972

972:                                              ; preds = %967
  %973 = getelementptr inbounds i8, ptr %949, i64 96
  %974 = getelementptr inbounds i8, ptr %968, i64 16
  %975 = load i64, ptr %973, align 8
  store i64 %975, ptr %974, align 8
  %.pre643 = load ptr, ptr %958, align 8, !tbaa !184
  br label %976

976:                                              ; preds = %972, %967
  %977 = phi ptr [ %.pre643, %972 ], [ %968, %967 ]
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %977)
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds i8, ptr %978, i64 64
  %980 = load ptr, ptr %979, align 8, !tbaa !184
  %981 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %980)
  %982 = extractvalue { <2 x float>, <2 x float> } %981, 0
  %983 = extractvalue { <2 x float>, <2 x float> } %981, 1
  store <2 x float> %982, ptr %21, align 8
  store <2 x float> %983, ptr %838, align 8
  %.pre644 = load ptr, ptr %4, align 8, !tbaa !5
  br label %984

984:                                              ; preds = %976, %946
  %985 = phi ptr [ %.pre644, %976 ], [ %949, %946 ]
  %986 = getelementptr inbounds i8, ptr %985, i64 64
  %987 = load ptr, ptr %986, align 8, !tbaa !184
  %988 = getelementptr inbounds i8, ptr %987, i64 8
  %989 = getelementptr inbounds i8, ptr %985, i64 76
  %990 = load i64, ptr %988, align 8
  store i64 %990, ptr %989, align 4
  %991 = getelementptr inbounds i8, ptr %985, i64 246
  %992 = load i8, ptr %991, align 2, !tbaa !214, !range !93, !noundef !94
  %993 = trunc nuw i8 %992 to i1
  br i1 %993, label %1095, label %994

994:                                              ; preds = %984
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  %995 = getelementptr inbounds i8, ptr %985, i64 104
  %996 = load float, ptr %995, align 8, !tbaa !165
  %997 = getelementptr inbounds i8, ptr %985, i64 108
  %998 = load float, ptr %997, align 4, !tbaa !166
  %999 = getelementptr inbounds i8, ptr %985, i64 156
  %1000 = load float, ptr %999, align 4, !tbaa !217
  %1001 = getelementptr inbounds i8, ptr %985, i64 164
  %1002 = load float, ptr %1001, align 4, !tbaa !218
  %1003 = fadd float %1000, %1002
  %1004 = fsub float %998, %1003
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %996, float noundef %1004)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %1005 = load ptr, ptr %4, align 8, !tbaa !5
  %1006 = getelementptr inbounds i8, ptr %1005, i64 568
  %1007 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1006)
  store <2 x float> %1007, ptr %32, align 8
  %1008 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #12
  br i1 %62, label %1009, label %1010

1009:                                             ; preds = %994
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1016

1010:                                             ; preds = %994
  %1011 = load ptr, ptr %4, align 8, !tbaa !5
  %1012 = getelementptr inbounds i8, ptr %1011, i64 112
  %1013 = getelementptr inbounds i8, ptr %1011, i64 136
  %1014 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1013, float noundef 2.000000e+00)
  store <2 x float> %1014, ptr %34, align 8
  %1015 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1012, ptr noundef nonnull align 4 dereferenceable(8) %34)
  store <2 x float> %1015, ptr %33, align 8
  br label %1016

1016:                                             ; preds = %1010, %1009
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #12
  %1017 = load float, ptr %31, align 4
  %.sroa.035.0.vec.extract = extractelement <2 x float> %1008, i64 0
  %1018 = select i1 %.5, float %1017, float %.sroa.035.0.vec.extract
  %1019 = getelementptr inbounds i8, ptr %31, i64 4
  %1020 = load float, ptr %1019, align 4
  %.sroa.035.4.vec.extract = extractelement <2 x float> %1008, i64 1
  %1021 = select i1 %.6, float %1020, float %.sroa.035.4.vec.extract
  %1022 = and i32 %541, 16384
  %.not473 = icmp eq i32 %1022, 0
  br i1 %.not473, label %1023, label %.thread568

1023:                                             ; preds = %1016
  %1024 = getelementptr inbounds i8, ptr %33, i64 4
  %1025 = load float, ptr %1024, align 4, !tbaa !222
  %1026 = fcmp ogt float %1025, %1021
  %1027 = and i32 %541, 8
  %.not474 = icmp eq i32 %1027, 0
  %1028 = select i1 %1026, i1 %.not474, i1 false
  %1029 = load ptr, ptr %4, align 8, !tbaa !5
  %1030 = getelementptr inbounds i8, ptr %1029, i64 241
  %1031 = zext i1 %1028 to i8
  store i8 %1031, ptr %1030, align 1, !tbaa !237
  %1032 = and i32 %541, 32768
  %.not475 = icmp eq i32 %1032, 0
  br i1 %.not475, label %1038, label %.thread573

.thread568:                                       ; preds = %1016
  %1033 = load ptr, ptr %4, align 8, !tbaa !5
  %1034 = getelementptr inbounds i8, ptr %1033, i64 241
  store i8 1, ptr %1034, align 1, !tbaa !237
  %1035 = and i32 %541, 32768
  %.not475569 = icmp eq i32 %1035, 0
  br i1 %.not475569, label %.thread570, label %.thread573.thread

.thread573.thread:                                ; preds = %.thread568
  %1036 = getelementptr inbounds i8, ptr %1033, i64 240
  store i8 1, ptr %1036, align 8, !tbaa !238
  br label %.thread680

.thread570:                                       ; preds = %.thread568
  %1037 = load float, ptr %33, align 8, !tbaa !239
  %.pre671 = and i32 %541, 8
  br label %1040

1038:                                             ; preds = %1023
  %1039 = load float, ptr %33, align 8, !tbaa !239
  br i1 %1028, label %1040, label %1046

1040:                                             ; preds = %.thread570, %1038
  %.pre669.pre-phi = phi i32 [ %.pre671, %.thread570 ], [ 0, %1038 ]
  %1041 = phi float [ %1037, %.thread570 ], [ %1039, %1038 ]
  %1042 = phi ptr [ %1033, %.thread570 ], [ %1029, %1038 ]
  %1043 = phi ptr [ %1034, %.thread570 ], [ %1030, %1038 ]
  %1044 = getelementptr inbounds i8, ptr %45, i64 14956
  %1045 = load float, ptr %1044, align 4, !tbaa !240
  br label %1046

1046:                                             ; preds = %1038, %1040
  %.pre-phi = phi i32 [ %1027, %1038 ], [ %.pre669.pre-phi, %1040 ]
  %1047 = phi i8 [ 0, %1038 ], [ 1, %1040 ]
  %1048 = phi float [ %1039, %1038 ], [ %1041, %1040 ]
  %1049 = phi i1 [ false, %1038 ], [ true, %1040 ]
  %1050 = phi ptr [ %1029, %1038 ], [ %1042, %1040 ]
  %1051 = phi ptr [ %1030, %1038 ], [ %1043, %1040 ]
  %1052 = phi float [ 0.000000e+00, %1038 ], [ %1045, %1040 ]
  %1053 = fsub float %1018, %1052
  %1054 = fcmp ogt float %1048, %1053
  %.not476 = icmp eq i32 %.pre-phi, 0
  %or.cond537 = select i1 %1054, i1 %.not476, i1 false
  br i1 %or.cond537, label %1057, label %.thread574

.thread574:                                       ; preds = %1046
  %1055 = getelementptr inbounds i8, ptr %1050, i64 240
  store i8 0, ptr %1055, align 8, !tbaa !238
  br label %1069

.thread573:                                       ; preds = %1023
  %1056 = getelementptr inbounds i8, ptr %1029, i64 240
  store i8 1, ptr %1056, align 8, !tbaa !238
  br i1 %1028, label %.thread680, label %1061

1057:                                             ; preds = %1046
  %1058 = and i32 %541, 2048
  %.not599 = icmp eq i32 %1058, 0
  %1059 = getelementptr inbounds i8, ptr %1050, i64 240
  %.lobit = lshr exact i32 %1058, 11
  %1060 = trunc nuw nsw i32 %.lobit to i8
  store i8 %1060, ptr %1059, align 8, !tbaa !238
  %brmerge594 = or i1 %.not599, %1049
  %not..not599 = xor i1 %.not599, true
  br i1 %brmerge594, label %1069, label %._crit_edge645

._crit_edge645:                                   ; preds = %1057
  %.phi.trans.insert = getelementptr inbounds i8, ptr %33, i64 4
  %.pre646 = load float, ptr %.phi.trans.insert, align 4, !tbaa !222
  br label %1061

1061:                                             ; preds = %._crit_edge645, %.thread573
  %.pre-phi670 = phi i32 [ 0, %._crit_edge645 ], [ %1027, %.thread573 ]
  %1062 = phi float [ %.pre646, %._crit_edge645 ], [ %1025, %.thread573 ]
  %1063 = phi ptr [ %1051, %._crit_edge645 ], [ %1030, %.thread573 ]
  %1064 = fcmp ogt float %1062, %1021
  %.not477 = icmp eq i32 %.pre-phi670, 0
  %1065 = select i1 %1064, i1 %.not477, i1 false
  %1066 = zext i1 %1065 to i8
  store i8 %1066, ptr %1063, align 1, !tbaa !237
  br label %1069

.thread680:                                       ; preds = %.thread573.thread, %.thread573
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  %1067 = getelementptr inbounds i8, ptr %45, i64 14956
  %1068 = load float, ptr %1067, align 4, !tbaa !240
  br label %1077

1069:                                             ; preds = %1057, %.thread574, %1061
  %1070 = phi i8 [ %1066, %1061 ], [ %1047, %1057 ], [ %1047, %.thread574 ]
  %1071 = phi i1 [ true, %1061 ], [ %not..not599, %1057 ], [ false, %.thread574 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  %1072 = trunc nuw i8 %1070 to i1
  br i1 %1072, label %1073, label %1076

1073:                                             ; preds = %1069
  %1074 = getelementptr inbounds i8, ptr %45, i64 14956
  %1075 = load float, ptr %1074, align 4, !tbaa !240
  br i1 %1071, label %1077, label %1081

1076:                                             ; preds = %1069
  br i1 %1071, label %1077, label %1081

1077:                                             ; preds = %.thread680, %1073, %1076
  %1078 = phi float [ %1075, %1073 ], [ 0.000000e+00, %1076 ], [ %1068, %.thread680 ]
  %1079 = getelementptr inbounds i8, ptr %45, i64 14956
  %1080 = load float, ptr %1079, align 4, !tbaa !240
  br label %1081

1081:                                             ; preds = %1073, %1076, %1077
  %1082 = phi float [ %1078, %1077 ], [ 0.000000e+00, %1076 ], [ %1075, %1073 ]
  %1083 = phi float [ %1080, %1077 ], [ 0.000000e+00, %1076 ], [ 0.000000e+00, %1073 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1082, float noundef %1083)
  %1084 = load ptr, ptr %4, align 8, !tbaa !5
  %1085 = getelementptr inbounds i8, ptr %1084, i64 232
  %1086 = load i64, ptr %35, align 8
  store i64 %1086, ptr %1085, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  %1087 = getelementptr inbounds i8, ptr %1084, i64 160
  %1088 = lshr i64 %1086, 32
  %1089 = insertelement <2 x i64> poison, i64 %1086, i64 0
  %1090 = insertelement <2 x i64> %1089, i64 %1088, i64 1
  %1091 = trunc <2 x i64> %1090 to <2 x i32>
  %1092 = bitcast <2 x i32> %1091 to <2 x float>
  %1093 = load <2 x float>, ptr %1087, align 8, !tbaa !150
  %1094 = fadd <2 x float> %1093, %1092
  store <2 x float> %1094, ptr %1087, align 8, !tbaa !150
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  br label %1095

1095:                                             ; preds = %1081, %984
  %1096 = phi ptr [ %1084, %1081 ], [ %985, %984 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #12
  %or.cond539 = select i1 %.not455.not, i1 %.not446, i1 false
  %1097 = getelementptr inbounds i8, ptr %216, i64 632
  %spec.select540 = select i1 %418, ptr %21, ptr %1097
  %1098 = select i1 %or.cond539, ptr %spec.select540, ptr %21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %1098, i64 16, i1 false), !tbaa.struct !180
  %1099 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1096)
  %1100 = extractvalue { <2 x float>, <2 x float> } %1099, 0
  %1101 = extractvalue { <2 x float>, <2 x float> } %1099, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #12
  %1102 = load ptr, ptr %4, align 8, !tbaa !5
  %1103 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1102)
  %1104 = extractvalue { <2 x float>, <2 x float> } %1103, 0
  store <2 x float> %1104, ptr %37, align 8
  %1105 = getelementptr inbounds i8, ptr %37, i64 8
  %1106 = extractvalue { <2 x float>, <2 x float> } %1103, 1
  store <2 x float> %1106, ptr %1105, align 8
  %1107 = load ptr, ptr %4, align 8, !tbaa !5
  %1108 = getelementptr inbounds i8, ptr %1107, i64 552
  store <2 x float> %1100, ptr %1108, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1107, i64 560
  store <2 x float> %1101, ptr %.sroa.4.0..sroa_idx, align 8
  %1109 = getelementptr inbounds i8, ptr %1107, i64 1085
  %1110 = load i8, ptr %1109, align 1
  %1111 = trunc i8 %1110 to i1
  br i1 %1111, label %1112, label %1118

1112:                                             ; preds = %1095
  %1113 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152) %1107)
  %1114 = load ptr, ptr %4, align 8, !tbaa !5
  %1115 = getelementptr inbounds i8, ptr %1114, i64 556
  %1116 = load float, ptr %1115, align 4, !tbaa !241
  %1117 = fadd float %1113, %1116
  store float %1117, ptr %1115, align 4, !tbaa !241
  br label %1118

1118:                                             ; preds = %1112, %1095
  %1119 = phi ptr [ %1114, %1112 ], [ %1107, %1095 ]
  %1120 = getelementptr inbounds i8, ptr %1119, i64 552
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1120, ptr noundef nonnull align 4 dereferenceable(16) %36)
  %1121 = load ptr, ptr %4, align 8
  %1122 = getelementptr inbounds i8, ptr %1121, i64 88
  %1123 = getelementptr inbounds i8, ptr %1121, i64 152
  %1124 = getelementptr inbounds i8, ptr %1121, i64 568
  %1125 = getelementptr inbounds i8, ptr %1121, i64 96
  %1126 = load <2 x float>, ptr %1122, align 8, !tbaa !150
  %1127 = load <2 x float>, ptr %1125, align 8, !tbaa !150
  %1128 = fadd <2 x float> %1126, %1127
  %1129 = load <4 x float>, ptr %1123, align 8, !tbaa !150
  %1130 = shufflevector <2 x float> %1126, <2 x float> %1128, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %1131 = fadd <4 x float> %1130, %1129
  %1132 = fsub <4 x float> %1130, %1129
  %1133 = shufflevector <4 x float> %1131, <4 x float> %1132, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %1133, ptr %1124, align 8, !tbaa !150
  %1134 = and i32 %541, 1025
  %brmerge541.not = icmp eq i32 %1134, 1
  %1135 = getelementptr inbounds i8, ptr %45, i64 14912
  %1136 = getelementptr inbounds i8, ptr %1121, i64 148
  %.in480 = select i1 %brmerge541.not, ptr %1136, ptr %1135
  %1137 = load float, ptr %.in480, align 4, !tbaa !150
  %1138 = extractelement <4 x float> %1131, i64 0
  %1139 = fadd float %1138, 5.000000e-01
  %1140 = getelementptr inbounds i8, ptr %1121, i64 136
  %1141 = load float, ptr %1140, align 8, !tbaa !242
  %1142 = fmul float %1141, 5.000000e-01
  %1143 = call noundef float @_ZL7ImTruncf(float noundef %1142)
  %1144 = load ptr, ptr %4, align 8, !tbaa !5
  %1145 = getelementptr inbounds i8, ptr %1144, i64 148
  %1146 = load float, ptr %1145, align 4, !tbaa !243
  %1147 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1143, float noundef %1146)
  %1148 = fadd float %1139, %1147
  %1149 = call noundef float @_ZL7ImFloorf(float noundef %1148)
  %1150 = load ptr, ptr %4, align 8, !tbaa !5
  %1151 = getelementptr inbounds i8, ptr %1150, i64 584
  store float %1149, ptr %1151, align 8, !tbaa !244
  %1152 = getelementptr inbounds i8, ptr %1150, i64 572
  %1153 = load float, ptr %1152, align 4, !tbaa !245
  %1154 = fadd float %1153, 5.000000e-01
  %1155 = fadd float %1137, %1154
  %1156 = call noundef float @_ZL7ImFloorf(float noundef %1155)
  %1157 = load ptr, ptr %4, align 8, !tbaa !5
  %1158 = getelementptr inbounds i8, ptr %1157, i64 588
  store float %1156, ptr %1158, align 4, !tbaa !246
  %1159 = getelementptr inbounds i8, ptr %1157, i64 576
  %1160 = load float, ptr %1159, align 8, !tbaa !247
  %1161 = fadd float %1160, 5.000000e-01
  %1162 = getelementptr inbounds i8, ptr %1157, i64 136
  %1163 = load float, ptr %1162, align 8, !tbaa !242
  %1164 = fmul float %1163, 5.000000e-01
  %1165 = call noundef float @_ZL7ImTruncf(float noundef %1164)
  %1166 = load ptr, ptr %4, align 8, !tbaa !5
  %1167 = getelementptr inbounds i8, ptr %1166, i64 148
  %1168 = load float, ptr %1167, align 4, !tbaa !243
  %1169 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1165, float noundef %1168)
  %1170 = fsub float %1161, %1169
  %1171 = call noundef float @_ZL7ImFloorf(float noundef %1170)
  %1172 = load ptr, ptr %4, align 8, !tbaa !5
  %1173 = getelementptr inbounds i8, ptr %1172, i64 592
  store float %1171, ptr %1173, align 8, !tbaa !248
  %1174 = getelementptr inbounds i8, ptr %1172, i64 580
  %1175 = load float, ptr %1174, align 4, !tbaa !249
  %1176 = fadd float %1175, 5.000000e-01
  %1177 = getelementptr inbounds i8, ptr %1172, i64 148
  %1178 = load float, ptr %1177, align 4, !tbaa !243
  %1179 = fsub float %1176, %1178
  %1180 = call noundef float @_ZL7ImFloorf(float noundef %1179)
  %1181 = load ptr, ptr %4, align 8, !tbaa !5
  %1182 = getelementptr inbounds i8, ptr %1181, i64 596
  store float %1180, ptr %1182, align 4, !tbaa !250
  %1183 = getelementptr inbounds i8, ptr %1181, i64 584
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1183, ptr noundef nonnull align 4 dereferenceable(16) %36)
  %1184 = load ptr, ptr %4, align 8, !tbaa !5
  %1185 = getelementptr inbounds i8, ptr %1184, i64 96
  %1186 = load float, ptr %1185, align 8, !tbaa !198
  %1187 = fcmp ule float %1186, 0.000000e+00
  %1188 = and i32 %541, 33554496
  %1189 = icmp ne i32 %1188, 0
  %brmerge543 = select i1 %1187, i1 true, i1 %1189
  br i1 %brmerge543, label %1192, label %1190

1190:                                             ; preds = %1118
  %1191 = fmul float %1186, 0x3FE4CCCCC0000000
  br label %1195

1192:                                             ; preds = %1118
  %1193 = load float, ptr %928, align 8, !tbaa !232
  %1194 = fmul float %1193, 1.600000e+01
  br label %1195

1195:                                             ; preds = %1192, %1190
  %.sink687 = phi float [ %1194, %1192 ], [ %1191, %1190 ]
  %1196 = call noundef float @_ZL7ImTruncf(float noundef %.sink687)
  %.sink686 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds i8, ptr %.sink686, i64 684
  store float %1196, ptr %1197, align 4, !tbaa !251
  %1198 = getelementptr inbounds i8, ptr %.sink686, i64 112
  %1199 = load float, ptr %1198, align 8, !tbaa !252
  %1200 = getelementptr inbounds i8, ptr %.sink686, i64 136
  %1201 = load float, ptr %1200, align 8, !tbaa !242
  %1202 = call float @llvm.fmuladd.f32(float %1201, float 2.000000e+00, float %1199)
  %1203 = getelementptr inbounds i8, ptr %.sink686, i64 568
  %1204 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1203)
  %1205 = fsub float %1202, %1204
  %1206 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1205)
  %1207 = load ptr, ptr %4, align 8, !tbaa !5
  %1208 = getelementptr inbounds i8, ptr %1207, i64 200
  store float %1206, ptr %1208, align 8, !tbaa !253
  %1209 = getelementptr inbounds i8, ptr %1207, i64 116
  %1210 = load float, ptr %1209, align 4, !tbaa !254
  %1211 = getelementptr inbounds i8, ptr %1207, i64 140
  %1212 = load float, ptr %1211, align 4, !tbaa !255
  %1213 = call float @llvm.fmuladd.f32(float %1212, float 2.000000e+00, float %1210)
  %1214 = getelementptr inbounds i8, ptr %1207, i64 568
  %1215 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1214)
  %1216 = fsub float %1213, %1215
  %1217 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1216)
  %1218 = load ptr, ptr %4, align 8, !tbaa !5
  %1219 = getelementptr inbounds i8, ptr %1218, i64 204
  store float %1217, ptr %1219, align 4, !tbaa !256
  %1220 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1218)
  %1221 = load ptr, ptr %4, align 8, !tbaa !5
  %1222 = getelementptr inbounds i8, ptr %1221, i64 192
  store <2 x float> %1220, ptr %1222, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds i8, ptr %1223, i64 208
  %1225 = load i64, ptr %38, align 8
  store i64 %1225, ptr %1224, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  %1226 = getelementptr inbounds i8, ptr %1223, i64 168
  store <2 x float> zeroinitializer, ptr %1226, align 8, !tbaa !150
  %1227 = getelementptr inbounds i8, ptr %1223, i64 736
  %1228 = load ptr, ptr %1227, align 8, !tbaa !181
  %1229 = load i32, ptr %1228, align 8, !tbaa !257
  %1230 = icmp eq i32 %1229, 1
  br i1 %1230, label %1231, label %.critedge6

1231:                                             ; preds = %1195
  %1232 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1228, i32 noundef 0)
  %1233 = getelementptr inbounds i8, ptr %1232, i64 32
  %1234 = load i32, ptr %1233, align 8, !tbaa !258
  %1235 = icmp eq i32 %1234, 0
  br i1 %1235, label %1236, label %.critedge6

.critedge6:                                       ; preds = %1195, %1231
  call void @__assert_fail(ptr noundef nonnull @.str.159, ptr noundef nonnull @.str.3, i32 noundef 7339, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1236:                                             ; preds = %1231
  %1237 = load ptr, ptr %4, align 8, !tbaa !5
  %1238 = getelementptr inbounds i8, ptr %1237, i64 736
  %1239 = load ptr, ptr %1238, align 8, !tbaa !181
  %1240 = getelementptr inbounds i8, ptr %45, i64 15984
  %1241 = load ptr, ptr %1240, align 8, !tbaa !260
  %1242 = getelementptr inbounds i8, ptr %1241, i64 64
  %1243 = load ptr, ptr %1242, align 8, !tbaa !261
  %1244 = getelementptr inbounds i8, ptr %1243, i64 8
  %1245 = load ptr, ptr %1244, align 8, !tbaa !262
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1239, ptr noundef %1245)
  %1246 = getelementptr inbounds i8, ptr %36, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %1246, i1 noundef zeroext false)
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = getelementptr inbounds i8, ptr %1247, i64 1085
  %1249 = load i8, ptr %1248, align 1
  %1250 = trunc i8 %1249 to i1
  %1251 = and i8 %1249, 4
  %1252 = icmp eq i8 %1251, 0
  %.not603 = and i1 %1252, %1250
  br i1 %.not603, label %1318, label %1253

1253:                                             ; preds = %1236
  %or.cond545.not = xor i1 %or.cond539, true
  %brmerge546 = select i1 %or.cond545.not, i1 true, i1 %418
  br i1 %brmerge546, label %.thread578, label %1254

1254:                                             ; preds = %1253
  %1255 = getelementptr inbounds i8, ptr %216, i64 464
  %1256 = load i32, ptr %1255, align 8, !tbaa !224
  %1257 = icmp sgt i32 %1256, 1
  br i1 %1257, label %1258, label %.thread575

.thread575:                                       ; preds = %1254
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #12
  br label %1273

1258:                                             ; preds = %1254
  %1259 = add nsw i32 %1256, -2
  %1260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1255, i32 noundef %1259)
  %1261 = load ptr, ptr %1260, align 8, !tbaa !5
  %.not483 = icmp eq ptr %1261, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #12
  br i1 %.not483, label %1273, label %1262

1262:                                             ; preds = %1258
  %1263 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1261)
  %1264 = extractvalue { <2 x float>, <2 x float> } %1263, 0
  store <2 x float> %1264, ptr %39, align 8
  %1265 = getelementptr inbounds i8, ptr %39, i64 8
  %1266 = extractvalue { <2 x float>, <2 x float> } %1263, 1
  store <2 x float> %1266, ptr %1265, align 8
  %1267 = load ptr, ptr %4, align 8, !tbaa !5
  %1268 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1152) %1267)
  %1269 = extractvalue { <2 x float>, <2 x float> } %1268, 0
  store <2 x float> %1269, ptr %40, align 8
  %1270 = getelementptr inbounds i8, ptr %40, i64 8
  %1271 = extractvalue { <2 x float>, <2 x float> } %1268, 1
  store <2 x float> %1271, ptr %1270, align 8
  %1272 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %40)
  br label %1273

1273:                                             ; preds = %.thread575, %1258, %1262
  %1274 = phi i1 [ %1272, %1262 ], [ false, %1258 ], [ false, %.thread575 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #12
  %1275 = getelementptr inbounds i8, ptr %216, i64 736
  %1276 = load ptr, ptr %1275, align 8, !tbaa !181
  %1277 = getelementptr inbounds i8, ptr %1276, i64 32
  %1278 = load i32, ptr %1277, align 8, !tbaa !266
  %1279 = load ptr, ptr %4, align 8, !tbaa !5
  %1280 = getelementptr inbounds i8, ptr %1279, i64 736
  %1281 = load ptr, ptr %1280, align 8, !tbaa !181
  %1282 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1281)
  %1283 = getelementptr inbounds i8, ptr %1282, i64 32
  %1284 = load i32, ptr %1283, align 8, !tbaa !258
  %1285 = icmp ne i32 %1284, 0
  %1286 = icmp eq i32 %1278, 0
  %or.cond547.not606.not609 = select i1 %1285, i1 true, i1 %1286
  %or.cond596.not = or i1 %1274, %or.cond547.not606.not609
  br i1 %or.cond596.not, label %.thread578, label %1287

1287:                                             ; preds = %1273
  %1288 = load ptr, ptr %1275, align 8, !tbaa !181
  %1289 = load ptr, ptr %4, align 8, !tbaa !5
  %1290 = getelementptr inbounds i8, ptr %1289, i64 736
  store ptr %1288, ptr %1290, align 8, !tbaa !181
  br label %.thread578

.thread578:                                       ; preds = %1273, %1253, %1287
  %.1367580 = phi i1 [ true, %1287 ], [ false, %1253 ], [ false, %1273 ]
  %1291 = getelementptr inbounds i8, ptr %45, i64 20200
  %1292 = load ptr, ptr %1291, align 8, !tbaa !267
  %.not484 = icmp eq ptr %1292, null
  br i1 %.not484, label %1293, label %1296

1293:                                             ; preds = %.thread578
  %1294 = getelementptr inbounds i8, ptr %45, i64 19696
  %1295 = load ptr, ptr %1294, align 8, !tbaa !268
  br label %1296

1296:                                             ; preds = %.thread578, %1293
  %1297 = phi ptr [ %1295, %1293 ], [ %1292, %.thread578 ]
  br i1 %.0365, label %._crit_edge647, label %1298

._crit_edge647:                                   ; preds = %1296
  %.pre648 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1312

1298:                                             ; preds = %1296
  %.not485 = icmp eq ptr %1297, null
  %.pre649 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not485, label %1312, label %1299

1299:                                             ; preds = %1298
  %1300 = getelementptr inbounds i8, ptr %.pre649, i64 984
  %1301 = load ptr, ptr %1300, align 8, !tbaa !269
  %1302 = getelementptr inbounds i8, ptr %1297, i64 984
  %1303 = load ptr, ptr %1302, align 8, !tbaa !269
  %1304 = icmp eq ptr %1301, %1303
  br i1 %1304, label %1312, label %1305

1305:                                             ; preds = %1299
  %1306 = getelementptr inbounds i8, ptr %.pre649, i64 1112
  %1307 = load ptr, ptr %1306, align 8, !tbaa !133
  %.not486 = icmp eq ptr %1307, null
  br i1 %.not486, label %1312, label %1308

1308:                                             ; preds = %1305
  %1309 = getelementptr inbounds i8, ptr %1297, i64 1112
  %1310 = load ptr, ptr %1309, align 8, !tbaa !133
  %1311 = icmp eq ptr %1307, %1310
  br label %1312

1312:                                             ; preds = %._crit_edge647, %1298, %1305, %1308, %1299
  %1313 = phi ptr [ %.pre648, %._crit_edge647 ], [ %.pre649, %1298 ], [ %.pre649, %1299 ], [ %.pre649, %1305 ], [ %.pre649, %1308 ]
  %1314 = phi i1 [ true, %._crit_edge647 ], [ false, %1298 ], [ true, %1299 ], [ false, %1305 ], [ %1311, %1308 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1313, ptr noundef nonnull align 4 dereferenceable(16) %37, i1 noundef zeroext %1314, i1 noundef zeroext %917, i32 noundef %927, ptr noundef nonnull %30, float noundef %935)
  %.pre650 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1367580, label %1315, label %1318

1315:                                             ; preds = %1312
  %1316 = getelementptr inbounds i8, ptr %.pre650, i64 744
  %1317 = getelementptr inbounds i8, ptr %.pre650, i64 736
  store ptr %1316, ptr %1317, align 8, !tbaa !181
  br label %1318

1318:                                             ; preds = %1312, %1315, %1236
  %1319 = phi ptr [ %.pre650, %1312 ], [ %.pre650, %1315 ], [ %1247, %1236 ]
  %1320 = and i32 %541, 8
  %.not487 = icmp eq i32 %1320, 0
  %1321 = getelementptr inbounds i8, ptr %1319, i64 128
  %1322 = load float, ptr %1321, align 8, !tbaa !270
  %1323 = fcmp une float %1322, 0.000000e+00
  br i1 %1323, label %1345, label %1324

1324:                                             ; preds = %1318
  %1325 = and i32 %541, 2056
  %1326 = icmp eq i32 %1325, 2048
  br i1 %1326, label %1327, label %1330

1327:                                             ; preds = %1324
  %1328 = getelementptr inbounds i8, ptr %1319, i64 112
  %1329 = load float, ptr %1328, align 8, !tbaa !252
  br label %1330

1330:                                             ; preds = %1324, %1327
  %1331 = phi float [ %1329, %1327 ], [ 0.000000e+00, %1324 ]
  %1332 = getelementptr inbounds i8, ptr %1319, i64 96
  %1333 = load float, ptr %1332, align 8, !tbaa !198
  %1334 = getelementptr inbounds i8, ptr %1319, i64 136
  %1335 = load float, ptr %1334, align 8, !tbaa !242
  %1336 = fneg float %1335
  %1337 = call float @llvm.fmuladd.f32(float %1336, float 2.000000e+00, float %1333)
  %1338 = getelementptr inbounds i8, ptr %1319, i64 152
  %1339 = load float, ptr %1338, align 8, !tbaa !215
  %1340 = getelementptr inbounds i8, ptr %1319, i64 160
  %1341 = load float, ptr %1340, align 8, !tbaa !216
  %1342 = fadd float %1339, %1341
  %1343 = fsub float %1337, %1342
  %1344 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1331, float noundef %1343)
  %.pre651 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1345

1345:                                             ; preds = %1318, %1330
  %1346 = phi ptr [ %.pre651, %1330 ], [ %1319, %1318 ]
  %1347 = phi float [ %1344, %1330 ], [ %1322, %1318 ]
  %1348 = getelementptr inbounds i8, ptr %1346, i64 132
  %1349 = load float, ptr %1348, align 4, !tbaa !271
  %1350 = fcmp une float %1349, 0.000000e+00
  br i1 %1350, label %1370, label %1351

1351:                                             ; preds = %1345
  br i1 %.not487, label %1352, label %1355

1352:                                             ; preds = %1351
  %1353 = getelementptr inbounds i8, ptr %1346, i64 116
  %1354 = load float, ptr %1353, align 4, !tbaa !254
  br label %1355

1355:                                             ; preds = %1351, %1352
  %1356 = phi float [ %1354, %1352 ], [ 0.000000e+00, %1351 ]
  %1357 = getelementptr inbounds i8, ptr %1346, i64 100
  %1358 = load float, ptr %1357, align 4, !tbaa !199
  %1359 = getelementptr inbounds i8, ptr %1346, i64 140
  %1360 = load float, ptr %1359, align 4, !tbaa !255
  %1361 = fneg float %1360
  %1362 = call float @llvm.fmuladd.f32(float %1361, float 2.000000e+00, float %1358)
  %1363 = getelementptr inbounds i8, ptr %1346, i64 156
  %1364 = load float, ptr %1363, align 4, !tbaa !217
  %1365 = getelementptr inbounds i8, ptr %1346, i64 164
  %1366 = load float, ptr %1365, align 4, !tbaa !218
  %1367 = fadd float %1364, %1366
  %1368 = fsub float %1362, %1367
  %1369 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1356, float noundef %1368)
  %.pre652 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1370

1370:                                             ; preds = %1345, %1355
  %1371 = phi ptr [ %.pre652, %1355 ], [ %1346, %1345 ]
  %1372 = phi float [ %1369, %1355 ], [ %1349, %1345 ]
  %1373 = getelementptr inbounds i8, ptr %1371, i64 568
  %1374 = load float, ptr %1373, align 8, !tbaa !272
  %1375 = getelementptr inbounds i8, ptr %1371, i64 192
  %1376 = load float, ptr %1375, align 8, !tbaa !273
  %1377 = fsub float %1374, %1376
  %1378 = getelementptr inbounds i8, ptr %1371, i64 136
  %1379 = load float, ptr %1378, align 8, !tbaa !242
  %1380 = getelementptr inbounds i8, ptr %1371, i64 148
  %1381 = load float, ptr %1380, align 4, !tbaa !243
  %1382 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1379, float noundef %1381)
  %1383 = fadd float %1377, %1382
  %1384 = call noundef float @_ZL7ImTruncf(float noundef %1383)
  %1385 = load ptr, ptr %4, align 8, !tbaa !5
  %1386 = getelementptr inbounds i8, ptr %1385, i64 600
  store float %1384, ptr %1386, align 8, !tbaa !274
  %1387 = getelementptr inbounds i8, ptr %1385, i64 572
  %1388 = load float, ptr %1387, align 4, !tbaa !245
  %1389 = getelementptr inbounds i8, ptr %1385, i64 196
  %1390 = load float, ptr %1389, align 4, !tbaa !275
  %1391 = fsub float %1388, %1390
  %1392 = getelementptr inbounds i8, ptr %1385, i64 140
  %1393 = load float, ptr %1392, align 4, !tbaa !255
  %1394 = getelementptr inbounds i8, ptr %1385, i64 148
  %1395 = load float, ptr %1394, align 4, !tbaa !243
  %1396 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1393, float noundef %1395)
  %1397 = fadd float %1391, %1396
  %1398 = call noundef float @_ZL7ImTruncf(float noundef %1397)
  %1399 = load ptr, ptr %4, align 8, !tbaa !5
  %1400 = getelementptr inbounds i8, ptr %1399, i64 604
  store float %1398, ptr %1400, align 4, !tbaa !276
  %1401 = getelementptr inbounds i8, ptr %1399, i64 600
  %1402 = load float, ptr %1401, align 8, !tbaa !274
  %1403 = getelementptr inbounds i8, ptr %1399, i64 608
  %1404 = insertelement <2 x float> poison, float %1347, i64 0
  %1405 = insertelement <2 x float> %1404, float %1372, i64 1
  %1406 = insertelement <2 x float> poison, float %1402, i64 0
  %1407 = insertelement <2 x float> %1406, float %1398, i64 1
  %1408 = fadd <2 x float> %1405, %1407
  store <2 x float> %1408, ptr %1403, align 8, !tbaa !150
  %1409 = getelementptr inbounds i8, ptr %1399, i64 616
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1409, ptr noundef nonnull align 8 dereferenceable(16) %1401, i64 16, i1 false), !tbaa.struct !180
  %1410 = getelementptr inbounds i8, ptr %1399, i64 88
  %1411 = getelementptr inbounds i8, ptr %1399, i64 192
  %1412 = getelementptr inbounds i8, ptr %1399, i64 136
  %1413 = getelementptr inbounds i8, ptr %1399, i64 152
  %1414 = getelementptr inbounds i8, ptr %1399, i64 648
  %1415 = load <2 x float>, ptr %1410, align 8, !tbaa !150
  %1416 = load <2 x float>, ptr %1411, align 8, !tbaa !150
  %1417 = fsub <2 x float> %1415, %1416
  %1418 = load <2 x float>, ptr %1412, align 8, !tbaa !150
  %1419 = fadd <2 x float> %1417, %1418
  %1420 = load <2 x float>, ptr %1413, align 8, !tbaa !150
  %1421 = fadd <2 x float> %1419, %1420
  store <2 x float> %1421, ptr %1414, align 8, !tbaa !150
  %1422 = getelementptr inbounds i8, ptr %1399, i64 128
  %1423 = load float, ptr %1422, align 8, !tbaa !270
  %1424 = fcmp une float %1423, 0.000000e+00
  br i1 %1424, label %1436, label %1425

1425:                                             ; preds = %1370
  %1426 = getelementptr inbounds i8, ptr %1399, i64 96
  %1427 = load float, ptr %1426, align 8, !tbaa !198
  %1428 = extractelement <2 x float> %1418, i64 0
  %1429 = fneg float %1428
  %1430 = call float @llvm.fmuladd.f32(float %1429, float 2.000000e+00, float %1427)
  %1431 = getelementptr inbounds i8, ptr %1399, i64 160
  %1432 = load float, ptr %1431, align 8, !tbaa !216
  %1433 = extractelement <2 x float> %1420, i64 0
  %1434 = fadd float %1433, %1432
  %1435 = fsub float %1430, %1434
  br label %1436

1436:                                             ; preds = %1370, %1425
  %1437 = phi float [ %1435, %1425 ], [ %1423, %1370 ]
  %1438 = extractelement <2 x float> %1421, i64 0
  %1439 = fadd float %1438, %1437
  %1440 = getelementptr inbounds i8, ptr %1399, i64 656
  store float %1439, ptr %1440, align 8, !tbaa !277
  %1441 = getelementptr inbounds i8, ptr %1399, i64 132
  %1442 = load float, ptr %1441, align 4, !tbaa !271
  %1443 = fcmp une float %1442, 0.000000e+00
  br i1 %1443, label %1455, label %1444

1444:                                             ; preds = %1436
  %1445 = getelementptr inbounds i8, ptr %1399, i64 100
  %1446 = load float, ptr %1445, align 4, !tbaa !199
  %1447 = extractelement <2 x float> %1418, i64 1
  %1448 = fneg float %1447
  %1449 = call float @llvm.fmuladd.f32(float %1448, float 2.000000e+00, float %1446)
  %1450 = getelementptr inbounds i8, ptr %1399, i64 164
  %1451 = load float, ptr %1450, align 4, !tbaa !218
  %1452 = extractelement <2 x float> %1420, i64 1
  %1453 = fadd float %1452, %1451
  %1454 = fsub float %1449, %1453
  br label %1455

1455:                                             ; preds = %1436, %1444
  %1456 = phi float [ %1454, %1444 ], [ %1442, %1436 ]
  %1457 = extractelement <2 x float> %1421, i64 1
  %1458 = fadd float %1457, %1456
  %1459 = getelementptr inbounds i8, ptr %1399, i64 660
  store float %1458, ptr %1459, align 4, !tbaa !278
  %1460 = extractelement <2 x float> %1418, i64 0
  %1461 = extractelement <2 x float> %1420, i64 0
  %1462 = fadd <2 x float> %1418, %1420
  %1463 = extractelement <2 x float> %1416, i64 0
  %1464 = fsub <2 x float> %1462, %1416
  %1465 = extractelement <2 x float> %1464, i64 0
  %1466 = getelementptr inbounds i8, ptr %1399, i64 388
  store float %1465, ptr %1466, align 4, !tbaa !279
  %1467 = getelementptr inbounds i8, ptr %1399, i64 392
  store <2 x float> zeroinitializer, ptr %1467, align 8, !tbaa !150
  %1468 = extractelement <2 x float> %1415, i64 0
  %1469 = fpext float %1468 to double
  %1470 = fpext float %1460 to double
  %1471 = fadd double %1469, %1470
  %1472 = fpext float %1463 to double
  %1473 = fsub double %1471, %1472
  %1474 = fpext float %1461 to double
  %1475 = fadd double %1473, %1474
  %1476 = fadd double %1475, 0.000000e+00
  %1477 = extractelement <2 x float> %1415, i64 1
  %1478 = fpext float %1477 to double
  %1479 = extractelement <2 x float> %1418, i64 1
  %1480 = fpext float %1479 to double
  %1481 = fadd double %1478, %1480
  %1482 = extractelement <2 x float> %1416, i64 1
  %1483 = fpext float %1482 to double
  %1484 = fsub double %1481, %1483
  %1485 = extractelement <2 x float> %1420, i64 1
  %1486 = fpext float %1485 to double
  %1487 = fadd double %1484, %1486
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #12
  %1488 = fptrunc double %1476 to float
  %1489 = fptrunc double %1487 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %1488, float noundef %1489)
  %1490 = load ptr, ptr %4, align 8, !tbaa !5
  %1491 = getelementptr inbounds i8, ptr %1490, i64 336
  %1492 = load i64, ptr %41, align 8
  store i64 %1492, ptr %1491, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #12
  %1493 = trunc i64 %1492 to i32
  %1494 = bitcast i32 %1493 to float
  %1495 = fpext float %1494 to double
  %1496 = fsub double %1476, %1495
  %1497 = fptrunc double %1496 to float
  %1498 = lshr i64 %1492, 32
  %1499 = trunc nuw i64 %1498 to i32
  %1500 = bitcast i32 %1499 to float
  %1501 = fpext float %1500 to double
  %1502 = fsub double %1487, %1501
  %1503 = fptrunc double %1502 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef %1497, float noundef %1503)
  %1504 = load ptr, ptr %4, align 8, !tbaa !5
  %1505 = getelementptr inbounds i8, ptr %1504, i64 400
  %1506 = load i64, ptr %42, align 8
  store i64 %1506, ptr %1505, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #12
  %1507 = getelementptr inbounds i8, ptr %1504, i64 320
  %1508 = getelementptr inbounds i8, ptr %1504, i64 336
  %1509 = load i64, ptr %1508, align 8
  store i64 %1509, ptr %1507, align 8
  %1510 = getelementptr inbounds i8, ptr %1504, i64 328
  store i64 %1509, ptr %1510, align 8
  %1511 = getelementptr inbounds i8, ptr %1504, i64 344
  store i64 %1509, ptr %1511, align 8
  %1512 = getelementptr inbounds i8, ptr %1504, i64 352
  store i64 %1509, ptr %1512, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1513 = load ptr, ptr %4, align 8, !tbaa !5
  %1514 = getelementptr inbounds i8, ptr %1513, i64 368
  %1515 = load i64, ptr %43, align 8
  store i64 %1515, ptr %1514, align 8
  %1516 = getelementptr inbounds i8, ptr %1513, i64 360
  store i64 %1515, ptr %1516, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #12
  %1517 = getelementptr inbounds i8, ptr %1513, i64 376
  %1518 = getelementptr inbounds i8, ptr %1513, i64 408
  store i32 0, ptr %1518, align 8, !tbaa !159
  %1519 = getelementptr inbounds i8, ptr %1513, i64 414
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1517, i8 0, i64 10, i1 false)
  %1520 = load i16, ptr %1519, align 2, !tbaa !280
  %1521 = getelementptr inbounds i8, ptr %1513, i64 412
  store i16 %1520, ptr %1521, align 4, !tbaa !281
  store i16 0, ptr %1519, align 2, !tbaa !280
  %1522 = getelementptr inbounds i8, ptr %1513, i64 416
  store i8 1, ptr %1522, align 8, !tbaa !282
  %1523 = getelementptr inbounds i8, ptr %1513, i64 417
  store i8 0, ptr %1523, align 1, !tbaa !283
  %1524 = getelementptr inbounds i8, ptr %1513, i64 204
  %1525 = load float, ptr %1524, align 4, !tbaa !256
  %1526 = fcmp ogt float %1525, 0.000000e+00
  %1527 = getelementptr inbounds i8, ptr %1513, i64 418
  %1528 = zext i1 %1526 to i8
  store i8 %1528, ptr %1527, align 2, !tbaa !284
  %1529 = getelementptr inbounds i8, ptr %1513, i64 419
  store i8 0, ptr %1529, align 1, !tbaa !285
  %1530 = getelementptr inbounds i8, ptr %1513, i64 428
  %1531 = load float, ptr %573, align 4, !tbaa !204
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1530, float noundef %1531, i1 noundef zeroext %.0349.in)
  %1532 = load ptr, ptr %4, align 8, !tbaa !5
  %1533 = getelementptr inbounds i8, ptr %1532, i64 456
  store i32 0, ptr %1533, align 8, !tbaa !286
  %1534 = getelementptr inbounds i8, ptr %1532, i64 460
  store i32 0, ptr %1534, align 4, !tbaa !287
  %1535 = getelementptr inbounds i8, ptr %1532, i64 464
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1535, i32 noundef 0)
  %1536 = load ptr, ptr %4, align 8, !tbaa !5
  %1537 = getelementptr inbounds i8, ptr %1536, i64 688
  %1538 = getelementptr inbounds i8, ptr %1536, i64 480
  store ptr %1537, ptr %1538, align 8, !tbaa !288
  %1539 = getelementptr inbounds i8, ptr %1536, i64 488
  store ptr null, ptr %1539, align 8, !tbaa !289
  %1540 = getelementptr inbounds i8, ptr %1536, i64 500
  store i32 1, ptr %1540, align 4, !tbaa !290
  br i1 %217, label %1544, label %1541

1541:                                             ; preds = %1455
  %1542 = getelementptr inbounds i8, ptr %216, i64 500
  %1543 = load i32, ptr %1542, align 4, !tbaa !290
  br label %1544

1544:                                             ; preds = %1455, %1541
  %1545 = phi i32 [ %1543, %1541 ], [ 1, %1455 ]
  %1546 = getelementptr inbounds i8, ptr %1536, i64 504
  store i32 %1545, ptr %1546, align 8, !tbaa !291
  %1547 = getelementptr inbounds i8, ptr %1536, i64 684
  %1548 = load float, ptr %1547, align 4, !tbaa !251
  %1549 = getelementptr inbounds i8, ptr %1536, i64 508
  store float %1548, ptr %1549, align 4, !tbaa !292
  %1550 = getelementptr inbounds i8, ptr %1536, i64 512
  store float -1.000000e+00, ptr %1550, align 8, !tbaa !293
  %1551 = getelementptr inbounds i8, ptr %1536, i64 520
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1551, i32 noundef 0)
  %1552 = load ptr, ptr %4, align 8, !tbaa !5
  %1553 = getelementptr inbounds i8, ptr %1552, i64 536
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1553, i32 noundef 0)
  %1554 = load ptr, ptr %4, align 8, !tbaa !5
  %1555 = getelementptr inbounds i8, ptr %1554, i64 272
  %1556 = load i8, ptr %1555, align 8, !tbaa !219
  %1557 = icmp sgt i8 %1556, 0
  br i1 %1557, label %1558, label %1560

1558:                                             ; preds = %1544
  %1559 = add nsw i8 %1556, -1
  store i8 %1559, ptr %1555, align 8, !tbaa !219
  br label %1560

1560:                                             ; preds = %1558, %1544
  %1561 = getelementptr inbounds i8, ptr %1554, i64 273
  %1562 = load i8, ptr %1561, align 1, !tbaa !220
  %1563 = icmp sgt i8 %1562, 0
  br i1 %1563, label %1564, label %1566

1564:                                             ; preds = %1560
  %1565 = add nsw i8 %1562, -1
  store i8 %1565, ptr %1561, align 1, !tbaa !220
  br label %1566

1566:                                             ; preds = %1564, %1560
  br i1 %.0365, label %1567, label %.critedge550

1567:                                             ; preds = %1566
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1554, i32 noundef 2)
  %1568 = load ptr, ptr %4, align 8, !tbaa !5
  %1569 = getelementptr inbounds i8, ptr %45, i64 19696
  %1570 = load ptr, ptr %1569, align 8, !tbaa !268
  %1571 = icmp eq ptr %1568, %1570
  br i1 %1571, label %1572, label %.critedge550

1572:                                             ; preds = %1567
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1568, i1 noundef zeroext false)
  br label %.critedge550

.critedge550:                                     ; preds = %1566, %1572, %1567
  br i1 %424, label %1573, label %1592

1573:                                             ; preds = %.critedge550
  %1574 = load ptr, ptr %4, align 8, !tbaa !5
  %1575 = getelementptr inbounds i8, ptr %1574, i64 64
  %1576 = load ptr, ptr %1575, align 8, !tbaa !184
  %1577 = getelementptr inbounds i8, ptr %1576, i64 91
  %1578 = load i8, ptr %1577, align 1, !tbaa !294, !range !93, !noundef !94
  %1579 = trunc nuw i8 %1578 to i1
  br i1 %1579, label %1580, label %1592

1580:                                             ; preds = %1573
  %1581 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %.not488 = icmp eq ptr %1576, %1581
  br i1 %.not488, label %1592, label %1582

1582:                                             ; preds = %1580
  %1583 = getelementptr inbounds i8, ptr %45, i64 25196
  %1584 = load i32, ptr %1583, align 4, !tbaa !295
  %1585 = and i32 %1584, 512
  %.not489 = icmp eq i32 %1585, 0
  br i1 %.not489, label %1590, label %1586

1586:                                             ; preds = %1582
  %1587 = load ptr, ptr %4, align 8, !tbaa !5
  %1588 = getelementptr inbounds i8, ptr %1587, i64 8
  %1589 = load ptr, ptr %1588, align 8, !tbaa !192
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef nonnull @.str.160, ptr noundef %1589)
  br label %1590

1590:                                             ; preds = %1586, %1582
  store i8 0, ptr %1, align 1, !tbaa !174
  %1591 = getelementptr inbounds i8, ptr %45, i64 20232
  store i8 0, ptr %1591, align 8, !tbaa !296
  br label %1592

1592:                                             ; preds = %1590, %1580, %1573, %.critedge550
  %.pre654 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not449, label %1593, label %1608

1593:                                             ; preds = %1592
  %1594 = getelementptr inbounds i8, ptr %.pre654, i64 1085
  %1595 = load i8, ptr %1594, align 1
  %1596 = trunc i8 %1595 to i1
  br i1 %1596, label %1608, label %1597

1597:                                             ; preds = %1593
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #12
  %1598 = load float, ptr %37, align 8, !tbaa !297
  %1599 = getelementptr inbounds i8, ptr %.pre654, i64 148
  %1600 = load float, ptr %1599, align 4, !tbaa !243
  %1601 = fadd float %1598, %1600
  %1602 = getelementptr inbounds i8, ptr %37, i64 4
  %1603 = load float, ptr %1602, align 4, !tbaa !298
  %1604 = load float, ptr %1105, align 8, !tbaa !299
  %1605 = fsub float %1604, %1600
  %1606 = getelementptr inbounds i8, ptr %37, i64 12
  %1607 = load float, ptr %1606, align 4, !tbaa !300
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %44, float noundef %1601, float noundef %1603, float noundef %1605, float noundef %1607)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef nonnull %.pre654, ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #12
  %.pre653 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1608

1608:                                             ; preds = %1597, %1593, %1592
  %1609 = phi ptr [ %.pre653, %1597 ], [ %.pre654, %1593 ], [ %.pre654, %1592 ]
  %1610 = getelementptr inbounds i8, ptr %1609, i64 666
  store i16 0, ptr %1610, align 2, !tbaa !301
  %1611 = getelementptr inbounds i8, ptr %1609, i64 664
  store i16 0, ptr %1611, align 8, !tbaa !302
  %1612 = load i32, ptr %528, align 8, !tbaa !200
  %1613 = and i32 %1612, 64
  %.not490 = icmp eq i32 %1613, 0
  br i1 %.not490, label %1646, label %1614

1614:                                             ; preds = %1608
  %1615 = getelementptr inbounds i8, ptr %45, i64 16728
  %1616 = load ptr, ptr %1615, align 8, !tbaa !303
  %1617 = icmp eq ptr %1616, %1609
  br i1 %1617, label %1618, label %1626

1618:                                             ; preds = %1614
  %1619 = getelementptr inbounds i8, ptr %1609, i64 976
  %1620 = load ptr, ptr %1619, align 8, !tbaa !304
  %1621 = getelementptr inbounds i8, ptr %1620, i64 20
  %1622 = load i32, ptr %1621, align 4, !tbaa !123
  %1623 = and i32 %1622, 524288
  %1624 = icmp eq i32 %1623, 0
  br i1 %1624, label %1625, label %1626

1625:                                             ; preds = %1618
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef nonnull %1609)
  %.pre657.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1626

1626:                                             ; preds = %1625, %1618, %1614
  %.pre657 = phi ptr [ %.pre657.pre, %1625 ], [ %1609, %1618 ], [ %1609, %1614 ]
  %1627 = getelementptr inbounds i8, ptr %45, i64 20256
  %1628 = load i8, ptr %1627, align 8, !tbaa !305, !range !93, !noundef !94
  %1629 = trunc nuw i8 %1628 to i1
  %1630 = and i32 %541, 524288
  %.not491 = icmp eq i32 %1630, 0
  %or.cond551 = select i1 %1629, i1 %.not491, i1 false
  br i1 %or.cond551, label %1631, label %1646

1631:                                             ; preds = %1626
  %1632 = load ptr, ptr %1615, align 8, !tbaa !303
  %1633 = icmp eq ptr %1632, null
  br i1 %1633, label %1637, label %1634

1634:                                             ; preds = %1631
  %1635 = getelementptr inbounds i8, ptr %1632, i64 976
  %1636 = load ptr, ptr %1635, align 8, !tbaa !304
  %.not492 = icmp eq ptr %1636, %.pre657
  br i1 %.not492, label %1646, label %1637

1637:                                             ; preds = %1634, %1631
  %1638 = getelementptr inbounds i8, ptr %.pre657, i64 976
  %1639 = load ptr, ptr %1638, align 8, !tbaa !304
  %1640 = icmp eq ptr %.pre657, %1639
  br i1 %1640, label %1641, label %1646

1641:                                             ; preds = %1637
  %1642 = getelementptr inbounds i8, ptr %.pre657, i64 20
  %1643 = load i32, ptr %1642, align 4, !tbaa !123
  %1644 = and i32 %1643, 536870912
  %.not493 = icmp eq i32 %1644, 0
  br i1 %.not493, label %1645, label %1646

1645:                                             ; preds = %1641
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef nonnull %.pre657)
  %.pre656 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1646

1646:                                             ; preds = %1626, %1637, %1641, %1645, %1634, %1608
  %1647 = phi ptr [ %.pre657, %1626 ], [ %.pre657, %1637 ], [ %.pre657, %1641 ], [ %.pre656, %1645 ], [ %.pre657, %1634 ], [ %1609, %1608 ]
  %1648 = getelementptr inbounds i8, ptr %1647, i64 1085
  %1649 = load i8, ptr %1648, align 1
  %1650 = trunc i8 %1649 to i1
  %1651 = getelementptr inbounds i8, ptr %1647, i64 180
  %1652 = load i32, ptr %1651, align 4, !tbaa !306
  %1653 = getelementptr inbounds i8, ptr %45, i64 19132
  %1654 = load i32, ptr %1653, align 4, !tbaa !307
  br i1 %1650, label %1655, label %1659

1655:                                             ; preds = %1646
  %1656 = getelementptr inbounds i8, ptr %1647, i64 1132
  %1657 = load i32, ptr %1656, align 4, !tbaa !308
  %1658 = getelementptr inbounds i8, ptr %1647, i64 1136
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1652, i32 noundef %1654, i32 noundef %1657, ptr noundef nonnull align 4 dereferenceable(16) %1658)
  br label %1662

1659:                                             ; preds = %1646
  %1660 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1105, i1 noundef zeroext false)
  %1661 = zext i1 %1660 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1652, i32 noundef %1654, i32 noundef %1661, ptr noundef nonnull align 4 dereferenceable(16) %37)
  br label %1662

1662:                                             ; preds = %1659, %1655
  %1663 = getelementptr inbounds i8, ptr %45, i64 19136
  %1664 = load i32, ptr %1663, align 8, !tbaa !309
  %.not494 = icmp eq i32 %1664, 0
  br i1 %.not494, label %1675, label %1665

1665:                                             ; preds = %1662
  %1666 = load ptr, ptr %4, align 8, !tbaa !5
  %1667 = getelementptr inbounds i8, ptr %1666, i64 16
  %1668 = load i32, ptr %1667, align 8, !tbaa !98
  %1669 = icmp eq i32 %1668, %1664
  br i1 %1669, label %1674, label %1670

1670:                                             ; preds = %1665
  %1671 = getelementptr inbounds i8, ptr %1666, i64 180
  %1672 = load i32, ptr %1671, align 4, !tbaa !306
  %1673 = icmp eq i32 %1672, %1664
  br i1 %1673, label %1674, label %1675

1674:                                             ; preds = %1670, %1665
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1675

1675:                                             ; preds = %1674, %1670, %1662
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  br label %1681

1676:                                             ; preds = %415
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds i8, ptr %1677, i64 64
  %1679 = load ptr, ptr %1678, align 8, !tbaa !184
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1677, ptr noundef %1679)
  %1680 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1680)
  br label %1681

1681:                                             ; preds = %1676, %1675
  %.4 = phi i32 [ %541, %1675 ], [ %.3, %1676 ]
  %1682 = and i32 %.4, 536870912
  %.not495 = icmp eq i32 %1682, 0
  %.pre659 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not495, label %1683, label %1686

1683:                                             ; preds = %1681
  %1684 = getelementptr inbounds i8, ptr %.pre659, i64 584
  %1685 = getelementptr inbounds i8, ptr %.pre659, i64 592
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1684, ptr noundef nonnull align 4 dereferenceable(8) %1685, i1 noundef zeroext true)
  %.pre658 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1686

1686:                                             ; preds = %1683, %1681
  %1687 = phi ptr [ %.pre658, %1683 ], [ %.pre659, %1681 ]
  %1688 = getelementptr inbounds i8, ptr %1687, i64 245
  store i8 0, ptr %1688, align 1, !tbaa !310
  %1689 = getelementptr inbounds i8, ptr %1687, i64 256
  %1690 = load i16, ptr %1689, align 8, !tbaa !311
  %1691 = add i16 %1690, 1
  store i16 %1691, ptr %1689, align 8, !tbaa !311
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(156) %151)
  %.pre662 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not402, label %1820, label %1692

1692:                                             ; preds = %1686
  %1693 = getelementptr inbounds i8, ptr %.pre662, i64 1085
  %1694 = load i8, ptr %1693, align 1
  %1695 = trunc i8 %1694 to i1
  %1696 = and i8 %1694, 4
  %.not496 = icmp eq i8 %1696, 0
  %or.cond552 = and i1 %.not496, %1695
  br i1 %or.cond552, label %1697, label %1706

1697:                                             ; preds = %1692
  %1698 = getelementptr inbounds i8, ptr %.pre662, i64 676
  %1699 = load i32, ptr %1698, align 4, !tbaa !312
  %1700 = load i32, ptr %57, align 8, !tbaa !96
  %1701 = icmp eq i32 %1699, %1700
  br i1 %1701, label %1702, label %1704

1702:                                             ; preds = %1697
  %1703 = getelementptr inbounds i8, ptr %.pre662, i64 281
  store i8 1, ptr %1703, align 1, !tbaa !177
  br label %1706

1704:                                             ; preds = %1697
  %1705 = getelementptr inbounds i8, ptr %.pre662, i64 280
  store i8 1, ptr %1705, align 8, !tbaa !196
  br label %1706

1706:                                             ; preds = %1702, %1704, %1692
  %1707 = and i32 %.4, 285212672
  %or.cond553 = icmp eq i32 %1707, 16777216
  br i1 %or.cond553, label %1708, label %.critedge556

1708:                                             ; preds = %1706
  %1709 = and i32 %.4, 1
  %.not499 = icmp ne i32 %1709, 0
  %brmerge = or i1 %.not499, %1695
  br i1 %brmerge, label %.critedge8, label %1710

1710:                                             ; preds = %1708
  call void @__assert_fail(ptr noundef nonnull @.str.161, ptr noundef nonnull @.str.3, i32 noundef 7547, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

.critedge8:                                       ; preds = %1708
  %1711 = and i32 %.4, 8388608
  %.not500 = icmp eq i32 %1711, 0
  br i1 %.not500, label %1725, label %1712

1712:                                             ; preds = %.critedge8
  %1713 = getelementptr inbounds i8, ptr %45, i64 19796
  %1714 = load i8, ptr %1713, align 4, !tbaa !313, !range !93, !noundef !94
  %1715 = trunc nuw i8 %1714 to i1
  br i1 %1715, label %1716, label %1725

1716:                                             ; preds = %1712
  %1717 = getelementptr inbounds i8, ptr %45, i64 19696
  %1718 = load ptr, ptr %1717, align 8, !tbaa !268
  %.not501 = icmp eq ptr %1718, null
  br i1 %.not501, label %1725, label %1719

1719:                                             ; preds = %1716
  %1720 = getelementptr inbounds i8, ptr %1718, i64 992
  %1721 = load ptr, ptr %1720, align 8, !tbaa !314
  %1722 = getelementptr inbounds i8, ptr %.pre662, i64 992
  %1723 = load ptr, ptr %1722, align 8, !tbaa !314
  %1724 = icmp eq ptr %1721, %1723
  br label %1725

1725:                                             ; preds = %1712, %1716, %1719, %.critedge8
  %1726 = phi i1 [ false, %.critedge8 ], [ false, %1716 ], [ false, %1712 ], [ %1724, %1719 ]
  %1727 = getelementptr inbounds i8, ptr %45, i64 25128
  %1728 = load i8, ptr %1727, align 8, !tbaa !315, !range !93, !noundef !94
  %1729 = trunc nuw i8 %1728 to i1
  %brmerge554 = select i1 %1729, i1 true, i1 %1726
  br i1 %brmerge554, label %1754, label %1730

1730:                                             ; preds = %1725
  %1731 = getelementptr inbounds i8, ptr %.pre662, i64 552
  %1732 = load float, ptr %1731, align 8, !tbaa !316
  %1733 = getelementptr inbounds i8, ptr %.pre662, i64 560
  %1734 = load float, ptr %1733, align 8, !tbaa !317
  %1735 = fcmp ult float %1732, %1734
  br i1 %1735, label %1736, label %1742

1736:                                             ; preds = %1730
  %1737 = getelementptr inbounds i8, ptr %.pre662, i64 556
  %1738 = load float, ptr %1737, align 4, !tbaa !241
  %1739 = getelementptr inbounds i8, ptr %.pre662, i64 564
  %1740 = load float, ptr %1739, align 4, !tbaa !318
  %1741 = fcmp ult float %1738, %1740
  br i1 %1741, label %1754, label %1742

1742:                                             ; preds = %1736, %1730
  %1743 = getelementptr inbounds i8, ptr %.pre662, i64 272
  %1744 = load i8, ptr %1743, align 8, !tbaa !219
  %1745 = icmp sgt i8 %1744, 0
  br i1 %1745, label %1750, label %1746

1746:                                             ; preds = %1742
  %1747 = getelementptr inbounds i8, ptr %.pre662, i64 273
  %1748 = load i8, ptr %1747, align 1, !tbaa !220
  %1749 = icmp sgt i8 %1748, 0
  br i1 %1749, label %1750, label %1752

1750:                                             ; preds = %1746, %1742
  %1751 = getelementptr inbounds i8, ptr %.pre662, i64 281
  store i8 1, ptr %1751, align 1, !tbaa !177
  br label %1754

1752:                                             ; preds = %1746
  %1753 = getelementptr inbounds i8, ptr %.pre662, i64 280
  store i8 1, ptr %1753, align 8, !tbaa !196
  br label %1754

1754:                                             ; preds = %1725, %1736, %1752, %1750
  br i1 %217, label %.critedge556, label %1755

1755:                                             ; preds = %1754
  %1756 = getelementptr inbounds i8, ptr %216, i64 246
  %1757 = load i8, ptr %1756, align 2, !tbaa !214, !range !93, !noundef !94
  %1758 = trunc nuw i8 %1757 to i1
  br i1 %1758, label %.thread582, label %1760

.thread582:                                       ; preds = %1755
  %1759 = getelementptr inbounds i8, ptr %.pre662, i64 280
  store i8 1, ptr %1759, align 8, !tbaa !196
  br label %1769

1760:                                             ; preds = %1755
  %1761 = getelementptr inbounds i8, ptr %216, i64 280
  %1762 = load i8, ptr %1761, align 8, !tbaa !196
  %1763 = icmp sgt i8 %1762, 0
  br i1 %1763, label %1764, label %.thread581

1764:                                             ; preds = %1760
  %1765 = getelementptr inbounds i8, ptr %.pre662, i64 280
  store i8 1, ptr %1765, align 8, !tbaa !196
  br label %.thread581

.thread581:                                       ; preds = %1760, %1764
  %1766 = getelementptr inbounds i8, ptr %216, i64 281
  %1767 = load i8, ptr %1766, align 1, !tbaa !177
  %1768 = icmp sgt i8 %1767, 0
  br i1 %1768, label %1769, label %.critedge556

1769:                                             ; preds = %.thread582, %.thread581
  %1770 = getelementptr inbounds i8, ptr %.pre662, i64 281
  store i8 1, ptr %1770, align 1, !tbaa !177
  br label %.critedge556

.critedge556:                                     ; preds = %.thread581, %1769, %1754, %1706
  %1771 = load float, ptr %46, align 4, !tbaa !319
  %1772 = fcmp ugt float %1771, 0.000000e+00
  %.phi.trans.insert660 = getelementptr inbounds i8, ptr %.pre662, i64 280
  br i1 %1772, label %1773, label %.thread679

.thread679:                                       ; preds = %.critedge556
  store i8 1, ptr %.phi.trans.insert660, align 8, !tbaa !196
  br label %.thread583

1773:                                             ; preds = %.critedge556
  %.pre661 = load i8, ptr %.phi.trans.insert660, align 8, !tbaa !196
  %1774 = icmp sgt i8 %.pre661, 0
  br i1 %1774, label %.thread583, label %1775

1775:                                             ; preds = %1773
  %1776 = getelementptr inbounds i8, ptr %.pre662, i64 281
  %1777 = load i8, ptr %1776, align 1, !tbaa !177
  %1778 = icmp sgt i8 %1777, 0
  br i1 %1778, label %.thread583, label %1779

1779:                                             ; preds = %1775
  %1780 = getelementptr inbounds i8, ptr %.pre662, i64 282
  %1781 = load i8, ptr %1780, align 2, !tbaa !197
  %1782 = icmp sgt i8 %1781, 0
  %1783 = zext i1 %1782 to i8
  br label %.thread583

.thread583:                                       ; preds = %.thread679, %1773, %1779, %1775
  %.not610 = phi i1 [ false, %1775 ], [ true, %1779 ], [ false, %1773 ], [ false, %.thread679 ]
  %1784 = phi i8 [ 1, %1775 ], [ %1783, %1779 ], [ 1, %1773 ], [ 1, %.thread679 ]
  %1785 = getelementptr inbounds i8, ptr %.pre662, i64 250
  store i8 %1784, ptr %1785, align 2, !tbaa !320
  %1786 = getelementptr inbounds i8, ptr %.pre662, i64 283
  %1787 = load i8, ptr %1786, align 1, !tbaa !321
  %1788 = icmp sgt i8 %1787, 0
  br i1 %1788, label %1789, label %1794

1789:                                             ; preds = %.thread583
  %1790 = add nsw i8 %1787, -1
  store i8 %1790, ptr %1786, align 1, !tbaa !321
  %1791 = getelementptr inbounds i8, ptr %.pre662, i64 20
  %1792 = load i32, ptr %1791, align 4, !tbaa !123
  %1793 = or i32 %1792, 197120
  store i32 %1793, ptr %1791, align 4, !tbaa !123
  br label %1794

1794:                                             ; preds = %1789, %.thread583
  %1795 = getelementptr inbounds i8, ptr %.pre662, i64 246
  %1796 = load i8, ptr %1795, align 2, !tbaa !214, !range !93, !noundef !94
  %1797 = trunc nuw i8 %1796 to i1
  br i1 %1797, label %1802, label %1798

1798:                                             ; preds = %1794
  %1799 = getelementptr inbounds i8, ptr %.pre662, i64 243
  %1800 = load i8, ptr %1799, align 1, !tbaa !178, !range !93, !noundef !94
  %1801 = trunc nuw i8 %1800 to i1
  %brmerge558.not = and i1 %.not610, %1801
  br i1 %brmerge558.not, label %.thread585, label %1802

1802:                                             ; preds = %1798, %1794
  %1803 = getelementptr inbounds i8, ptr %.pre662, i64 272
  %1804 = load i8, ptr %1803, align 8, !tbaa !219
  %1805 = icmp slt i8 %1804, 1
  br i1 %1805, label %1806, label %.thread585

1806:                                             ; preds = %1802
  %1807 = getelementptr inbounds i8, ptr %.pre662, i64 273
  %1808 = load i8, ptr %1807, align 1, !tbaa !220
  %1809 = icmp slt i8 %1808, 1
  br i1 %1809, label %1811, label %.thread585

.thread585:                                       ; preds = %1806, %1802, %1798
  %1810 = getelementptr inbounds i8, ptr %.pre662, i64 248
  store i8 0, ptr %1810, align 8, !tbaa !322
  br label %1820

1811:                                             ; preds = %1806
  %1812 = getelementptr inbounds i8, ptr %.pre662, i64 281
  %1813 = load i8, ptr %1812, align 1, !tbaa !177
  %1814 = icmp slt i8 %1813, 1
  %spec.select559 = zext i1 %1814 to i8
  %1815 = getelementptr inbounds i8, ptr %.pre662, i64 248
  store i8 %spec.select559, ptr %1815, align 8, !tbaa !322
  br i1 %1814, label %1816, label %1820

1816:                                             ; preds = %1811
  %1817 = getelementptr inbounds i8, ptr %.pre662, i64 412
  %1818 = load i16, ptr %1817, align 4, !tbaa !281
  %1819 = getelementptr inbounds i8, ptr %.pre662, i64 414
  store i16 %1818, ptr %1819, align 2, !tbaa !280
  br label %1820

1820:                                             ; preds = %.thread585, %1811, %1816, %1686
  %1821 = getelementptr inbounds i8, ptr %.pre662, i64 251
  %1822 = load i8, ptr %1821, align 1, !tbaa !116, !range !93, !noundef !94
  %1823 = trunc nuw i8 %1822 to i1
  br i1 %1823, label %1850, label %1824

1824:                                             ; preds = %1820
  %1825 = getelementptr inbounds i8, ptr %45, i64 129
  %1826 = load i8, ptr %1825, align 1, !tbaa !323, !range !93, !noundef !94
  %1827 = trunc nuw i8 %1826 to i1
  %brmerge562.demorgan = and i1 %62, %1827
  br i1 %brmerge562.demorgan, label %1838, label %1828

1828:                                             ; preds = %1824
  %1829 = getelementptr inbounds i8, ptr %45, i64 130
  %1830 = load i8, ptr %1829, align 2, !tbaa !324, !range !93, !noundef !94
  %1831 = trunc nuw i8 %1830 to i1
  br i1 %1831, label %1832, label %1850

1832:                                             ; preds = %1828
  %1833 = getelementptr inbounds i8, ptr %45, i64 25252
  %1834 = load i8, ptr %1833, align 4, !tbaa !325
  %1835 = sext i8 %1834 to i32
  %1836 = load i32, ptr %83, align 8, !tbaa !114
  %1837 = icmp eq i32 %1836, %1835
  br i1 %1837, label %1838, label %1850

1838:                                             ; preds = %1824, %1832
  %1839 = getelementptr inbounds i8, ptr %.pre662, i64 272
  %1840 = load i8, ptr %1839, align 8, !tbaa !219
  %1841 = icmp sgt i8 %1840, 0
  br i1 %1841, label %1842, label %1844

1842:                                             ; preds = %1838
  %1843 = add nuw i8 %1840, 1
  store i8 %1843, ptr %1839, align 8, !tbaa !219
  br label %1844

1844:                                             ; preds = %1842, %1838
  %1845 = getelementptr inbounds i8, ptr %.pre662, i64 273
  %1846 = load i8, ptr %1845, align 1, !tbaa !220
  %1847 = icmp sgt i8 %1846, 0
  br i1 %1847, label %1848, label %1855

1848:                                             ; preds = %1844
  %1849 = add nuw i8 %1846, 1
  store i8 %1849, ptr %1845, align 1, !tbaa !220
  br label %1855

1850:                                             ; preds = %1828, %1832, %1820
  %1851 = getelementptr inbounds i8, ptr %.pre662, i64 248
  %1852 = load i8, ptr %1851, align 8, !tbaa !322, !range !93, !noundef !94
  %1853 = trunc nuw i8 %1852 to i1
  %1854 = xor i1 %1853, true
  br label %1855

1855:                                             ; preds = %1844, %1848, %1850
  %.0347 = phi i1 [ %1854, %1850 ], [ false, %1848 ], [ false, %1844 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  ret i1 %.0347
}

; 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: 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
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 @_ZN5ImGui14FindWindowByIDEj(i32 noundef) 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(102) 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(102)) 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(102)) 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 #13

; 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(1152)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1152)) 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(1152)) 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 i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, 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(156)) 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 = { nounwind }
attributes #13 = { 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 #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 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 16552}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14624, !23, i64 14840, !14, i64 15972, !14, i64 15976, !6, i64 15984, !16, i64 15992, !16, i64 15996, !24, i64 16000, !27, i64 16528, !14, i64 16536, !14, i64 16540, !14, i64 16544, !14, i64 16548, !12, i64 16552, !12, i64 16553, !12, i64 16554, !12, i64 16555, !12, i64 16556, !6, i64 16560, !28, i64 16568, !28, i64 16584, !18, i64 16600, !14, i64 16604, !29, i64 16608, !29, i64 16624, !29, i64 16640, !30, i64 16656, !31, i64 16672, !14, i64 16688, !15, i64 16692, !14, i64 16700, !6, i64 16704, !6, i64 16712, !6, i64 16720, !6, i64 16728, !6, i64 16736, !15, i64 16744, !14, i64 16752, !14, i64 16756, !16, i64 16760, !15, i64 16764, !15, i64 16772, !14, i64 16780, !14, i64 16784, !14, i64 16788, !12, i64 16792, !12, i64 16793, !16, i64 16796, !16, i64 16800, !14, i64 16804, !14, i64 16808, !16, i64 16812, !12, i64 16816, !12, i64 16817, !12, i64 16818, !12, i64 16819, !12, i64 16820, !12, i64 16821, !12, i64 16822, !14, i64 16823, !15, i64 16824, !6, i64 16832, !33, i64 16840, !14, i64 16844, !12, i64 16848, !12, i64 16849, !6, i64 16856, !14, i64 16864, !16, i64 16868, !27, i64 16872, !27, i64 16880, !27, i64 16888, !34, i64 16896, !7, i64 16916, !35, i64 18768, !14, i64 19112, !12, i64 19116, !14, i64 19120, !14, i64 19124, !14, i64 19128, !14, i64 19132, !14, i64 19136, !37, i64 19144, !39, i64 19176, !41, i64 19256, !12, i64 19416, !14, i64 19420, !43, i64 19424, !44, i64 19440, !45, i64 19456, !46, i64 19472, !47, i64 19488, !48, i64 19504, !49, i64 19520, !49, i64 19536, !50, i64 19552, !14, i64 19568, !51, i64 19576, !16, i64 19592, !6, i64 19600, !6, i64 19608, !6, i64 19616, !14, i64 19624, !52, i64 19632, !14, i64 19680, !14, i64 19684, !14, i64 19688, !6, i64 19696, !14, i64 19704, !14, i64 19708, !46, i64 19712, !14, i64 19728, !14, i64 19732, !14, i64 19736, !14, i64 19740, !14, i64 19744, !16, i64 19748, !14, i64 19752, !14, i64 19756, !14, i64 19760, !14, i64 19764, !14, i64 19768, !33, i64 19772, !53, i64 19776, !38, i64 19784, !12, i64 19792, !12, i64 19793, !12, i64 19794, !12, i64 19795, !12, i64 19796, !12, i64 19797, !12, i64 19798, !54, i64 19800, !12, i64 19864, !12, i64 19865, !12, i64 19866, !14, i64 19868, !14, i64 19872, !14, i64 19876, !14, i64 19880, !14, i64 19884, !14, i64 19888, !40, i64 19892, !40, i64 19908, !14, i64 19924, !14, i64 19928, !14, i64 19932, !54, i64 19936, !54, i64 20000, !54, i64 20064, !54, i64 20128, !14, i64 20192, !14, i64 20196, !6, i64 20200, !6, i64 20208, !6, i64 20216, !16, i64 20224, !16, i64 20228, !12, i64 20232, !15, i64 20236, !15, i64 20244, !16, i64 20252, !12, i64 20256, !12, i64 20257, !12, i64 20258, !14, i64 20260, !14, i64 20264, !14, i64 20268, !55, i64 20272, !40, i64 20336, !40, i64 20352, !14, i64 20368, !14, i64 20372, !16, i64 20376, !14, i64 20380, !14, i64 20384, !14, i64 20388, !14, i64 20392, !56, i64 20400, !7, i64 20416, !14, i64 20432, !57, i64 20440, !6, i64 20456, !14, i64 20464, !14, i64 20468, !58, i64 20472, !59, i64 20488, !61, i64 20528, !62, i64 20544, !6, i64 20560, !63, i64 20568, !65, i64 20608, !66, i64 20624, !14, i64 20640, !14, i64 20644, !16, i64 20648, !16, i64 20652, !14, i64 20656, !14, i64 20660, !14, i64 20664, !16, i64 20668, !15, i64 20672, !67, i64 20680, !71, i64 24408, !72, i64 24432, !14, i64 24552, !14, i64 24556, !14, i64 24560, !14, i64 24564, !16, i64 24568, !16, i64 24572, !14, i64 24576, !25, i64 24580, !74, i64 24596, !40, i64 24644, !12, i64 24660, !16, i64 24664, !16, i64 24668, !12, i64 24672, !12, i64 24673, !16, i64 24676, !16, i64 24680, !16, i64 24684, !16, i64 24688, !17, i64 24692, !17, i64 24694, !17, i64 24696, !68, i64 24704, !75, i64 24720, !76, i64 24736, !78, i64 24840, !78, i64 24856, !14, i64 24872, !79, i64 24880, !6, i64 24936, !12, i64 24944, !16, i64 24948, !82, i64 24952, !83, i64 24968, !84, i64 24984, !85, i64 25000, !86, i64 25016, !14, i64 25032, !7, i64 25040, !12, i64 25128, !87, i64 25132, !6, i64 25136, !82, i64 25144, !6, i64 25160, !6, i64 25168, !16, i64 25176, !12, i64 25180, !14, i64 25184, !14, i64 25188, !14, i64 25192, !14, i64 25196, !82, i64 25200, !88, i64 25216, !14, i64 25240, !7, i64 25244, !7, i64 25245, !12, i64 25246, !14, i64 25248, !7, i64 25252, !12, i64 25253, !7, i64 25254, !14, i64 25256, !16, i64 25260, !25, i64 25264, !89, i64 25280, !90, i64 25304, !92, i64 25344, !6, i64 25408, !7, i64 25416, !14, i64 25656, !14, i64 25660, !16, i64 25664, !14, i64 25668, !14, i64 25672, !14, i64 25676, !68, i64 25680, !7, i64 25696}
!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, !12, i64 124, !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, !17, i64 200, !12, i64 202, !12, i64 203, !12, i64 204, !12, i64 205, !12, i64 206, !12, i64 207, !12, i64 208, !16, i64 212, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !15, i64 232, !7, i64 240, !7, i64 2904, !7, i64 3572, !6, i64 3640, !15, i64 3648, !7, i64 3656, !16, i64 3664, !16, i64 3668, !18, i64 3672, !14, i64 3676, !12, i64 3680, !12, i64 3681, !12, i64 3682, !12, i64 3683, !14, i64 3684, !7, i64 3688, !12, i64 14344, !15, i64 14348, !7, i64 14356, !7, i64 14400, !7, i64 14440, !7, i64 14445, !7, i64 14450, !7, i64 14460, !7, i64 14470, !7, i64 14475, !7, i64 14480, !12, i64 14485, !7, i64 14488, !7, i64 14508, !7, i64 14528, !7, i64 14568, !16, i64 14588, !12, i64 14592, !12, i64 14593, !7, i64 14594, !12, i64 14595, !17, i64 14596, !19, i64 14600}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !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, !16, i64 148, !16, i64 152, !14, i64 156, !15, i64 160, !15, i64 168, !16, i64 176, !15, i64 180, !15, i64 188, !15, i64 196, !15, i64 204, !16, i64 212, !16, i64 216, !12, i64 220, !12, i64 221, !12, i64 222, !16, i64 224, !16, i64 228, !7, i64 232, !16, i64 1112, !16, i64 1116, !16, i64 1120, !14, i64 1124, !14, i64 1128}
!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 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!35 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !36, i64 312, !36, i64 328}
!36 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!37 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !38, i64 8, !16, i64 16, !14, i64 20, !12, i64 24, !14, i64 25}
!38 = !{!"long long", !7, i64 0}
!39 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !40, i64 12, !40, i64 28, !40, i64 44, !40, i64 60}
!40 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!41 = !{!"_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, !14, i64 60, !12, i64 64, !12, i64 65, !40, i64 68, !6, i64 88, !6, i64 96, !16, i64 104, !14, i64 108, !14, i64 112, !42, i64 116, !15, i64 148}
!42 = !{!"_ZTS16ImGuiWindowClass", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !12, i64 28, !12, i64 29}
!43 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS20ImGuiPlatformMonitor", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !6, i64 40}
!53 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!54 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !40, i64 16, !14, i64 32, !38, i64 40, !16, i64 48, !16, i64 52, !16, i64 56}
!55 = !{!"_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}
!56 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS6ImPoolI10ImGuiTableE", !60, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!60 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !64, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!64 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!67 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !68, i64 40, !68, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !69, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720}
!68 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!69 = !{!"_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, !70, i64 32}
!70 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!71 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !68, i64 8}
!72 = !{!"_ZTS6ImFont", !61, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !73, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !17, 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}
!73 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!74 = !{!"_ZTS21ImGuiComboPreviewData", !40, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!75 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS22ImGuiTypingSelectState", !77, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!77 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!78 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!79 = !{!"_ZTS16ImGuiDockContext", !31, i64 0, !80, i64 16, !81, i64 32, !12, i64 48}
!80 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !14, i64 0, !14, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!82 = !{!"_ZTS15ImGuiTextBuffer", !68, i64 0}
!83 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!84 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !68, i64 0}
!85 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !68, i64 0}
!86 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!87 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!88 = !{!"_ZTS14ImGuiTextIndex", !47, i64 0, !14, i64 16}
!89 = !{!"_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, !12, i64 9, !14, i64 12, !14, i64 16}
!90 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !91, i64 16, !12, i64 32, !16, i64 36}
!91 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!92 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !17, i64 8, !7, i64 12}
!93 = !{i8 0, i8 2}
!94 = !{}
!95 = !{!11, !14, i64 16540}
!96 = !{!11, !14, i64 16536}
!97 = !{!11, !14, i64 16700}
!98 = !{!99, !14, i64 16}
!99 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !42, i64 32, !6, i64 64, !14, i64 72, !15, i64 76, !14, i64 84, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !16, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !15, i64 232, !12, i64 240, !12, i64 241, !12, i64 242, !12, i64 243, !12, i64 244, !12, i64 245, !12, i64 246, !12, i64 247, !12, i64 248, !12, i64 249, !12, i64 250, !12, i64 251, !12, i64 252, !12, i64 253, !7, i64 254, !7, i64 255, !17, i64 256, !17, i64 258, !17, i64 260, !17, i64 262, !17, i64 264, !14, i64 268, !7, i64 272, !7, i64 273, !12, i64 274, !14, i64 276, !7, i64 280, !7, i64 281, !7, i64 282, !7, i64 283, !14, i64 284, !14, i64 285, !14, i64 286, !14, i64 287, !15, i64 288, !15, i64 296, !75, i64 304, !100, i64 320, !40, i64 552, !40, i64 568, !40, i64 584, !40, i64 600, !40, i64 616, !40, i64 632, !40, i64 648, !103, i64 664, !103, i64 668, !14, i64 672, !14, i64 676, !16, i64 680, !16, i64 684, !31, i64 688, !104, i64 704, !16, i64 720, !16, i64 724, !14, i64 728, !6, i64 736, !105, i64 744, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !6, i64 1008, !7, i64 1016, !7, i64 1024, !7, i64 1056, !14, i64 1072, !14, i64 1076, !14, i64 1080, !12, i64 1084, !12, i64 1085, !12, i64 1085, !12, i64 1085, !12, i64 1085, !17, i64 1086, !112, i64 1088, !6, i64 1112, !6, i64 1120, !14, i64 1128, !14, i64 1132, !40, i64 1136}
!100 = !{!"_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, !101, i64 68, !101, i64 72, !101, i64 76, !15, i64 80, !53, i64 88, !17, i64 92, !17, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !102, 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, !61, i64 200, !61, i64 216}
!101 = !{!"_ZTS6ImVec1", !16, i64 0}
!102 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !7, i64 18}
!103 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!104 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!105 = !{!"_ZTS10ImDrawList", !106, i64 0, !19, i64 16, !107, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !108, i64 88, !109, i64 104, !26, i64 120, !110, i64 136, !111, i64 168, !16, i64 192}
!106 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!107 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!108 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!109 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!110 = !{!"_ZTS15ImDrawCmdHeader", !25, i64 0, !6, i64 16, !14, i64 24}
!111 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !62, i64 8}
!112 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!113 = !{!99, !14, i64 672}
!114 = !{!11, !14, i64 16656}
!115 = !{!11, !12, i64 16553}
!116 = !{!99, !12, i64 251}
!117 = !{!11, !14, i64 19536}
!118 = !{!99, !14, i64 268}
!119 = !{!120, !14, i64 0}
!120 = !{!"_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}
!121 = !{!120, !6, i64 8}
!122 = !{!99, !12, i64 249}
!123 = !{!99, !14, i64 20}
!124 = !{!99, !14, i64 24}
!125 = !{!11, !14, i64 19256}
!126 = !{!11, !14, i64 19316}
!127 = !{!99, !14, i64 28}
!128 = !{!11, !27, i64 16528}
!129 = !{!99, !16, i64 680}
!130 = !{!99, !17, i64 260}
!131 = !{!11, !14, i64 16688}
!132 = !{!99, !17, i64 262}
!133 = !{!99, !6, i64 1112}
!134 = !{!99, !6, i64 1120}
!135 = !{!11, !14, i64 19368}
!136 = !{!11, !14, i64 19272}
!137 = !{!99, !14, i64 1128}
!138 = !{!139, !6, i64 136}
!139 = !{!"_ZTS13ImGuiDockNode", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !140, i64 20, !6, i64 24, !7, i64 32, !29, i64 48, !6, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !141, i64 96, !42, i64 100, !14, i64 132, !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}
!140 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!141 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!142 = !{!143, !6, i64 0}
!143 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !39, i64 8, !144, i64 84}
!144 = !{!"_ZTS15ImGuiStackSizes", !17, i64 0, !17, i64 2, !17, i64 4, !17, i64 6, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16}
!145 = !{!99, !6, i64 944}
!146 = !{!99, !14, i64 304}
!147 = !{!11, !6, i64 16704}
!148 = !{i64 0, i64 4, !149, i64 4, i64 4, !149, i64 8, i64 4, !149, i64 12, i64 4, !150, i64 16, i64 4, !150, i64 20, i64 4, !150, i64 24, i64 4, !150, i64 28, i64 4, !150, i64 32, i64 4, !150, i64 36, i64 4, !150, i64 40, i64 4, !150, i64 44, i64 4, !150, i64 48, i64 4, !150, i64 52, i64 4, !150, i64 56, i64 4, !150, i64 60, i64 4, !150, i64 64, i64 4, !150, i64 68, i64 4, !150, i64 72, i64 4, !150}
!149 = !{!14, !14, i64 0}
!150 = !{!16, !16, i64 0}
!151 = !{!11, !14, i64 19568}
!152 = !{!99, !6, i64 952}
!153 = !{!99, !6, i64 960}
!154 = !{!99, !6, i64 1000}
!155 = !{!139, !14, i64 16}
!156 = !{!99, !14, i64 40}
!157 = !{!11, !14, i64 19128}
!158 = !{!99, !14, i64 1072}
!159 = !{!99, !53, i64 408}
!160 = !{!120, !14, i64 24}
!161 = !{!11, !14, i64 19260}
!162 = !{!11, !14, i64 19264}
!163 = !{!11, !16, i64 19292}
!164 = !{!11, !16, i64 19296}
!165 = !{!99, !16, i64 104}
!166 = !{!99, !16, i64 108}
!167 = !{!11, !16, i64 19308}
!168 = !{!99, !16, i64 208}
!169 = !{!99, !16, i64 216}
!170 = !{!11, !16, i64 19312}
!171 = !{!99, !16, i64 212}
!172 = !{!99, !16, i64 220}
!173 = !{i64 0, i64 4, !149, i64 4, i64 4, !149, i64 8, i64 4, !149, i64 12, i64 4, !149, i64 16, i64 4, !149, i64 20, i64 4, !149, i64 24, i64 4, !149, i64 28, i64 1, !174, i64 29, i64 1, !174}
!174 = !{!12, !12, i64 0}
!175 = !{!11, !12, i64 19321}
!176 = !{!11, !14, i64 19268}
!177 = !{!99, !7, i64 281}
!178 = !{!99, !12, i64 243}
!179 = !{!99, !12, i64 253}
!180 = !{i64 0, i64 4, !150, i64 4, i64 4, !150, i64 8, i64 4, !150, i64 12, i64 4, !150}
!181 = !{!99, !6, i64 736}
!182 = !{!99, !14, i64 496}
!183 = !{!99, !12, i64 1084}
!184 = !{!99, !6, i64 64}
!185 = !{!186, !6, i64 96}
!186 = !{!"_ZTS14ImGuiViewportP", !187, 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, !17, i64 138, !7, i64 140, !7, i64 152, !188, i64 168, !190, i64 232, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312}
!187 = !{!"_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}
!188 = !{!"_ZTS10ImDrawData", !12, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !189, i64 16, !15, i64 32, !15, i64 40, !15, i64 48, !6, i64 56}
!189 = !{!"_ZTS8ImVectorIP10ImDrawListE", !14, i64 0, !14, i64 4, !6, i64 8}
!190 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !189, i64 16}
!191 = !{!11, !6, i64 20216}
!192 = !{!99, !6, i64 8}
!193 = !{!99, !14, i64 176}
!194 = !{!195, !195, i64 0}
!195 = !{!"long", !7, i64 0}
!196 = !{!99, !7, i64 280}
!197 = !{!99, !7, i64 282}
!198 = !{!99, !16, i64 96}
!199 = !{!99, !16, i64 100}
!200 = !{!11, !14, i64 8}
!201 = !{!187, !16, i64 40}
!202 = !{!99, !16, i64 724}
!203 = !{!23, !16, i64 12}
!204 = !{!23, !16, i64 76}
!205 = !{!11, !16, i64 19404}
!206 = !{!99, !16, i64 420}
!207 = !{!11, !16, i64 19408}
!208 = !{!99, !16, i64 424}
!209 = !{!11, !6, i64 16712}
!210 = !{!11, !14, i64 16784}
!211 = !{!11, !14, i64 16788}
!212 = !{!17, !17, i64 0}
!213 = !{!99, !12, i64 247}
!214 = !{!99, !12, i64 246}
!215 = !{!99, !16, i64 152}
!216 = !{!99, !16, i64 160}
!217 = !{!99, !16, i64 156}
!218 = !{!99, !16, i64 164}
!219 = !{!99, !7, i64 272}
!220 = !{!99, !7, i64 273}
!221 = !{!99, !12, i64 274}
!222 = !{!15, !16, i64 4}
!223 = !{!99, !14, i64 276}
!224 = !{!99, !14, i64 464}
!225 = !{!99, !16, i64 288}
!226 = !{!99, !14, i64 84}
!227 = !{!99, !12, i64 242}
!228 = !{!187, !14, i64 4}
!229 = !{!11, !14, i64 14808}
!230 = !{!99, !16, i64 144}
!231 = !{!11, !12, i64 102}
!232 = !{!11, !16, i64 15992}
!233 = !{!99, !7, i64 254}
!234 = !{!99, !7, i64 255}
!235 = !{!187, !12, i64 89}
!236 = !{!187, !12, i64 90}
!237 = !{!99, !12, i64 241}
!238 = !{!99, !12, i64 240}
!239 = !{!15, !16, i64 0}
!240 = !{!23, !16, i64 116}
!241 = !{!99, !16, i64 556}
!242 = !{!99, !16, i64 136}
!243 = !{!99, !16, i64 148}
!244 = !{!99, !16, i64 584}
!245 = !{!99, !16, i64 572}
!246 = !{!99, !16, i64 588}
!247 = !{!99, !16, i64 576}
!248 = !{!99, !16, i64 592}
!249 = !{!99, !16, i64 580}
!250 = !{!99, !16, i64 596}
!251 = !{!99, !16, i64 684}
!252 = !{!99, !16, i64 112}
!253 = !{!99, !16, i64 200}
!254 = !{!99, !16, i64 116}
!255 = !{!99, !16, i64 140}
!256 = !{!99, !16, i64 204}
!257 = !{!105, !14, i64 0}
!258 = !{!259, !14, i64 32}
!259 = !{!"_ZTS9ImDrawCmd", !25, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!260 = !{!11, !6, i64 15984}
!261 = !{!72, !6, i64 64}
!262 = !{!263, !6, i64 8}
!263 = !{!"_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, !45, i64 88, !264, i64 104, !265, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!264 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!265 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!266 = !{!105, !14, i64 32}
!267 = !{!11, !6, i64 20200}
!268 = !{!11, !6, i64 19696}
!269 = !{!99, !6, i64 984}
!270 = !{!99, !16, i64 128}
!271 = !{!99, !16, i64 132}
!272 = !{!99, !16, i64 568}
!273 = !{!99, !16, i64 192}
!274 = !{!99, !16, i64 600}
!275 = !{!99, !16, i64 196}
!276 = !{!99, !16, i64 604}
!277 = !{!99, !16, i64 656}
!278 = !{!99, !16, i64 660}
!279 = !{!99, !16, i64 388}
!280 = !{!99, !17, i64 414}
!281 = !{!99, !17, i64 412}
!282 = !{!99, !12, i64 416}
!283 = !{!99, !12, i64 417}
!284 = !{!99, !12, i64 418}
!285 = !{!99, !12, i64 419}
!286 = !{!99, !14, i64 456}
!287 = !{!99, !14, i64 460}
!288 = !{!99, !6, i64 480}
!289 = !{!99, !6, i64 488}
!290 = !{!99, !14, i64 500}
!291 = !{!99, !14, i64 504}
!292 = !{!99, !16, i64 508}
!293 = !{!99, !16, i64 512}
!294 = !{!187, !12, i64 91}
!295 = !{!11, !14, i64 25196}
!296 = !{!11, !12, i64 20232}
!297 = !{!40, !16, i64 0}
!298 = !{!40, !16, i64 4}
!299 = !{!40, !16, i64 8}
!300 = !{!40, !16, i64 12}
!301 = !{!99, !17, i64 666}
!302 = !{!99, !17, i64 664}
!303 = !{!11, !6, i64 16728}
!304 = !{!99, !6, i64 976}
!305 = !{!11, !12, i64 20256}
!306 = !{!99, !14, i64 180}
!307 = !{!11, !14, i64 19132}
!308 = !{!99, !14, i64 1132}
!309 = !{!11, !14, i64 19136}
!310 = !{!99, !12, i64 245}
!311 = !{!99, !17, i64 256}
!312 = !{!99, !14, i64 676}
!313 = !{!11, !12, i64 19796}
!314 = !{!99, !6, i64 992}
!315 = !{!11, !12, i64 25128}
!316 = !{!99, !16, i64 552}
!317 = !{!99, !16, i64 560}
!318 = !{!99, !16, i64 564}
!319 = !{!23, !16, i64 0}
!320 = !{!99, !12, i64 250}
!321 = !{!99, !7, i64 283}
!322 = !{!99, !12, i64 248}
!323 = !{!11, !12, i64 129}
!324 = !{!11, !12, i64 130}
!325 = !{!11, !7, i64 25252}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,MergedLoadStoreMotionPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass