; LLVM IR from xhub/reshop :: gui/external/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.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, ptr, float, float, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, ptr, [16 x i8], %struct.ImVector.1, %struct.ImVector.1, i32, i32, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, %struct.ImGuiStorage, i32, %struct.ImVec2, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i32, i32, float, float, i8, i8, i8, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, %struct.ImGuiDeactivatedItemData, %struct.ImGuiDataTypeStorage, i32, float, double, double, double, %struct.ImBitArray, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, i8, i8, i8, i8, i32, ptr, i32, i32, i32, i32, i32, i32, %struct.ImVector.9, i32, float, i32, i32, i32, i64, 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, i32, i32, i8, i8, i32, i32, ptr, ptr, ptr, float, float, i8, i32, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.15, [16 x i8], i32, %struct.ImVector.16, ptr, i32, i32, %struct.ImVector.17, %struct.ImPool, %struct.ImVector.19, %struct.ImVector.20, ptr, %struct.ImPool.21, %struct.ImVector.23, %struct.ImVector.24, %struct.ImGuiBoxSelectState, ptr, i32, %struct.ImVector.25, %struct.ImPool.26, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, %struct.ImGuiDataTypeStorage, i32, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, i16, float, float, float, i8, i8, float, float, float, i16, i16, ptr, %struct.ImVector.28, %struct.ImVector.30, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.31, %struct.ImChunkStream, %struct.ImChunkStream.32, %struct.ImVector.33, i32, [10 x ptr], i8, i32, ptr, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, ptr, ptr, %struct.ImVec2, i8, i32, %struct.ImGuiErrorRecoveryState, ptr, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.28, [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, i8, float, float, float, float, float, float, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, i32, [154 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, i8, [5 x float], [5 x float], [5 x float], float, i8, i8, i16, %struct.ImVector, ptr, ptr, ptr }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, 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, float, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [56 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, ptr, float, float, float, float, %struct.ImVec4, i32, [4 x i8], %struct.ImVector.0, [48 x %struct.ImVec2], float, [64 x i8], [4 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImGuiDeactivatedItemData = type { i32, i32, i8, i8 }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.5, %struct.ImVector.5 }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i32, [4 x i8], i64, float, i32, i32, i8, i8, %struct.ImGuiDataTypeStorage, [2 x i8], i32, [4 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32 }
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, %struct.ImRect, ptr, ptr, float, %struct.ImVec2, i32 }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = 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.9 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float, i64 }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.18, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImPool.21 = type { %struct.ImVector.22, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImGuiBoxSelectState = type <{ i32, i8, i8, i8, i8, i8, i16, i8, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8], ptr, i8, [3 x i8], %struct.ImRect, %struct.ImRect, %struct.ImRect, [4 x i8] }>
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImPool.26 = type { %struct.ImVector.27, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVector.28, %struct.ImVector.28, %struct.ImVector.28, i32, %struct.ImVec2, float, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.28 }
%struct.ImFont = type <{ %struct.ImVector.19, float, float, %struct.ImVector, %struct.ImVector.29, 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.29 = type { i32, i32, ptr }
%struct.ImGuiDataTypeStorage = type { [8 x i8] }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.30 = 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.ImVector.31 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.28 }
%struct.ImChunkStream.32 = type { %struct.ImVector.28 }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImGuiErrorRecoveryState = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.28 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.10, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.34, i8, float }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, 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, i8, i8, i8, [3 x i8], i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector.30, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.37, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, [3 x i8] }>
%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.2, ptr, ptr, i32, i32, i32, i32, float, float, %struct.ImVector.19, %struct.ImVector.19 }
%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.37 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.38, %struct.ImVector, %struct.ImVector.39, i32, i32, ptr, ptr, ptr, %struct.ImVector.0, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, %struct.ImVector.40, %struct.ImVector.41, %struct.ImVector.15, float, ptr }
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, i64, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.20 }
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImVector.41 = type { i32, i32, ptr }
%struct.ImGuiPopupData = type <{ i32, [4 x i8], ptr, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiErrorRecoveryState, i8, i8 }>
%struct.ImDrawCmd = type { %struct.ImVec4, i64, i32, i32, i32, ptr, ptr, i32, i32 }
%struct.ImFontAtlas = type <{ i32, [4 x i8], i64, i32, i32, i8, [7 x i8], ptr, i8, i8, [6 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.8, %struct.ImVector.48, %struct.ImVector.49, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.48 = type { i32, i32, ptr }
%struct.ImVector.49 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [43 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 noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16)) #8

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

; 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 uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208)) #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 @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216), i64 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) #8

; Function Attrs: nounwind
declare void @llvm.debugtrap() #12

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

105:                                              ; preds = %3
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 0
  %108 = load i8, ptr %107, align 1, !tbaa !11
  %109 = sext i8 %108 to i32
  %110 = icmp ne i32 %109, 0
  br label %111

111:                                              ; preds = %105, %3
  %112 = phi i1 [ false, %3 ], [ %110, %105 ]
  br i1 %112, label %113, label %114

113:                                              ; preds = %111
  br label %116

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

115:                                              ; No predecessors!
  br label %116

116:                                              ; preds = %115, %113
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.ImGuiContext, ptr %117, i32 0, i32 16
  %119 = load i8, ptr %118, align 8, !tbaa !12, !range !93, !noundef !94
  %120 = trunc i8 %119 to i1
  br i1 %120, label %121, label %122

121:                                              ; preds = %116
  br label %124

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

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %121
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.ImGuiContext, ptr %125, i32 0, i32 13
  %127 = load i32, ptr %126, align 4, !tbaa !95
  %128 = load ptr, ptr %8, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ImGuiContext, ptr %128, i32 0, i32 12
  %130 = load i32, ptr %129, align 8, !tbaa !96
  %131 = icmp ne i32 %127, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %124
  br label %135

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

134:                                              ; No predecessors!
  br label %135

135:                                              ; preds = %134, %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #12
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %136)
  store ptr %137, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #12
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = icmp eq ptr %138, null
  %140 = zext i1 %139 to i8
  store i8 %140, ptr %11, align 1, !tbaa !97
  %141 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %142 = trunc i8 %141 to i1
  br i1 %142, label %143, label %147

143:                                              ; preds = %135
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = load i32, ptr %7, align 4, !tbaa !9
  %146 = call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef %144, i32 noundef %145)
  store ptr %146, ptr %10, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %143, %135
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.ImGuiContext, ptr %148, i32 0, i32 33
  %150 = load i32, ptr %149, align 4, !tbaa !98
  %151 = load ptr, ptr %10, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.ImGuiWindow, ptr %151, i32 0, i32 2
  %153 = load i32, ptr %152, align 8, !tbaa !99
  %154 = icmp eq i32 %150, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %147
  call void @llvm.debugtrap()
  br label %156

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

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

163:                                              ; preds = %160, %156
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  %164 = load ptr, ptr %8, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.ImGuiContext, ptr %164, i32 0, i32 12
  %166 = load i32, ptr %165, align 8, !tbaa !96
  store i32 %166, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #12
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.ImGuiWindow, ptr %167, i32 0, i32 79
  %169 = load i32, ptr %168, align 8, !tbaa !113
  %170 = load i32, ptr %12, align 4, !tbaa !9
  %171 = icmp ne i32 %169, %170
  %172 = zext i1 %171 to i8
  store i8 %172, ptr %13, align 1, !tbaa !97
  %173 = load ptr, ptr %8, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.ImGuiContext, ptr %173, i32 0, i32 29
  %175 = getelementptr inbounds %struct.ImVector.3, ptr %174, i32 0, i32 0
  %176 = load i32, ptr %175, align 8, !tbaa !114
  %177 = icmp eq i32 %176, 0
  br i1 %177, label %178, label %183

178:                                              ; preds = %163
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.ImGuiContext, ptr %179, i32 0, i32 17
  %181 = load i8, ptr %180, align 1, !tbaa !115, !range !93, !noundef !94
  %182 = trunc i8 %181 to i1
  br label %183

183:                                              ; preds = %178, %163
  %184 = phi i1 [ false, %163 ], [ %182, %178 ]
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ImGuiWindow, ptr %185, i32 0, i32 45
  %187 = zext i1 %184 to i8
  store i8 %187, ptr %186, align 1, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #12
  %188 = load ptr, ptr %10, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.ImGuiWindow, ptr %188, i32 0, i32 79
  %190 = load i32, ptr %189, align 8, !tbaa !113
  %191 = load i32, ptr %12, align 4, !tbaa !9
  %192 = sub nsw i32 %191, 1
  %193 = icmp slt i32 %190, %192
  %194 = zext i1 %193 to i8
  store i8 %194, ptr %14, align 1, !tbaa !97
  %195 = load i32, ptr %7, align 4, !tbaa !9
  %196 = and i32 %195, 67108864
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %232

198:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #12
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiContext, ptr %199, i32 0, i32 98
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.ImGuiContext, ptr %201, i32 0, i32 99
  %203 = getelementptr inbounds %struct.ImVector.12, ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 8, !tbaa !117
  %205 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %200, i32 noundef %204)
  store ptr %205, ptr %15, align 8, !tbaa !5
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.ImGuiWindow, ptr %206, i32 0, i32 27
  %208 = load i32, ptr %207, align 4, !tbaa !118
  %209 = load ptr, ptr %15, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImGuiPopupData, ptr %209, i32 0, i32 0
  %211 = load i32, ptr %210, align 8, !tbaa !119
  %212 = icmp ne i32 %208, %211
  %213 = zext i1 %212 to i32
  %214 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %215 = trunc i8 %214 to i1
  %216 = zext i1 %215 to i32
  %217 = or i32 %216, %213
  %218 = icmp ne i32 %217, 0
  %219 = zext i1 %218 to i8
  store i8 %219, ptr %14, align 1, !tbaa !97
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.ImGuiPopupData, ptr %221, i32 0, i32 2
  %223 = load ptr, ptr %222, align 8, !tbaa !121
  %224 = icmp ne ptr %220, %223
  %225 = zext i1 %224 to i32
  %226 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %227 = trunc i8 %226 to i1
  %228 = zext i1 %227 to i32
  %229 = or i32 %228, %225
  %230 = icmp ne i32 %229, 0
  %231 = zext i1 %230 to i8
  store i8 %231, ptr %14, align 1, !tbaa !97
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  br label %232

232:                                              ; preds = %198, %183
  %233 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %234 = trunc i8 %233 to i1
  %235 = load ptr, ptr %10, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.ImGuiWindow, ptr %235, i32 0, i32 43
  %237 = zext i1 %234 to i8
  store i8 %237, ptr %236, align 1, !tbaa !122
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ImGuiWindow, ptr %238, i32 0, i32 43
  %240 = load i8, ptr %239, align 1, !tbaa !122, !range !93, !noundef !94
  %241 = trunc i8 %240 to i1
  br i1 %241, label %242, label %244

242:                                              ; preds = %232
  %243 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %243, i32 noundef 8, i1 noundef zeroext true)
  br label %244

244:                                              ; preds = %242, %232
  %245 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %246 = trunc i8 %245 to i1
  br i1 %246, label %247, label %289

247:                                              ; preds = %244
  %248 = load ptr, ptr %10, align 8, !tbaa !5
  %249 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %250 = trunc i8 %249 to i1
  %251 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef %248, i1 noundef zeroext %250, i32 noundef %251)
  %252 = load i32, ptr %7, align 4, !tbaa !9
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.ImGuiWindow, ptr %253, i32 0, i32 3
  store i32 %252, ptr %254, align 4, !tbaa !123
  %255 = load ptr, ptr %8, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ImGuiContext, ptr %255, i32 0, i32 89
  %257 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %256, i32 0, i32 0
  %258 = load i32, ptr %257, align 8, !tbaa !124
  %259 = and i32 %258, 256
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %266

261:                                              ; preds = %247
  %262 = load ptr, ptr %8, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImGuiContext, ptr %262, i32 0, i32 89
  %264 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %263, i32 0, i32 9
  %265 = load i32, ptr %264, align 8, !tbaa !125
  br label %267

266:                                              ; preds = %247
  br label %267

267:                                              ; preds = %266, %261
  %268 = phi i32 [ %265, %261 ], [ 0, %266 ]
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.ImGuiWindow, ptr %269, i32 0, i32 4
  store i32 %268, ptr %270, align 8, !tbaa !126
  %271 = load i32, ptr %12, align 4, !tbaa !9
  %272 = load ptr, ptr %10, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiWindow, ptr %272, i32 0, i32 79
  store i32 %271, ptr %273, align 8, !tbaa !113
  %274 = load ptr, ptr %8, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.ImGuiContext, ptr %274, i32 0, i32 11
  %276 = load double, ptr %275, align 8, !tbaa !127
  %277 = fptrunc double %276 to float
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ImGuiWindow, ptr %278, i32 0, i32 80
  store float %277, ptr %279, align 4, !tbaa !128
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiWindow, ptr %280, i32 0, i32 52
  store i16 0, ptr %281, align 4, !tbaa !129
  %282 = load ptr, ptr %8, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiContext, ptr %282, i32 0, i32 31
  %284 = load i32, ptr %283, align 8, !tbaa !130
  %285 = add nsw i32 %284, 1
  store i32 %285, ptr %283, align 8, !tbaa !130
  %286 = trunc i32 %284 to i16
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ImGuiWindow, ptr %287, i32 0, i32 53
  store i16 %286, ptr %288, align 2, !tbaa !131
  br label %293

289:                                              ; preds = %244
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.ImGuiWindow, ptr %290, i32 0, i32 3
  %292 = load i32, ptr %291, align 4, !tbaa !123
  store i32 %292, ptr %7, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %289, %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #12
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImGuiContext, ptr %294, i32 0, i32 29
  %296 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %295)
  br i1 %296, label %297, label %298

297:                                              ; preds = %293
  br label %304

298:                                              ; preds = %293
  %299 = load ptr, ptr %8, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.ImGuiContext, ptr %299, i32 0, i32 29
  %301 = call noundef nonnull align 8 dereferenceable(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %300)
  %302 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %301, i32 0, i32 0
  %303 = load ptr, ptr %302, align 8, !tbaa !132
  br label %304

304:                                              ; preds = %298, %297
  %305 = phi ptr [ null, %297 ], [ %303, %298 ]
  store ptr %305, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #12
  %306 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %307 = trunc i8 %306 to i1
  br i1 %307, label %308, label %317

308:                                              ; preds = %304
  %309 = load i32, ptr %7, align 4, !tbaa !9
  %310 = and i32 %309, 83886080
  %311 = icmp ne i32 %310, 0
  br i1 %311, label %312, label %314

312:                                              ; preds = %308
  %313 = load ptr, ptr %16, align 8, !tbaa !5
  br label %315

314:                                              ; preds = %308
  br label %315

315:                                              ; preds = %314, %312
  %316 = phi ptr [ %313, %312 ], [ null, %314 ]
  br label %321

317:                                              ; preds = %304
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiWindow, ptr %318, i32 0, i32 89
  %320 = load ptr, ptr %319, align 8, !tbaa !134
  br label %321

321:                                              ; preds = %317, %315
  %322 = phi ptr [ %316, %315 ], [ %320, %317 ]
  store ptr %322, ptr %17, align 8, !tbaa !5
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = icmp ne ptr %323, null
  br i1 %324, label %330, label %325

325:                                              ; preds = %321
  %326 = load i32, ptr %7, align 4, !tbaa !9
  %327 = and i32 %326, 16777216
  %328 = icmp ne i32 %327, 0
  %329 = xor i1 %328, true
  br label %330

330:                                              ; preds = %325, %321
  %331 = phi i1 [ true, %321 ], [ %329, %325 ]
  br i1 %331, label %332, label %333

332:                                              ; preds = %330
  br label %335

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

334:                                              ; No predecessors!
  br label %335

335:                                              ; preds = %334, %332
  %336 = load ptr, ptr %10, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiWindow, ptr %336, i32 0, i32 68
  %338 = getelementptr inbounds %struct.ImVector.30, ptr %337, i32 0, i32 0
  %339 = load i32, ptr %338, align 8, !tbaa !135
  %340 = icmp eq i32 %339, 0
  br i1 %340, label %341, label %346

341:                                              ; preds = %335
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiWindow, ptr %342, i32 0, i32 68
  %344 = load ptr, ptr %10, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImGuiWindow, ptr %344, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %343, ptr noundef nonnull align 4 dereferenceable(4) %345)
  br label %346

346:                                              ; preds = %341, %335
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiContext, ptr %348, i32 0, i32 34
  store ptr %347, ptr %349, align 8, !tbaa !136
  %350 = load ptr, ptr %8, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiContext, ptr %350, i32 0, i32 29
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiContext, ptr %352, i32 0, i32 29
  %354 = getelementptr inbounds %struct.ImVector.3, ptr %353, i32 0, i32 0
  %355 = load i32, ptr %354, align 8, !tbaa !114
  %356 = add nsw i32 %355, 1
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %351, i32 noundef %356)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  %357 = load ptr, ptr %8, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.ImGuiContext, ptr %357, i32 0, i32 29
  %359 = call noundef nonnull align 8 dereferenceable(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
  store ptr %359, ptr %18, align 8, !tbaa !5
  %360 = load ptr, ptr %10, align 8, !tbaa !5
  %361 = load ptr, ptr %18, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %361, i32 0, i32 0
  store ptr %360, ptr %362, align 8, !tbaa !132
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.ImGuiContext, ptr %363, i32 0, i32 88
  %365 = load ptr, ptr %18, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %365, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %366, ptr align 8 %364, i64 80, i1 false), !tbaa.struct !137
  %367 = load i32, ptr %7, align 4, !tbaa !9
  %368 = and i32 %367, 33554432
  %369 = icmp ne i32 %368, 0
  br i1 %369, label %370, label %376

370:                                              ; preds = %346
  %371 = load ptr, ptr %8, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.ImGuiContext, ptr %371, i32 0, i32 85
  %373 = load i32, ptr %372, align 8, !tbaa !139
  %374 = and i32 %373, 1024
  %375 = icmp ne i32 %374, 0
  br label %376

376:                                              ; preds = %370, %346
  %377 = phi i1 [ false, %346 ], [ %375, %370 ]
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %378, i32 0, i32 3
  %380 = zext i1 %377 to i8
  store i8 %380, ptr %379, align 2, !tbaa !140
  %381 = load ptr, ptr %18, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %381, i32 0, i32 2
  call void @_ZN5ImGui23ErrorRecoveryStoreStateEP23ImGuiErrorRecoveryState(ptr noundef %382)
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %383, i32 0, i32 2
  %385 = load ptr, ptr %8, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImGuiContext, ptr %385, i32 0, i32 269
  store ptr %384, ptr %386, align 8, !tbaa !141
  %387 = load i32, ptr %7, align 4, !tbaa !9
  %388 = and i32 %387, 268435456
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %395

390:                                              ; preds = %376
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.ImGuiContext, ptr %391, i32 0, i32 213
  %393 = load i32, ptr %392, align 4, !tbaa !142
  %394 = add nsw i32 %393, 1
  store i32 %394, ptr %392, align 4, !tbaa !142
  br label %395

395:                                              ; preds = %390, %376
  %396 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %397 = trunc i8 %396 to i1
  br i1 %397, label %398, label %415

398:                                              ; preds = %395
  %399 = load ptr, ptr %10, align 8, !tbaa !5
  %400 = load i32, ptr %7, align 4, !tbaa !9
  %401 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %399, i32 noundef %400, ptr noundef %401)
  %402 = load ptr, ptr %16, align 8, !tbaa !5
  %403 = load ptr, ptr %10, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiWindow, ptr %403, i32 0, i32 90
  store ptr %402, ptr %404, align 8, !tbaa !143
  %405 = load i32, ptr %7, align 4, !tbaa !9
  %406 = and i32 %405, 16777216
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %410

408:                                              ; preds = %398
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  br label %411

410:                                              ; preds = %398
  br label %411

411:                                              ; preds = %410, %408
  %412 = phi ptr [ %409, %408 ], [ null, %410 ]
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiWindow, ptr %413, i32 0, i32 95
  store ptr %412, ptr %414, align 8, !tbaa !144
  br label %415

415:                                              ; preds = %411, %395
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.ImGuiWindow, ptr %416, i32 0, i32 4
  %418 = load i32, ptr %417, align 8, !tbaa !126
  %419 = and i32 %418, 256
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %421, label %425

421:                                              ; preds = %415
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.ImGuiContext, ptr %422, i32 0, i32 84
  %424 = load i32, ptr %423, align 4, !tbaa !145
  br label %429

425:                                              ; preds = %415
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ImGuiWindow, ptr %426, i32 0, i32 2
  %428 = load i32, ptr %427, align 8, !tbaa !99
  br label %429

429:                                              ; preds = %425, %421
  %430 = phi i32 [ %424, %421 ], [ %428, %425 ]
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %430)
  %431 = load ptr, ptr %8, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiContext, ptr %431, i32 0, i32 84
  %433 = load i32, ptr %432, align 4, !tbaa !145
  %434 = load ptr, ptr %10, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.ImGuiWindow, ptr %434, i32 0, i32 100
  store i32 %433, ptr %435, align 8, !tbaa !146
  %436 = load i32, ptr %7, align 4, !tbaa !9
  %437 = and i32 %436, 67108864
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %464

439:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #12
  %440 = load ptr, ptr %8, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiContext, ptr %440, i32 0, i32 98
  %442 = load ptr, ptr %8, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.ImGuiContext, ptr %442, i32 0, i32 99
  %444 = getelementptr inbounds %struct.ImVector.12, ptr %443, i32 0, i32 0
  %445 = load i32, ptr %444, align 8, !tbaa !117
  %446 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %441, i32 noundef %445)
  store ptr %446, ptr %19, align 8, !tbaa !5
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = load ptr, ptr %19, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImGuiPopupData, ptr %448, i32 0, i32 2
  store ptr %447, ptr %449, align 8, !tbaa !121
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiWindow, ptr %450, i32 0, i32 69
  %452 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %451, i32 0, i32 15
  %453 = load i32, ptr %452, align 8, !tbaa !147
  %454 = load ptr, ptr %19, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiPopupData, ptr %454, i32 0, i32 4
  store i32 %453, ptr %455, align 8, !tbaa !148
  %456 = load ptr, ptr %8, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.ImGuiContext, ptr %456, i32 0, i32 99
  %458 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %457, ptr noundef nonnull align 8 dereferenceable(52) %458)
  %459 = load ptr, ptr %19, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.ImGuiPopupData, ptr %459, i32 0, i32 0
  %461 = load i32, ptr %460, align 8, !tbaa !119
  %462 = load ptr, ptr %10, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiWindow, ptr %462, i32 0, i32 27
  store i32 %461, ptr %463, align 4, !tbaa !118
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  br label %464

464:                                              ; preds = %439, %429
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  store i8 0, ptr %20, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  store i8 0, ptr %21, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #12
  store i8 0, ptr %22, align 1, !tbaa !97
  %465 = load ptr, ptr %8, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ImGuiContext, ptr %465, i32 0, i32 89
  %467 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %466, i32 0, i32 0
  %468 = load i32, ptr %467, align 8, !tbaa !124
  %469 = and i32 %468, 1
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %525

471:                                              ; preds = %464
  %472 = load ptr, ptr %10, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ImGuiWindow, ptr %472, i32 0, i32 64
  %474 = load i32, ptr %473, align 8
  %475 = shl i32 %474, 24
  %476 = ashr i32 %475, 24
  %477 = load ptr, ptr %8, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiContext, ptr %477, i32 0, i32 89
  %479 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %478, i32 0, i32 1
  %480 = load i32, ptr %479, align 4, !tbaa !149
  %481 = and i32 %476, %480
  %482 = icmp ne i32 %481, 0
  %483 = zext i1 %482 to i8
  store i8 %483, ptr %20, align 1, !tbaa !97
  %484 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %485 = trunc i8 %484 to i1
  br i1 %485, label %486, label %515

486:                                              ; preds = %471
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.ImGuiContext, ptr %487, i32 0, i32 89
  %489 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %488, i32 0, i32 5
  %490 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %489)
  %491 = fcmp ogt float %490, 0x3EE4F8B580000000
  br i1 %491, label %492, label %515

492:                                              ; preds = %486
  %493 = load ptr, ptr %8, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.ImGuiContext, ptr %493, i32 0, i32 89
  %495 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %494, i32 0, i32 4
  %496 = load ptr, ptr %10, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.ImGuiWindow, ptr %496, i32 0, i32 65
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %497, ptr align 8 %495, i64 8, i1 false), !tbaa.struct !150
  %498 = load ptr, ptr %8, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.ImGuiContext, ptr %498, i32 0, i32 89
  %500 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %499, i32 0, i32 5
  %501 = load ptr, ptr %10, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiWindow, ptr %501, i32 0, i32 66
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %502, ptr align 8 %500, i64 8, i1 false), !tbaa.struct !150
  %503 = load ptr, ptr %10, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.ImGuiWindow, ptr %503, i32 0, i32 64
  %505 = load i32, ptr %504, align 8
  %506 = shl i32 %505, 24
  %507 = ashr i32 %506, 24
  %508 = and i32 %507, -15
  %509 = load i32, ptr %504, align 8
  %510 = and i32 %508, 255
  %511 = and i32 %509, -256
  %512 = or i32 %511, %510
  store i32 %512, ptr %504, align 8
  %513 = shl i32 %510, 24
  %514 = ashr i32 %513, 24
  br label %524

515:                                              ; preds = %486, %471
  %516 = load ptr, ptr %10, align 8, !tbaa !5
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.ImGuiContext, ptr %517, i32 0, i32 89
  %519 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %518, i32 0, i32 4
  %520 = load ptr, ptr %8, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.ImGuiContext, ptr %520, i32 0, i32 89
  %522 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %521, i32 0, i32 1
  %523 = load i32, ptr %522, align 4, !tbaa !149
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %516, ptr noundef nonnull align 4 dereferenceable(8) %519, i32 noundef %523)
  br label %524

524:                                              ; preds = %515, %492
  br label %525

525:                                              ; preds = %524, %464
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiContext, ptr %526, i32 0, i32 89
  %528 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %527, i32 0, i32 0
  %529 = load i32, ptr %528, align 8, !tbaa !124
  %530 = and i32 %529, 2
  %531 = icmp ne i32 %530, 0
  br i1 %531, label %532, label %629

532:                                              ; preds = %525
  %533 = load ptr, ptr %10, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.ImGuiWindow, ptr %533, i32 0, i32 64
  %535 = load i32, ptr %534, align 8
  %536 = shl i32 %535, 16
  %537 = ashr i32 %536, 24
  %538 = load ptr, ptr %8, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiContext, ptr %538, i32 0, i32 89
  %540 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %539, i32 0, i32 2
  %541 = load i32, ptr %540, align 8, !tbaa !151
  %542 = and i32 %537, %541
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %551

544:                                              ; preds = %532
  %545 = load ptr, ptr %8, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 89
  %547 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %546, i32 0, i32 6
  %548 = getelementptr inbounds %struct.ImVec2, ptr %547, i32 0, i32 0
  %549 = load float, ptr %548, align 8, !tbaa !152
  %550 = fcmp ogt float %549, 0.000000e+00
  br label %551

551:                                              ; preds = %544, %532
  %552 = phi i1 [ false, %532 ], [ %550, %544 ]
  %553 = zext i1 %552 to i8
  store i8 %553, ptr %21, align 1, !tbaa !97
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ImGuiWindow, ptr %554, i32 0, i32 64
  %556 = load i32, ptr %555, align 8
  %557 = shl i32 %556, 16
  %558 = ashr i32 %557, 24
  %559 = load ptr, ptr %8, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiContext, ptr %559, i32 0, i32 89
  %561 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %560, i32 0, i32 2
  %562 = load i32, ptr %561, align 8, !tbaa !151
  %563 = and i32 %558, %562
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %572

565:                                              ; preds = %551
  %566 = load ptr, ptr %8, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiContext, ptr %566, i32 0, i32 89
  %568 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %567, i32 0, i32 6
  %569 = getelementptr inbounds %struct.ImVec2, ptr %568, i32 0, i32 1
  %570 = load float, ptr %569, align 4, !tbaa !153
  %571 = fcmp ogt float %570, 0.000000e+00
  br label %572

572:                                              ; preds = %565, %551
  %573 = phi i1 [ false, %551 ], [ %571, %565 ]
  %574 = zext i1 %573 to i8
  store i8 %574, ptr %22, align 1, !tbaa !97
  %575 = load ptr, ptr %10, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiWindow, ptr %575, i32 0, i32 4
  %577 = load i32, ptr %576, align 8, !tbaa !126
  %578 = and i32 %577, 4
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %597

580:                                              ; preds = %572
  %581 = load ptr, ptr %10, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiWindow, ptr %581, i32 0, i32 64
  %583 = load i32, ptr %582, align 8
  %584 = shl i32 %583, 16
  %585 = ashr i32 %584, 24
  %586 = and i32 %585, 4
  %587 = icmp eq i32 %586, 0
  br i1 %587, label %588, label %597

588:                                              ; preds = %580
  %589 = load ptr, ptr %10, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.ImGuiWindow, ptr %589, i32 0, i32 9
  %591 = getelementptr inbounds %struct.ImVec2, ptr %590, i32 0, i32 0
  %592 = load float, ptr %591, align 8, !tbaa !154
  %593 = load ptr, ptr %8, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiContext, ptr %593, i32 0, i32 89
  %595 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %594, i32 0, i32 6
  %596 = getelementptr inbounds %struct.ImVec2, ptr %595, i32 0, i32 0
  store float %592, ptr %596, align 8, !tbaa !152
  br label %597

597:                                              ; preds = %588, %580, %572
  %598 = load ptr, ptr %10, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiWindow, ptr %598, i32 0, i32 4
  %600 = load i32, ptr %599, align 8, !tbaa !126
  %601 = and i32 %600, 8
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %620

603:                                              ; preds = %597
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiWindow, ptr %604, i32 0, i32 64
  %606 = load i32, ptr %605, align 8
  %607 = shl i32 %606, 16
  %608 = ashr i32 %607, 24
  %609 = and i32 %608, 4
  %610 = icmp eq i32 %609, 0
  br i1 %610, label %611, label %620

611:                                              ; preds = %603
  %612 = load ptr, ptr %10, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImGuiWindow, ptr %612, i32 0, i32 9
  %614 = getelementptr inbounds %struct.ImVec2, ptr %613, i32 0, i32 1
  %615 = load float, ptr %614, align 4, !tbaa !155
  %616 = load ptr, ptr %8, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiContext, ptr %616, i32 0, i32 89
  %618 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %617, i32 0, i32 6
  %619 = getelementptr inbounds %struct.ImVec2, ptr %618, i32 0, i32 1
  store float %615, ptr %619, align 4, !tbaa !153
  br label %620

620:                                              ; preds = %611, %603, %597
  %621 = load ptr, ptr %10, align 8, !tbaa !5
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiContext, ptr %622, i32 0, i32 89
  %624 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %623, i32 0, i32 6
  %625 = load ptr, ptr %8, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiContext, ptr %625, i32 0, i32 89
  %627 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %626, i32 0, i32 2
  %628 = load i32, ptr %627, align 8, !tbaa !151
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %621, ptr noundef nonnull align 4 dereferenceable(8) %624, i32 noundef %628)
  br label %629

629:                                              ; preds = %620, %525
  %630 = load ptr, ptr %8, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiContext, ptr %630, i32 0, i32 89
  %632 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %631, i32 0, i32 0
  %633 = load i32, ptr %632, align 8, !tbaa !124
  %634 = and i32 %633, 128
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %675

636:                                              ; preds = %629
  %637 = load ptr, ptr %8, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.ImGuiContext, ptr %637, i32 0, i32 89
  %639 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %638, i32 0, i32 8
  %640 = getelementptr inbounds %struct.ImVec2, ptr %639, i32 0, i32 0
  %641 = load float, ptr %640, align 8, !tbaa !156
  %642 = fcmp oge float %641, 0.000000e+00
  br i1 %642, label %643, label %655

643:                                              ; preds = %636
  %644 = load ptr, ptr %8, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiContext, ptr %644, i32 0, i32 89
  %646 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %645, i32 0, i32 8
  %647 = getelementptr inbounds %struct.ImVec2, ptr %646, i32 0, i32 0
  %648 = load float, ptr %647, align 8, !tbaa !156
  %649 = load ptr, ptr %10, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 30
  %651 = getelementptr inbounds %struct.ImVec2, ptr %650, i32 0, i32 0
  store float %648, ptr %651, align 8, !tbaa !157
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiWindow, ptr %652, i32 0, i32 31
  %654 = getelementptr inbounds %struct.ImVec2, ptr %653, i32 0, i32 0
  store float 0.000000e+00, ptr %654, align 8, !tbaa !158
  br label %655

655:                                              ; preds = %643, %636
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiContext, ptr %656, i32 0, i32 89
  %658 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %657, i32 0, i32 8
  %659 = getelementptr inbounds %struct.ImVec2, ptr %658, i32 0, i32 1
  %660 = load float, ptr %659, align 4, !tbaa !159
  %661 = fcmp oge float %660, 0.000000e+00
  br i1 %661, label %662, label %674

662:                                              ; preds = %655
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.ImGuiContext, ptr %663, i32 0, i32 89
  %665 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %664, i32 0, i32 8
  %666 = getelementptr inbounds %struct.ImVec2, ptr %665, i32 0, i32 1
  %667 = load float, ptr %666, align 4, !tbaa !159
  %668 = load ptr, ptr %10, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiWindow, ptr %668, i32 0, i32 30
  %670 = getelementptr inbounds %struct.ImVec2, ptr %669, i32 0, i32 1
  store float %667, ptr %670, align 4, !tbaa !160
  %671 = load ptr, ptr %10, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiWindow, ptr %671, i32 0, i32 31
  %673 = getelementptr inbounds %struct.ImVec2, ptr %672, i32 0, i32 1
  store float 0.000000e+00, ptr %673, align 4, !tbaa !161
  br label %674

674:                                              ; preds = %662, %655
  br label %675

675:                                              ; preds = %674, %629
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiContext, ptr %676, i32 0, i32 89
  %678 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %677, i32 0, i32 0
  %679 = load i32, ptr %678, align 8, !tbaa !124
  %680 = and i32 %679, 4
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %682, label %688

682:                                              ; preds = %675
  %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 7
  %686 = load ptr, ptr %10, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiWindow, ptr %686, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %687, ptr align 8 %685, i64 8, i1 false), !tbaa.struct !150
  br label %695

688:                                              ; preds = %675
  %689 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %690 = trunc i8 %689 to i1
  br i1 %690, label %691, label %694

691:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %692 = load ptr, ptr %10, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiWindow, ptr %692, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %693, ptr align 4 %23, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %694

694:                                              ; preds = %691, %688
  br label %695

695:                                              ; preds = %694, %682
  %696 = load ptr, ptr %8, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.ImGuiContext, ptr %696, i32 0, i32 89
  %698 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %697, i32 0, i32 0
  %699 = load i32, ptr %698, align 8, !tbaa !124
  %700 = and i32 %699, 8
  %701 = icmp ne i32 %700, 0
  br i1 %701, label %702, label %713

702:                                              ; preds = %695
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = load ptr, ptr %8, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiContext, ptr %704, i32 0, i32 89
  %706 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %705, i32 0, i32 10
  %707 = load i8, ptr %706, align 4, !tbaa !162, !range !93, !noundef !94
  %708 = trunc i8 %707 to i1
  %709 = load ptr, ptr %8, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiContext, ptr %709, i32 0, i32 89
  %711 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %710, i32 0, i32 3
  %712 = load i32, ptr %711, align 4, !tbaa !163
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %703, i1 noundef zeroext %708, i32 noundef %712)
  br label %713

713:                                              ; preds = %702, %695
  %714 = load ptr, ptr %8, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.ImGuiContext, ptr %714, i32 0, i32 89
  %716 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %715, i32 0, i32 0
  %717 = load i32, ptr %716, align 8, !tbaa !124
  %718 = and i32 %717, 32
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %722

720:                                              ; preds = %713
  %721 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %721, i32 noundef 0)
  br label %722

722:                                              ; preds = %720, %713
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.ImGuiWindow, ptr %723, i32 0, i32 43
  %725 = load i8, ptr %724, align 1, !tbaa !122, !range !93, !noundef !94
  %726 = trunc i8 %725 to i1
  br i1 %726, label %727, label %729

727:                                              ; preds = %722
  %728 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %728, i32 noundef 8, i1 noundef zeroext false)
  br label %729

729:                                              ; preds = %727, %722
  %730 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %730)
  %731 = load ptr, ptr %18, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %731, i32 0, i32 3
  %733 = load i8, ptr %732, align 2, !tbaa !140, !range !93, !noundef !94
  %734 = trunc i8 %733 to i1
  br i1 %734, label %735, label %742

735:                                              ; preds = %729
  %736 = load ptr, ptr %10, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiWindow, ptr %736, i32 0, i32 91
  %738 = load ptr, ptr %737, align 8, !tbaa !164
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = icmp eq ptr %738, %739
  br i1 %740, label %741, label %742

741:                                              ; preds = %735
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  br label %742

742:                                              ; preds = %741, %735, %729
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiContext, ptr %743, i32 0, i32 34
  store ptr null, ptr %744, align 8, !tbaa !136
  %745 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %746 = trunc i8 %745 to i1
  br i1 %746, label %747, label %2887

747:                                              ; preds = %742
  %748 = load ptr, ptr %10, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.ImGuiWindow, ptr %748, i32 0, i32 42
  %750 = load i8, ptr %749, align 8, !tbaa !165, !range !93, !noundef !94
  %751 = trunc i8 %750 to i1
  br i1 %751, label %2887, label %752

752:                                              ; preds = %747
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  %753 = load i32, ptr %7, align 4, !tbaa !9
  %754 = and i32 %753, 16777216
  %755 = icmp ne i32 %754, 0
  br i1 %755, label %756, label %760

756:                                              ; preds = %752
  %757 = load i32, ptr %7, align 4, !tbaa !9
  %758 = and i32 %757, 33554432
  %759 = icmp ne i32 %758, 0
  br label %760

760:                                              ; preds = %756, %752
  %761 = phi i1 [ false, %752 ], [ %759, %756 ]
  %762 = zext i1 %761 to i8
  store i8 %762, ptr %24, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #12
  %763 = load ptr, ptr %10, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiWindow, ptr %763, i32 0, i32 61
  %765 = load i8, ptr %764, align 1, !tbaa !166
  %766 = sext i8 %765 to i32
  %767 = icmp sgt i32 %766, 0
  %768 = zext i1 %767 to i8
  store i8 %768, ptr %25, align 1, !tbaa !97
  %769 = load ptr, ptr %10, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.ImGuiWindow, ptr %769, i32 0, i32 36
  store i8 1, ptr %770, align 2, !tbaa !167
  %771 = load ptr, ptr %6, align 8, !tbaa !5
  %772 = icmp ne ptr %771, null
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiWindow, ptr %773, i32 0, i32 47
  %775 = zext i1 %772 to i8
  store i8 %775, ptr %774, align 1, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %27)
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiWindow, ptr %776, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %777, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !169
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #12
  %778 = load ptr, ptr %10, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiWindow, ptr %778, i32 0, i32 68
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %779, i32 noundef 1)
  %780 = load ptr, ptr %10, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiWindow, ptr %780, i32 0, i32 87
  %782 = load ptr, ptr %781, align 8, !tbaa !170
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(216) %782)
  %783 = load ptr, ptr %10, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.ImGuiWindow, ptr %783, i32 0, i32 69
  %785 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %784, i32 0, i32 29
  store i32 -1, ptr %785, align 8, !tbaa !171
  %786 = load ptr, ptr %10, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiWindow, ptr %786, i32 0, i32 103
  %788 = load i8, ptr %787, align 4, !tbaa !172, !range !93, !noundef !94
  %789 = trunc i8 %788 to i1
  br i1 %789, label %790, label %792

790:                                              ; preds = %760
  %791 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %791)
  br label %792

792:                                              ; preds = %790, %760
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #12
  store i8 0, ptr %28, align 1, !tbaa !97
  %793 = load ptr, ptr %8, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.ImGuiContext, ptr %793, i32 0, i32 154
  %795 = load ptr, ptr %794, align 8, !tbaa !173
  %796 = icmp ne ptr %795, null
  br i1 %796, label %797, label %804

797:                                              ; preds = %792
  %798 = load ptr, ptr %10, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiWindow, ptr %798, i32 0, i32 3
  %800 = load i32, ptr %799, align 4, !tbaa !123
  %801 = and i32 %800, 131072
  %802 = icmp eq i32 %801, 0
  br i1 %802, label %803, label %804

803:                                              ; preds = %797
  store i8 1, ptr %28, align 1, !tbaa !97
  br label %804

804:                                              ; preds = %803, %797, %792
  %805 = load i8, ptr %28, align 1, !tbaa !97, !range !93, !noundef !94
  %806 = trunc i8 %805 to i1
  br i1 %806, label %807, label %833

807:                                              ; preds = %804
  %808 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %809 = trunc i8 %808 to i1
  br i1 %809, label %833, label %810

810:                                              ; preds = %807
  %811 = load ptr, ptr %5, align 8, !tbaa !5
  %812 = load ptr, ptr %10, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.ImGuiWindow, ptr %812, i32 0, i32 1
  %814 = load ptr, ptr %813, align 8, !tbaa !174
  %815 = call i32 @strcmp(ptr noundef %811, ptr noundef %814) #15
  %816 = icmp ne i32 %815, 0
  br i1 %816, label %817, label %833

817:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #12
  %818 = load ptr, ptr %10, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiWindow, ptr %818, i32 0, i32 24
  %820 = load i32, ptr %819, align 8, !tbaa !175
  %821 = sext i32 %820 to i64
  store i64 %821, ptr %29, align 8, !tbaa !176
  %822 = load ptr, ptr %10, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ImGuiWindow, ptr %822, i32 0, i32 1
  %824 = load ptr, ptr %823, align 8, !tbaa !174
  %825 = load ptr, ptr %5, align 8, !tbaa !5
  %826 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %824, ptr noundef %29, ptr noundef %825)
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiWindow, ptr %827, i32 0, i32 1
  store ptr %826, ptr %828, align 8, !tbaa !174
  %829 = load i64, ptr %29, align 8, !tbaa !176
  %830 = trunc i64 %829 to i32
  %831 = load ptr, ptr %10, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 24
  store i32 %830, ptr %832, align 8, !tbaa !175
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #12
  br label %833

833:                                              ; preds = %817, %810, %807, %804
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = load ptr, ptr %10, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImGuiWindow, ptr %835, i32 0, i32 10
  %837 = load ptr, ptr %10, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.ImGuiWindow, ptr %837, i32 0, i32 11
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %834, ptr noundef %836, ptr noundef %838)
  %839 = load ptr, ptr %10, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.ImGuiWindow, ptr %839, i32 0, i32 60
  %841 = load i8, ptr %840, align 4, !tbaa !178
  %842 = sext i8 %841 to i32
  %843 = icmp sgt i32 %842, 0
  br i1 %843, label %844, label %849

844:                                              ; preds = %833
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 60
  %847 = load i8, ptr %846, align 4, !tbaa !178
  %848 = add i8 %847, -1
  store i8 %848, ptr %846, align 4, !tbaa !178
  br label %849

849:                                              ; preds = %844, %833
  %850 = load ptr, ptr %10, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiWindow, ptr %850, i32 0, i32 61
  %852 = load i8, ptr %851, align 1, !tbaa !166
  %853 = sext i8 %852 to i32
  %854 = icmp sgt i32 %853, 0
  br i1 %854, label %855, label %860

855:                                              ; preds = %849
  %856 = load ptr, ptr %10, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.ImGuiWindow, ptr %856, i32 0, i32 61
  %858 = load i8, ptr %857, align 1, !tbaa !166
  %859 = add i8 %858, -1
  store i8 %859, ptr %857, align 1, !tbaa !166
  br label %860

860:                                              ; preds = %855, %849
  %861 = load ptr, ptr %10, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiWindow, ptr %861, i32 0, i32 62
  %863 = load i8, ptr %862, align 2, !tbaa !179
  %864 = sext i8 %863 to i32
  %865 = icmp sgt i32 %864, 0
  br i1 %865, label %866, label %871

866:                                              ; preds = %860
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiWindow, ptr %867, i32 0, i32 62
  %869 = load i8, ptr %868, align 2, !tbaa !179
  %870 = add i8 %869, -1
  store i8 %870, ptr %868, align 2, !tbaa !179
  br label %871

871:                                              ; preds = %866, %860
  %872 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %873 = trunc i8 %872 to i1
  br i1 %873, label %874, label %883

874:                                              ; preds = %871
  %875 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %876 = trunc i8 %875 to i1
  br i1 %876, label %877, label %880

877:                                              ; preds = %874
  %878 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %879 = trunc i8 %878 to i1
  br i1 %879, label %883, label %880

880:                                              ; preds = %877, %874
  %881 = load ptr, ptr %10, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiWindow, ptr %881, i32 0, i32 61
  store i8 1, ptr %882, align 1, !tbaa !166
  br label %883

883:                                              ; preds = %880, %877, %871
  %884 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %885 = trunc i8 %884 to i1
  br i1 %885, label %886, label %922

886:                                              ; preds = %883
  %887 = load i32, ptr %7, align 4, !tbaa !9
  %888 = and i32 %887, 100663296
  %889 = icmp ne i32 %888, 0
  br i1 %889, label %890, label %922

890:                                              ; preds = %886
  %891 = load ptr, ptr %10, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.ImGuiWindow, ptr %891, i32 0, i32 61
  store i8 1, ptr %892, align 1, !tbaa !166
  %893 = load i32, ptr %7, align 4, !tbaa !9
  %894 = and i32 %893, 64
  %895 = icmp ne i32 %894, 0
  br i1 %895, label %896, label %921

896:                                              ; preds = %890
  %897 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %898 = trunc i8 %897 to i1
  br i1 %898, label %906, label %899

899:                                              ; preds = %896
  %900 = load ptr, ptr %10, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiWindow, ptr %900, i32 0, i32 9
  %902 = getelementptr inbounds %struct.ImVec2, ptr %901, i32 0, i32 0
  store float 0.000000e+00, ptr %902, align 8, !tbaa !154
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiWindow, ptr %903, i32 0, i32 8
  %905 = getelementptr inbounds %struct.ImVec2, ptr %904, i32 0, i32 0
  store float 0.000000e+00, ptr %905, align 8, !tbaa !180
  br label %906

906:                                              ; preds = %899, %896
  %907 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %908 = trunc i8 %907 to i1
  br i1 %908, label %916, label %909

909:                                              ; preds = %906
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImGuiWindow, ptr %910, i32 0, i32 9
  %912 = getelementptr inbounds %struct.ImVec2, ptr %911, i32 0, i32 1
  store float 0.000000e+00, ptr %912, align 4, !tbaa !155
  %913 = load ptr, ptr %10, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiWindow, ptr %913, i32 0, i32 8
  %915 = getelementptr inbounds %struct.ImVec2, ptr %914, i32 0, i32 1
  store float 0.000000e+00, ptr %915, align 4, !tbaa !181
  br label %916

916:                                              ; preds = %909, %906
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %917 = load ptr, ptr %10, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.ImGuiWindow, ptr %917, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %918, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !150
  %919 = load ptr, ptr %10, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.ImGuiWindow, ptr %919, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %920, ptr align 4 %918, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  br label %921

921:                                              ; preds = %916, %890
  br label %922

922:                                              ; preds = %921, %886, %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #12
  %923 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  store ptr %923, ptr %31, align 8, !tbaa !5
  %924 = load ptr, ptr %10, align 8, !tbaa !5
  %925 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %924, ptr noundef %925)
  %926 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %926)
  %927 = load i32, ptr %7, align 4, !tbaa !9
  %928 = and i32 %927, 16777216
  %929 = icmp ne i32 %928, 0
  br i1 %929, label %930, label %936

930:                                              ; preds = %922
  %931 = load ptr, ptr %9, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.ImGuiStyle, ptr %931, i32 0, i32 9
  %933 = load float, ptr %932, align 4, !tbaa !182
  %934 = load ptr, ptr %10, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImGuiWindow, ptr %934, i32 0, i32 15
  store float %933, ptr %935, align 4, !tbaa !183
  br label %956

936:                                              ; preds = %922
  %937 = load i32, ptr %7, align 4, !tbaa !9
  %938 = and i32 %937, 100663296
  %939 = icmp ne i32 %938, 0
  br i1 %939, label %940, label %948

940:                                              ; preds = %936
  %941 = load i32, ptr %7, align 4, !tbaa !9
  %942 = and i32 %941, 134217728
  %943 = icmp ne i32 %942, 0
  br i1 %943, label %948, label %944

944:                                              ; preds = %940
  %945 = load ptr, ptr %9, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImGuiStyle, ptr %945, i32 0, i32 11
  %947 = load float, ptr %946, align 4, !tbaa !184
  br label %952

948:                                              ; preds = %940, %936
  %949 = load ptr, ptr %9, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiStyle, ptr %949, i32 0, i32 4
  %951 = load float, ptr %950, align 4, !tbaa !185
  br label %952

952:                                              ; preds = %948, %944
  %953 = phi float [ %947, %944 ], [ %951, %948 ]
  %954 = load ptr, ptr %10, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiWindow, ptr %954, i32 0, i32 15
  store float %953, ptr %955, align 4, !tbaa !183
  br label %956

956:                                              ; preds = %952, %930
  %957 = load ptr, ptr %9, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImGuiStyle, ptr %957, i32 0, i32 2
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiWindow, ptr %959, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %960, ptr align 4 %958, i64 8, i1 false), !tbaa.struct !150
  %961 = load i32, ptr %7, align 4, !tbaa !9
  %962 = and i32 %961, 16777216
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %964, label %993

964:                                              ; preds = %956
  %965 = load i32, ptr %7, align 4, !tbaa !9
  %966 = and i32 %965, 67108864
  %967 = icmp ne i32 %966, 0
  br i1 %967, label %993, label %968

968:                                              ; preds = %964
  %969 = load ptr, ptr %10, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiWindow, ptr %969, i32 0, i32 4
  %971 = load i32, ptr %970, align 8, !tbaa !126
  %972 = and i32 %971, 2
  %973 = icmp ne i32 %972, 0
  br i1 %973, label %993, label %974

974:                                              ; preds = %968
  %975 = load ptr, ptr %10, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImGuiWindow, ptr %975, i32 0, i32 15
  %977 = load float, ptr %976, align 4, !tbaa !183
  %978 = fcmp oeq float %977, 0.000000e+00
  br i1 %978, label %979, label %993

979:                                              ; preds = %974
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #12
  %980 = load i32, ptr %7, align 4, !tbaa !9
  %981 = and i32 %980, 1024
  %982 = icmp ne i32 %981, 0
  br i1 %982, label %983, label %988

983:                                              ; preds = %979
  %984 = load ptr, ptr %9, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.ImGuiStyle, ptr %984, i32 0, i32 2
  %986 = getelementptr inbounds %struct.ImVec2, ptr %985, i32 0, i32 1
  %987 = load float, ptr %986, align 4, !tbaa !186
  br label %989

988:                                              ; preds = %979
  br label %989

989:                                              ; preds = %988, %983
  %990 = phi float [ %987, %983 ], [ 0.000000e+00, %988 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %990)
  %991 = load ptr, ptr %10, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiWindow, ptr %991, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %992, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #12
  br label %993

993:                                              ; preds = %989, %974, %968, %964, %956
  %994 = load ptr, ptr %10, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiWindow, ptr %994, i32 0, i32 13
  %996 = getelementptr inbounds %struct.ImVec2, ptr %995, i32 0, i32 0
  %997 = load float, ptr %996, align 8, !tbaa !187
  %998 = load ptr, ptr %9, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.ImGuiStyle, ptr %998, i32 0, i32 15
  %1000 = getelementptr inbounds %struct.ImVec2, ptr %999, i32 0, i32 0
  %1001 = load float, ptr %1000, align 4, !tbaa !188
  %1002 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %997, float noundef %1001)
  %1003 = load ptr, ptr %8, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiContext, ptr %1003, i32 0, i32 89
  %1005 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1004, i32 0, i32 15
  %1006 = getelementptr inbounds %struct.ImVec2, ptr %1005, i32 0, i32 0
  %1007 = load float, ptr %1006, align 4, !tbaa !189
  %1008 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1002, float noundef %1007)
  %1009 = load ptr, ptr %10, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiWindow, ptr %1009, i32 0, i32 69
  %1011 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1010, i32 0, i32 22
  %1012 = getelementptr inbounds %struct.ImVec2, ptr %1011, i32 0, i32 0
  store float %1008, ptr %1012, align 4, !tbaa !190
  %1013 = load ptr, ptr %8, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.ImGuiContext, ptr %1013, i32 0, i32 89
  %1015 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1014, i32 0, i32 15
  %1016 = getelementptr inbounds %struct.ImVec2, ptr %1015, i32 0, i32 1
  %1017 = load float, ptr %1016, align 4, !tbaa !191
  %1018 = load ptr, ptr %10, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.ImGuiWindow, ptr %1018, i32 0, i32 69
  %1020 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1019, i32 0, i32 22
  %1021 = getelementptr inbounds %struct.ImVec2, ptr %1020, i32 0, i32 1
  store float %1017, ptr %1021, align 4, !tbaa !192
  %1022 = load i32, ptr %7, align 4, !tbaa !9
  %1023 = and i32 %1022, 1
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1025, label %1026

1025:                                             ; preds = %993
  br label %1036

1026:                                             ; preds = %993
  %1027 = load ptr, ptr %8, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.ImGuiContext, ptr %1027, i32 0, i32 6
  %1029 = load float, ptr %1028, align 8, !tbaa !193
  %1030 = load ptr, ptr %8, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiContext, ptr %1030, i32 0, i32 4
  %1032 = getelementptr inbounds %struct.ImGuiStyle, ptr %1031, i32 0, i32 12
  %1033 = getelementptr inbounds %struct.ImVec2, ptr %1032, i32 0, i32 1
  %1034 = load float, ptr %1033, align 4, !tbaa !194
  %1035 = call float @llvm.fmuladd.f32(float %1034, float 2.000000e+00, float %1029)
  br label %1036

1036:                                             ; preds = %1026, %1025
  %1037 = phi float [ 0.000000e+00, %1025 ], [ %1035, %1026 ]
  %1038 = load ptr, ptr %10, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.ImGuiWindow, ptr %1038, i32 0, i32 16
  store float %1037, ptr %1039, align 8, !tbaa !195
  %1040 = load i32, ptr %7, align 4, !tbaa !9
  %1041 = and i32 %1040, 1024
  %1042 = icmp ne i32 %1041, 0
  br i1 %1042, label %1043, label %1059

1043:                                             ; preds = %1036
  %1044 = load ptr, ptr %10, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiWindow, ptr %1044, i32 0, i32 69
  %1046 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1045, i32 0, i32 22
  %1047 = getelementptr inbounds %struct.ImVec2, ptr %1046, i32 0, i32 1
  %1048 = load float, ptr %1047, align 4, !tbaa !192
  %1049 = load ptr, ptr %8, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiContext, ptr %1049, i32 0, i32 6
  %1051 = load float, ptr %1050, align 8, !tbaa !193
  %1052 = fadd float %1048, %1051
  %1053 = load ptr, ptr %8, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiContext, ptr %1053, i32 0, i32 4
  %1055 = getelementptr inbounds %struct.ImGuiStyle, ptr %1054, i32 0, i32 12
  %1056 = getelementptr inbounds %struct.ImVec2, ptr %1055, i32 0, i32 1
  %1057 = load float, ptr %1056, align 4, !tbaa !194
  %1058 = call float @llvm.fmuladd.f32(float %1057, float 2.000000e+00, float %1052)
  br label %1060

1059:                                             ; preds = %1036
  br label %1060

1060:                                             ; preds = %1059, %1043
  %1061 = phi float [ %1058, %1043 ], [ 0.000000e+00, %1059 ]
  %1062 = load ptr, ptr %10, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiWindow, ptr %1062, i32 0, i32 17
  store float %1061, ptr %1063, align 4, !tbaa !196
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  %1064 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1065 = trunc i8 %1064 to i1
  %1066 = zext i1 %1065 to i8
  store i8 %1066, ptr %33, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #12
  %1067 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1068 = trunc i8 %1067 to i1
  %1069 = zext i1 %1068 to i8
  store i8 %1069, ptr %34, align 1, !tbaa !97
  %1070 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1071 = trunc i8 %1070 to i1
  br i1 %1071, label %1072, label %1079

1072:                                             ; preds = %1060
  %1073 = load ptr, ptr %10, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiWindow, ptr %1073, i32 0, i32 12
  %1075 = getelementptr inbounds %struct.ImVec2, ptr %1074, i32 0, i32 0
  %1076 = load float, ptr %1075, align 8, !tbaa !197
  %1077 = fcmp une float %1076, 0.000000e+00
  br i1 %1077, label %1078, label %1079

1078:                                             ; preds = %1072
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1079

1079:                                             ; preds = %1078, %1072, %1060
  %1080 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1082, label %1089

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr %10, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiWindow, ptr %1083, i32 0, i32 12
  %1085 = getelementptr inbounds %struct.ImVec2, ptr %1084, i32 0, i32 1
  %1086 = load float, ptr %1085, align 4, !tbaa !198
  %1087 = fcmp une float %1086, 0.000000e+00
  br i1 %1087, label %1088, label %1089

1088:                                             ; preds = %1082
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1089

1089:                                             ; preds = %1088, %1082, %1079
  %1090 = load i32, ptr %7, align 4, !tbaa !9
  %1091 = and i32 %1090, 1
  %1092 = icmp ne i32 %1091, 0
  br i1 %1092, label %1165, label %1093

1093:                                             ; preds = %1089
  %1094 = load i32, ptr %7, align 4, !tbaa !9
  %1095 = and i32 %1094, 32
  %1096 = icmp ne i32 %1095, 0
  br i1 %1096, label %1165, label %1097

1097:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #12
  %1098 = load ptr, ptr %10, align 8, !tbaa !5
  %1099 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1098)
  %1100 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 0
  %1101 = extractvalue { <2 x float>, <2 x float> } %1099, 0
  store <2 x float> %1101, ptr %1100, align 4
  %1102 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 1
  %1103 = extractvalue { <2 x float>, <2 x float> } %1099, 1
  store <2 x float> %1103, ptr %1102, align 4
  %1104 = load ptr, ptr %8, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImGuiContext, ptr %1104, i32 0, i32 35
  %1106 = load ptr, ptr %1105, align 8, !tbaa !199
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = icmp eq ptr %1106, %1107
  br i1 %1108, label %1109, label %1143

1109:                                             ; preds = %1097
  %1110 = load ptr, ptr %8, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.ImGuiContext, ptr %1110, i32 0, i32 48
  %1112 = load i32, ptr %1111, align 4, !tbaa !200
  %1113 = icmp eq i32 %1112, 0
  br i1 %1113, label %1114, label %1143

1114:                                             ; preds = %1109
  %1115 = load ptr, ptr %8, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiContext, ptr %1115, i32 0, i32 49
  %1117 = load i32, ptr %1116, align 8, !tbaa !201
  %1118 = icmp eq i32 %1117, 0
  br i1 %1118, label %1119, label %1143

1119:                                             ; preds = %1114
  %1120 = load ptr, ptr %8, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.ImGuiContext, ptr %1120, i32 0, i32 56
  %1122 = load i32, ptr %1121, align 4, !tbaa !202
  %1123 = icmp eq i32 %1122, 0
  br i1 %1123, label %1124, label %1143

1124:                                             ; preds = %1119
  %1125 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 0
  %1126 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 1
  %1127 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1125, ptr noundef nonnull align 4 dereferenceable(8) %1126, i1 noundef zeroext true)
  br i1 %1127, label %1128, label %1143

1128:                                             ; preds = %1124
  %1129 = load ptr, ptr %8, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.ImGuiContext, ptr %1129, i32 0, i32 2
  %1131 = getelementptr inbounds %struct.ImGuiIO, ptr %1130, i32 0, i32 82
  %1132 = getelementptr inbounds [5 x i16], ptr %1131, i64 0, i64 0
  %1133 = load i16, ptr %1132, align 2, !tbaa !203
  %1134 = zext i16 %1133 to i32
  %1135 = icmp eq i32 %1134, 2
  br i1 %1135, label %1136, label %1142

1136:                                             ; preds = %1128
  %1137 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 655)
  %1138 = icmp eq i32 %1137, -1
  br i1 %1138, label %1139, label %1142

1139:                                             ; preds = %1136
  %1140 = load ptr, ptr %10, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.ImGuiWindow, ptr %1140, i32 0, i32 40
  store i8 1, ptr %1141, align 2, !tbaa !204
  br label %1142

1142:                                             ; preds = %1139, %1136, %1128
  br label %1143

1143:                                             ; preds = %1142, %1124, %1119, %1114, %1109, %1097
  %1144 = load ptr, ptr %10, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 40
  %1146 = load i8, ptr %1145, align 2, !tbaa !204, !range !93, !noundef !94
  %1147 = trunc i8 %1146 to i1
  br i1 %1147, label %1148, label %1164

1148:                                             ; preds = %1143
  %1149 = load ptr, ptr %10, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImGuiWindow, ptr %1149, i32 0, i32 39
  %1151 = load i8, ptr %1150, align 1, !tbaa !205, !range !93, !noundef !94
  %1152 = trunc i8 %1151 to i1
  %1153 = xor i1 %1152, true
  %1154 = load ptr, ptr %10, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.ImGuiWindow, ptr %1154, i32 0, i32 39
  %1156 = zext i1 %1153 to i8
  store i8 %1156, ptr %1155, align 1, !tbaa !205
  %1157 = load ptr, ptr %10, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiWindow, ptr %1157, i32 0, i32 39
  %1159 = load i8, ptr %1158, align 1, !tbaa !205, !range !93, !noundef !94
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1162, label %1161

1161:                                             ; preds = %1148
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1162

1162:                                             ; preds = %1161, %1148
  %1163 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1163)
  br label %1164

1164:                                             ; preds = %1162, %1143
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #12
  br label %1168

1165:                                             ; preds = %1093, %1089
  %1166 = load ptr, ptr %10, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiWindow, ptr %1166, i32 0, i32 39
  store i8 0, ptr %1167, align 1, !tbaa !205
  br label %1168

1168:                                             ; preds = %1165, %1164
  %1169 = load ptr, ptr %10, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.ImGuiWindow, ptr %1169, i32 0, i32 40
  store i8 0, ptr %1170, align 2, !tbaa !204
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiWindow, ptr %1171, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %1172, i64 8, i1 false), !tbaa.struct !150
  %1173 = load ptr, ptr %10, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImGuiWindow, ptr %1173, i32 0, i32 18
  store float 0.000000e+00, ptr %1174, align 8, !tbaa !206
  %1175 = load ptr, ptr %10, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.ImGuiWindow, ptr %1175, i32 0, i32 20
  store float 0.000000e+00, ptr %1176, align 8, !tbaa !207
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.ImGuiWindow, ptr %1177, i32 0, i32 16
  %1179 = load float, ptr %1178, align 8, !tbaa !195
  %1180 = load ptr, ptr %10, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.ImGuiWindow, ptr %1180, i32 0, i32 17
  %1182 = load float, ptr %1181, align 4, !tbaa !196
  %1183 = fadd float %1179, %1182
  %1184 = load ptr, ptr %10, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.ImGuiWindow, ptr %1184, i32 0, i32 19
  store float %1183, ptr %1185, align 4, !tbaa !208
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.ImGuiWindow, ptr %1186, i32 0, i32 21
  store float 0.000000e+00, ptr %1187, align 4, !tbaa !209
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1188 = load ptr, ptr %10, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.ImGuiWindow, ptr %1188, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1189, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #12
  %1190 = load ptr, ptr %10, align 8, !tbaa !5
  %1191 = load ptr, ptr %10, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ImGuiWindow, ptr %1191, i32 0, i32 11
  %1193 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1190, ptr noundef nonnull align 4 dereferenceable(8) %1192)
  store <2 x float> %1193, ptr %38, align 4
  %1194 = load i32, ptr %7, align 4, !tbaa !9
  %1195 = and i32 %1194, 64
  %1196 = icmp ne i32 %1195, 0
  br i1 %1196, label %1197, label %1221

1197:                                             ; preds = %1168
  %1198 = load ptr, ptr %10, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.ImGuiWindow, ptr %1198, i32 0, i32 39
  %1200 = load i8, ptr %1199, align 1, !tbaa !205, !range !93, !noundef !94
  %1201 = trunc i8 %1200 to i1
  br i1 %1201, label %1221, label %1202

1202:                                             ; preds = %1197
  %1203 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1204 = trunc i8 %1203 to i1
  br i1 %1204, label %1211, label %1205

1205:                                             ; preds = %1202
  %1206 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1207 = load float, ptr %1206, align 4, !tbaa !210
  %1208 = load ptr, ptr %10, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.ImGuiWindow, ptr %1208, i32 0, i32 9
  %1210 = getelementptr inbounds %struct.ImVec2, ptr %1209, i32 0, i32 0
  store float %1207, ptr %1210, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1211

1211:                                             ; preds = %1205, %1202
  %1212 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1213 = trunc i8 %1212 to i1
  br i1 %1213, label %1220, label %1214

1214:                                             ; preds = %1211
  %1215 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1216 = load float, ptr %1215, align 4, !tbaa !211
  %1217 = load ptr, ptr %10, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.ImGuiWindow, ptr %1217, i32 0, i32 9
  %1219 = getelementptr inbounds %struct.ImVec2, ptr %1218, i32 0, i32 1
  store float %1216, ptr %1219, align 4, !tbaa !155
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1220

1220:                                             ; preds = %1214, %1211
  br label %1302

1221:                                             ; preds = %1197, %1168
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 55
  %1224 = load i8, ptr %1223, align 2, !tbaa !212
  %1225 = sext i8 %1224 to i32
  %1226 = icmp sgt i32 %1225, 0
  br i1 %1226, label %1233, label %1227

1227:                                             ; preds = %1221
  %1228 = load ptr, ptr %10, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.ImGuiWindow, ptr %1228, i32 0, i32 56
  %1230 = load i8, ptr %1229, align 1, !tbaa !213
  %1231 = sext i8 %1230 to i32
  %1232 = icmp sgt i32 %1231, 0
  br i1 %1232, label %1233, label %1301

1233:                                             ; preds = %1227, %1221
  %1234 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1263, label %1236

1236:                                             ; preds = %1233
  %1237 = load ptr, ptr %10, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ImGuiWindow, ptr %1237, i32 0, i32 55
  %1239 = load i8, ptr %1238, align 2, !tbaa !212
  %1240 = sext i8 %1239 to i32
  %1241 = icmp sgt i32 %1240, 0
  br i1 %1241, label %1242, label %1263

1242:                                             ; preds = %1236
  %1243 = load ptr, ptr %10, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiWindow, ptr %1243, i32 0, i32 57
  %1245 = load i8, ptr %1244, align 4, !tbaa !214, !range !93, !noundef !94
  %1246 = trunc i8 %1245 to i1
  br i1 %1246, label %1247, label %1255

1247:                                             ; preds = %1242
  %1248 = load ptr, ptr %10, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiWindow, ptr %1248, i32 0, i32 9
  %1250 = getelementptr inbounds %struct.ImVec2, ptr %1249, i32 0, i32 0
  %1251 = load float, ptr %1250, align 8, !tbaa !154
  %1252 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1253 = load float, ptr %1252, align 4, !tbaa !210
  %1254 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1251, float noundef %1253)
  br label %1258

1255:                                             ; preds = %1242
  %1256 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1257 = load float, ptr %1256, align 4, !tbaa !210
  br label %1258

1258:                                             ; preds = %1255, %1247
  %1259 = phi float [ %1254, %1247 ], [ %1257, %1255 ]
  %1260 = load ptr, ptr %10, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.ImGuiWindow, ptr %1260, i32 0, i32 9
  %1262 = getelementptr inbounds %struct.ImVec2, ptr %1261, i32 0, i32 0
  store float %1259, ptr %1262, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1263

1263:                                             ; preds = %1258, %1236, %1233
  %1264 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1265 = trunc i8 %1264 to i1
  br i1 %1265, label %1293, label %1266

1266:                                             ; preds = %1263
  %1267 = load ptr, ptr %10, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiWindow, ptr %1267, i32 0, i32 56
  %1269 = load i8, ptr %1268, align 1, !tbaa !213
  %1270 = sext i8 %1269 to i32
  %1271 = icmp sgt i32 %1270, 0
  br i1 %1271, label %1272, label %1293

1272:                                             ; preds = %1266
  %1273 = load ptr, ptr %10, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiWindow, ptr %1273, i32 0, i32 57
  %1275 = load i8, ptr %1274, align 4, !tbaa !214, !range !93, !noundef !94
  %1276 = trunc i8 %1275 to i1
  br i1 %1276, label %1277, label %1285

1277:                                             ; preds = %1272
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiWindow, ptr %1278, i32 0, i32 9
  %1280 = getelementptr inbounds %struct.ImVec2, ptr %1279, i32 0, i32 1
  %1281 = load float, ptr %1280, align 4, !tbaa !155
  %1282 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1283 = load float, ptr %1282, align 4, !tbaa !211
  %1284 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1281, float noundef %1283)
  br label %1288

1285:                                             ; preds = %1272
  %1286 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1287 = load float, ptr %1286, align 4, !tbaa !211
  br label %1288

1288:                                             ; preds = %1285, %1277
  %1289 = phi float [ %1284, %1277 ], [ %1287, %1285 ]
  %1290 = load ptr, ptr %10, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiWindow, ptr %1290, i32 0, i32 9
  %1292 = getelementptr inbounds %struct.ImVec2, ptr %1291, i32 0, i32 1
  store float %1289, ptr %1292, align 4, !tbaa !155
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1293

1293:                                             ; preds = %1288, %1266, %1263
  %1294 = load ptr, ptr %10, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiWindow, ptr %1294, i32 0, i32 39
  %1296 = load i8, ptr %1295, align 1, !tbaa !205, !range !93, !noundef !94
  %1297 = trunc i8 %1296 to i1
  br i1 %1297, label %1300, label %1298

1298:                                             ; preds = %1293
  %1299 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1299)
  br label %1300

1300:                                             ; preds = %1298, %1293
  br label %1301

1301:                                             ; preds = %1300, %1227
  br label %1302

1302:                                             ; preds = %1301, %1220
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %1303 = load ptr, ptr %10, align 8, !tbaa !5
  %1304 = load ptr, ptr %10, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.ImGuiWindow, ptr %1304, i32 0, i32 9
  %1306 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1303, ptr noundef nonnull align 4 dereferenceable(8) %1305)
  store <2 x float> %1306, ptr %39, align 4
  %1307 = load ptr, ptr %10, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ImGuiWindow, ptr %1307, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1308, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %1309 = load ptr, ptr %10, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.ImGuiWindow, ptr %1309, i32 0, i32 39
  %1311 = load i8, ptr %1310, align 1, !tbaa !205, !range !93, !noundef !94
  %1312 = trunc i8 %1311 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #12
  br i1 %1312, label %1313, label %1325

1313:                                             ; preds = %1302
  %1314 = load i32, ptr %7, align 4, !tbaa !9
  %1315 = and i32 %1314, 16777216
  %1316 = icmp ne i32 %1315, 0
  br i1 %1316, label %1325, label %1317

1317:                                             ; preds = %1313
  %1318 = load ptr, ptr %10, align 8, !tbaa !5
  %1319 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1318)
  %1320 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 0
  %1321 = extractvalue { <2 x float>, <2 x float> } %1319, 0
  store <2 x float> %1321, ptr %1320, align 4
  %1322 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 1
  %1323 = extractvalue { <2 x float>, <2 x float> } %1319, 1
  store <2 x float> %1323, ptr %1322, align 4
  %1324 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %1324, ptr %40, align 4
  br label %1328

1325:                                             ; preds = %1313, %1302
  %1326 = load ptr, ptr %10, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.ImGuiWindow, ptr %1326, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1327, i64 8, i1 false), !tbaa.struct !150
  br label %1328

1328:                                             ; preds = %1325, %1317
  %1329 = load ptr, ptr %10, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.ImGuiWindow, ptr %1329, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1330, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  %1331 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %1332 = trunc i8 %1331 to i1
  br i1 %1332, label %1333, label %1354

1333:                                             ; preds = %1328
  %1334 = load ptr, ptr %10, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.ImGuiWindow, ptr %1334, i32 0, i32 59
  store i32 -1, ptr %1335, align 8, !tbaa !215
  %1336 = load i32, ptr %7, align 4, !tbaa !9
  %1337 = and i32 %1336, 67108864
  %1338 = icmp ne i32 %1337, 0
  br i1 %1338, label %1339, label %1353

1339:                                             ; preds = %1333
  %1340 = load i32, ptr %7, align 4, !tbaa !9
  %1341 = and i32 %1340, 134217728
  %1342 = icmp ne i32 %1341, 0
  br i1 %1342, label %1353, label %1343

1343:                                             ; preds = %1339
  %1344 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1353, label %1346

1346:                                             ; preds = %1343
  %1347 = load ptr, ptr %8, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiContext, ptr %1347, i32 0, i32 99
  %1349 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1348)
  %1350 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1349, i32 0, i32 7
  %1351 = load ptr, ptr %10, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.ImGuiWindow, ptr %1351, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1352, ptr align 4 %1350, i64 8, i1 false), !tbaa.struct !150
  br label %1353

1353:                                             ; preds = %1346, %1343, %1339, %1333
  br label %1354

1354:                                             ; preds = %1353, %1328
  %1355 = load i32, ptr %7, align 4, !tbaa !9
  %1356 = and i32 %1355, 16777216
  %1357 = icmp ne i32 %1356, 0
  br i1 %1357, label %1358, label %1399

1358:                                             ; preds = %1354
  %1359 = load ptr, ptr %17, align 8, !tbaa !5
  %1360 = icmp ne ptr %1359, null
  br i1 %1360, label %1361, label %1366

1361:                                             ; preds = %1358
  %1362 = load ptr, ptr %17, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ImGuiWindow, ptr %1362, i32 0, i32 36
  %1364 = load i8, ptr %1363, align 2, !tbaa !167, !range !93, !noundef !94
  %1365 = trunc i8 %1364 to i1
  br label %1366

1366:                                             ; preds = %1361, %1358
  %1367 = phi i1 [ false, %1358 ], [ %1365, %1361 ]
  br i1 %1367, label %1368, label %1369

1368:                                             ; preds = %1366
  br label %1371

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

1370:                                             ; No predecessors!
  br label %1371

1371:                                             ; preds = %1370, %1368
  %1372 = load ptr, ptr %17, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiWindow, ptr %1372, i32 0, i32 69
  %1374 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1373, i32 0, i32 26
  %1375 = getelementptr inbounds %struct.ImVector.2, ptr %1374, i32 0, i32 0
  %1376 = load i32, ptr %1375, align 8, !tbaa !216
  %1377 = trunc i32 %1376 to i16
  %1378 = load ptr, ptr %10, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.ImGuiWindow, ptr %1378, i32 0, i32 52
  store i16 %1377, ptr %1379, align 4, !tbaa !129
  %1380 = load ptr, ptr %17, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiWindow, ptr %1380, i32 0, i32 69
  %1382 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1381, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1382, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1383 = load i32, ptr %7, align 4, !tbaa !9
  %1384 = and i32 %1383, 67108864
  %1385 = icmp ne i32 %1384, 0
  br i1 %1385, label %1398, label %1386

1386:                                             ; preds = %1371
  %1387 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1388 = trunc i8 %1387 to i1
  br i1 %1388, label %1398, label %1389

1389:                                             ; preds = %1386
  %1390 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1398, label %1392

1392:                                             ; preds = %1389
  %1393 = load ptr, ptr %17, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.ImGuiWindow, ptr %1393, i32 0, i32 69
  %1395 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1394, i32 0, i32 0
  %1396 = load ptr, ptr %10, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.ImGuiWindow, ptr %1396, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1397, ptr align 8 %1395, i64 8, i1 false), !tbaa.struct !150
  br label %1398

1398:                                             ; preds = %1392, %1389, %1386, %1371
  br label %1399

1399:                                             ; preds = %1398, %1354
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #12
  %1400 = load ptr, ptr %10, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiWindow, ptr %1400, i32 0, i32 65
  %1402 = getelementptr inbounds %struct.ImVec2, ptr %1401, i32 0, i32 0
  %1403 = load float, ptr %1402, align 4, !tbaa !217
  %1404 = fcmp une float %1403, 0x47EFFFFFE0000000
  br i1 %1404, label %1405, label %1411

1405:                                             ; preds = %1399
  %1406 = load ptr, ptr %10, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.ImGuiWindow, ptr %1406, i32 0, i32 61
  %1408 = load i8, ptr %1407, align 1, !tbaa !166
  %1409 = sext i8 %1408 to i32
  %1410 = icmp eq i32 %1409, 0
  br label %1411

1411:                                             ; preds = %1405, %1399
  %1412 = phi i1 [ false, %1399 ], [ %1410, %1405 ]
  %1413 = zext i1 %1412 to i8
  store i8 %1413, ptr %42, align 1, !tbaa !97
  %1414 = load i8, ptr %42, align 1, !tbaa !97, !range !93, !noundef !94
  %1415 = trunc i8 %1414 to i1
  br i1 %1415, label %1416, label %1426

1416:                                             ; preds = %1411
  %1417 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %1418 = load ptr, ptr %10, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.ImGuiWindow, ptr %1418, i32 0, i32 65
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %1420 = load ptr, ptr %10, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.ImGuiWindow, ptr %1420, i32 0, i32 8
  %1422 = load ptr, ptr %10, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.ImGuiWindow, ptr %1422, i32 0, i32 66
  %1424 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1421, ptr noundef nonnull align 4 dereferenceable(8) %1423)
  store <2 x float> %1424, ptr %44, align 4
  %1425 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1419, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1425, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1417, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  br label %1468

1426:                                             ; preds = %1411
  %1427 = load i32, ptr %7, align 4, !tbaa !9
  %1428 = and i32 %1427, 268435456
  %1429 = icmp ne i32 %1428, 0
  br i1 %1429, label %1430, label %1435

1430:                                             ; preds = %1426
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  %1431 = load ptr, ptr %10, align 8, !tbaa !5
  %1432 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1431)
  store <2 x float> %1432, ptr %45, align 4
  %1433 = load ptr, ptr %10, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.ImGuiWindow, ptr %1433, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1434, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %1467

1435:                                             ; preds = %1426
  %1436 = load i32, ptr %7, align 4, !tbaa !9
  %1437 = and i32 %1436, 67108864
  %1438 = icmp ne i32 %1437, 0
  br i1 %1438, label %1439, label %1450

1439:                                             ; preds = %1435
  %1440 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1441 = trunc i8 %1440 to i1
  br i1 %1441, label %1450, label %1442

1442:                                             ; preds = %1439
  %1443 = load i8, ptr %25, align 1, !tbaa !97, !range !93, !noundef !94
  %1444 = trunc i8 %1443 to i1
  br i1 %1444, label %1445, label %1450

1445:                                             ; preds = %1442
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #12
  %1446 = load ptr, ptr %10, align 8, !tbaa !5
  %1447 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1446)
  store <2 x float> %1447, ptr %46, align 4
  %1448 = load ptr, ptr %10, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ImGuiWindow, ptr %1448, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1449, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %1466

1450:                                             ; preds = %1442, %1439, %1435
  %1451 = load i32, ptr %7, align 4, !tbaa !9
  %1452 = and i32 %1451, 33554432
  %1453 = icmp ne i32 %1452, 0
  br i1 %1453, label %1454, label %1465

1454:                                             ; preds = %1450
  %1455 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1456 = trunc i8 %1455 to i1
  br i1 %1456, label %1465, label %1457

1457:                                             ; preds = %1454
  %1458 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1459 = trunc i8 %1458 to i1
  br i1 %1459, label %1465, label %1460

1460:                                             ; preds = %1457
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %1461 = load ptr, ptr %10, align 8, !tbaa !5
  %1462 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1461)
  store <2 x float> %1462, ptr %47, align 4
  %1463 = load ptr, ptr %10, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.ImGuiWindow, ptr %1463, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1464, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1465

1465:                                             ; preds = %1460, %1457, %1454, %1450
  br label %1466

1466:                                             ; preds = %1465, %1445
  br label %1467

1467:                                             ; preds = %1466, %1430
  br label %1468

1468:                                             ; preds = %1467, %1416
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #12
  %1469 = load ptr, ptr %31, align 8, !tbaa !5
  %1470 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208) %1469)
  %1471 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1472 = extractvalue { <2 x float>, <2 x float> } %1470, 0
  store <2 x float> %1472, ptr %1471, align 4
  %1473 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1474 = extractvalue { <2 x float>, <2 x float> } %1470, 1
  store <2 x float> %1474, ptr %1473, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #12
  %1475 = load ptr, ptr %31, align 8, !tbaa !5
  %1476 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208) %1475)
  %1477 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 0
  %1478 = extractvalue { <2 x float>, <2 x float> } %1476, 0
  store <2 x float> %1478, ptr %1477, align 4
  %1479 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 1
  %1480 = extractvalue { <2 x float>, <2 x float> } %1476, 1
  store <2 x float> %1480, ptr %1479, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %1481 = load ptr, ptr %9, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.ImGuiStyle, ptr %1481, i32 0, i32 39
  %1483 = load ptr, ptr %9, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiStyle, ptr %1483, i32 0, i32 40
  %1485 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1482, ptr noundef nonnull align 4 dereferenceable(8) %1484)
  store <2 x float> %1485, ptr %50, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #12
  %1486 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 0
  %1487 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1486, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1487, ptr %52, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #12
  %1488 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 1
  %1489 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1488, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1489, ptr %53, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %51, ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %53)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  %1490 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1491 = trunc i8 %1490 to i1
  br i1 %1491, label %1505, label %1492

1492:                                             ; preds = %1468
  %1493 = load i32, ptr %7, align 4, !tbaa !9
  %1494 = and i32 %1493, 16777216
  %1495 = icmp ne i32 %1494, 0
  br i1 %1495, label %1505, label %1496

1496:                                             ; preds = %1492
  %1497 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1498 = fcmp ogt float %1497, 0.000000e+00
  br i1 %1498, label %1499, label %1504

1499:                                             ; preds = %1496
  %1500 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1501 = fcmp ogt float %1500, 0.000000e+00
  br i1 %1501, label %1502, label %1504

1502:                                             ; preds = %1499
  %1503 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1503, ptr noundef nonnull align 4 dereferenceable(16) %51)
  br label %1504

1504:                                             ; preds = %1502, %1499, %1496
  br label %1505

1505:                                             ; preds = %1504, %1492, %1468
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #12
  %1506 = load ptr, ptr %10, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiWindow, ptr %1506, i32 0, i32 7
  %1508 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1507)
  store <2 x float> %1508, ptr %54, align 4
  %1509 = load ptr, ptr %10, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.ImGuiWindow, ptr %1509, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1510, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #12
  %1511 = load i32, ptr %7, align 4, !tbaa !9
  %1512 = and i32 %1511, 16777216
  %1513 = icmp ne i32 %1512, 0
  br i1 %1513, label %1514, label %1518

1514:                                             ; preds = %1505
  %1515 = load ptr, ptr %9, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.ImGuiStyle, ptr %1515, i32 0, i32 8
  %1517 = load float, ptr %1516, align 4, !tbaa !218
  br label %1536

1518:                                             ; preds = %1505
  %1519 = load i32, ptr %7, align 4, !tbaa !9
  %1520 = and i32 %1519, 67108864
  %1521 = icmp ne i32 %1520, 0
  br i1 %1521, label %1522, label %1530

1522:                                             ; preds = %1518
  %1523 = load i32, ptr %7, align 4, !tbaa !9
  %1524 = and i32 %1523, 134217728
  %1525 = icmp ne i32 %1524, 0
  br i1 %1525, label %1530, label %1526

1526:                                             ; preds = %1522
  %1527 = load ptr, ptr %9, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiStyle, ptr %1527, i32 0, i32 10
  %1529 = load float, ptr %1528, align 4, !tbaa !219
  br label %1534

1530:                                             ; preds = %1522, %1518
  %1531 = load ptr, ptr %9, align 8, !tbaa !5
  %1532 = getelementptr inbounds %struct.ImGuiStyle, ptr %1531, i32 0, i32 3
  %1533 = load float, ptr %1532, align 4, !tbaa !220
  br label %1534

1534:                                             ; preds = %1530, %1526
  %1535 = phi float [ %1529, %1526 ], [ %1533, %1530 ]
  br label %1536

1536:                                             ; preds = %1534, %1514
  %1537 = phi float [ %1517, %1514 ], [ %1535, %1534 ]
  %1538 = load ptr, ptr %10, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.ImGuiWindow, ptr %1538, i32 0, i32 14
  store float %1537, ptr %1539, align 8, !tbaa !221
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #12
  store i8 0, ptr %55, align 1, !tbaa !97
  %1540 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %1541 = trunc i8 %1540 to i1
  br i1 %1541, label %1542, label %1558

1542:                                             ; preds = %1536
  %1543 = load i32, ptr %7, align 4, !tbaa !9
  %1544 = and i32 %1543, 4096
  %1545 = icmp ne i32 %1544, 0
  br i1 %1545, label %1558, label %1546

1546:                                             ; preds = %1542
  %1547 = load i32, ptr %7, align 4, !tbaa !9
  %1548 = and i32 %1547, 67108864
  %1549 = icmp ne i32 %1548, 0
  br i1 %1549, label %1550, label %1551

1550:                                             ; preds = %1546
  store i8 1, ptr %55, align 1, !tbaa !97
  br label %1557

1551:                                             ; preds = %1546
  %1552 = load i32, ptr %7, align 4, !tbaa !9
  %1553 = and i32 %1552, 50331648
  %1554 = icmp eq i32 %1553, 0
  br i1 %1554, label %1555, label %1556

1555:                                             ; preds = %1551
  store i8 1, ptr %55, align 1, !tbaa !97
  br label %1556

1556:                                             ; preds = %1555, %1551
  br label %1557

1557:                                             ; preds = %1556, %1550
  br label %1558

1558:                                             ; preds = %1557, %1542, %1536
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #12
  store i32 -1, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #12
  store i32 -1, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #12
  call void @llvm.memset.p0.i64(ptr align 16 %58, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  %1559 = load i32, ptr %7, align 4, !tbaa !9
  %1560 = and i32 %1559, 16777216
  %1561 = icmp ne i32 %1560, 0
  br i1 %1561, label %1562, label %1567

1562:                                             ; preds = %1558
  %1563 = load i32, ptr %7, align 4, !tbaa !9
  %1564 = and i32 %1563, 67108864
  %1565 = icmp ne i32 %1564, 0
  br i1 %1565, label %1567, label %1566

1566:                                             ; preds = %1562
  br label %1575

1567:                                             ; preds = %1562, %1558
  %1568 = load ptr, ptr %8, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiContext, ptr %1568, i32 0, i32 2
  %1570 = getelementptr inbounds %struct.ImGuiIO, ptr %1569, i32 0, i32 26
  %1571 = load i8, ptr %1570, align 1, !tbaa !222, !range !93, !noundef !94
  %1572 = trunc i8 %1571 to i1
  %1573 = zext i1 %1572 to i64
  %1574 = select i1 %1572, i32 2, i32 1
  br label %1575

1575:                                             ; preds = %1567, %1566
  %1576 = phi i32 [ 0, %1566 ], [ %1574, %1567 ]
  store i32 %1576, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  %1577 = load ptr, ptr %8, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.ImGuiContext, ptr %1577, i32 0, i32 6
  %1579 = load float, ptr %1578, align 8, !tbaa !193
  %1580 = fmul float %1579, 0x3FF19999A0000000
  %1581 = load ptr, ptr %10, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.ImGuiWindow, ptr %1581, i32 0, i32 14
  %1583 = load float, ptr %1582, align 8, !tbaa !221
  %1584 = fadd float %1583, 1.000000e+00
  %1585 = load ptr, ptr %8, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.ImGuiContext, ptr %1585, i32 0, i32 6
  %1587 = load float, ptr %1586, align 8, !tbaa !193
  %1588 = call float @llvm.fmuladd.f32(float %1587, float 0x3FC99999A0000000, float %1584)
  %1589 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1580, float noundef %1588)
  %1590 = fptosi float %1589 to i32
  %1591 = sitofp i32 %1590 to float
  store float %1591, ptr %60, align 4, !tbaa !138
  %1592 = load ptr, ptr %10, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.ImGuiWindow, ptr %1592, i32 0, i32 39
  %1594 = load i8, ptr %1593, align 1, !tbaa !205, !range !93, !noundef !94
  %1595 = trunc i8 %1594 to i1
  br i1 %1595, label %1615, label %1596

1596:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #12
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = load i32, ptr %59, align 4, !tbaa !9
  %1599 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %1600 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %1597, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef %56, ptr noundef %57, i32 noundef %1598, ptr noundef %1599, ptr noundef nonnull align 4 dereferenceable(16) %51)
  store i32 %1600, ptr %61, align 4, !tbaa !9
  %1601 = load i32, ptr %61, align 4, !tbaa !9
  %1602 = icmp ne i32 %1601, 0
  br i1 %1602, label %1603, label %1614

1603:                                             ; preds = %1596
  %1604 = load i32, ptr %61, align 4, !tbaa !9
  %1605 = and i32 %1604, 1
  %1606 = icmp ne i32 %1605, 0
  br i1 %1606, label %1607, label %1608

1607:                                             ; preds = %1603
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1608

1608:                                             ; preds = %1607, %1603
  %1609 = load i32, ptr %61, align 4, !tbaa !9
  %1610 = and i32 %1609, 2
  %1611 = icmp ne i32 %1610, 0
  br i1 %1611, label %1612, label %1613

1612:                                             ; preds = %1608
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1613

1613:                                             ; preds = %1612, %1608
  br label %1614

1614:                                             ; preds = %1613, %1596
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #12
  br label %1615

1615:                                             ; preds = %1614, %1575
  %1616 = load i32, ptr %56, align 4, !tbaa !9
  %1617 = trunc i32 %1616 to i8
  %1618 = load ptr, ptr %10, align 8, !tbaa !5
  %1619 = getelementptr inbounds %struct.ImGuiWindow, ptr %1618, i32 0, i32 48
  store i8 %1617, ptr %1619, align 2, !tbaa !223
  %1620 = load i32, ptr %57, align 4, !tbaa !9
  %1621 = trunc i32 %1620 to i8
  %1622 = load ptr, ptr %10, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.ImGuiWindow, ptr %1622, i32 0, i32 49
  store i8 %1621, ptr %1623, align 1, !tbaa !224
  %1624 = load ptr, ptr %10, align 8, !tbaa !5
  %1625 = getelementptr inbounds %struct.ImGuiWindow, ptr %1624, i32 0, i32 39
  %1626 = load i8, ptr %1625, align 1, !tbaa !205, !range !93, !noundef !94
  %1627 = trunc i8 %1626 to i1
  br i1 %1627, label %1804, label %1628

1628:                                             ; preds = %1615
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %1629 = load ptr, ptr %10, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.ImGuiWindow, ptr %1629, i32 0, i32 9
  %1631 = getelementptr inbounds %struct.ImVec2, ptr %1630, i32 0, i32 0
  %1632 = load float, ptr %1631, align 8, !tbaa !154
  %1633 = load ptr, ptr %10, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.ImGuiWindow, ptr %1633, i32 0, i32 9
  %1635 = getelementptr inbounds %struct.ImVec2, ptr %1634, i32 0, i32 1
  %1636 = load float, ptr %1635, align 4, !tbaa !155
  %1637 = load ptr, ptr %10, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiWindow, ptr %1637, i32 0, i32 19
  %1639 = load float, ptr %1638, align 4, !tbaa !208
  %1640 = load ptr, ptr %10, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.ImGuiWindow, ptr %1640, i32 0, i32 21
  %1642 = load float, ptr %1641, align 4, !tbaa !209
  %1643 = fadd float %1639, %1642
  %1644 = fsub float %1636, %1643
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1632, float noundef %1644)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1645 = load ptr, ptr %10, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 71
  %1647 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1646)
  store <2 x float> %1647, ptr %64, align 4
  %1648 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %64, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1648, ptr %63, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #12
  %1649 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1650 = trunc i8 %1649 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  br i1 %1650, label %1651, label %1652

1651:                                             ; preds = %1628
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %65, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1659

1652:                                             ; preds = %1628
  %1653 = load ptr, ptr %10, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ImGuiWindow, ptr %1653, i32 0, i32 10
  %1655 = load ptr, ptr %10, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.ImGuiWindow, ptr %1655, i32 0, i32 13
  %1657 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1656, float noundef 2.000000e+00)
  store <2 x float> %1657, ptr %66, align 4
  %1658 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1654, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1658, ptr %65, align 4
  br label %1659

1659:                                             ; preds = %1652, %1651
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  %1660 = load i8, ptr %33, align 1, !tbaa !97, !range !93, !noundef !94
  %1661 = trunc i8 %1660 to i1
  br i1 %1661, label %1662, label %1665

1662:                                             ; preds = %1659
  %1663 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 0
  %1664 = load float, ptr %1663, align 4, !tbaa !210
  br label %1668

1665:                                             ; preds = %1659
  %1666 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 0
  %1667 = load float, ptr %1666, align 4, !tbaa !210
  br label %1668

1668:                                             ; preds = %1665, %1662
  %1669 = phi float [ %1664, %1662 ], [ %1667, %1665 ]
  store float %1669, ptr %67, align 4, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  %1670 = load i8, ptr %34, align 1, !tbaa !97, !range !93, !noundef !94
  %1671 = trunc i8 %1670 to i1
  br i1 %1671, label %1672, label %1675

1672:                                             ; preds = %1668
  %1673 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 1
  %1674 = load float, ptr %1673, align 4, !tbaa !211
  br label %1678

1675:                                             ; preds = %1668
  %1676 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 1
  %1677 = load float, ptr %1676, align 4, !tbaa !211
  br label %1678

1678:                                             ; preds = %1675, %1672
  %1679 = phi float [ %1674, %1672 ], [ %1677, %1675 ]
  store float %1679, ptr %68, align 4, !tbaa !138
  %1680 = load i32, ptr %7, align 4, !tbaa !9
  %1681 = and i32 %1680, 16384
  %1682 = icmp ne i32 %1681, 0
  br i1 %1682, label %1695, label %1683

1683:                                             ; preds = %1678
  %1684 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1685 = load float, ptr %1684, align 4, !tbaa !211
  %1686 = load float, ptr %68, align 4, !tbaa !138
  %1687 = fcmp ogt float %1685, %1686
  br i1 %1687, label %1688, label %1693

1688:                                             ; preds = %1683
  %1689 = load i32, ptr %7, align 4, !tbaa !9
  %1690 = and i32 %1689, 8
  %1691 = icmp ne i32 %1690, 0
  %1692 = xor i1 %1691, true
  br label %1693

1693:                                             ; preds = %1688, %1683
  %1694 = phi i1 [ false, %1683 ], [ %1692, %1688 ]
  br label %1695

1695:                                             ; preds = %1693, %1678
  %1696 = phi i1 [ true, %1678 ], [ %1694, %1693 ]
  %1697 = load ptr, ptr %10, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ImGuiWindow, ptr %1697, i32 0, i32 35
  %1699 = zext i1 %1696 to i8
  store i8 %1699, ptr %1698, align 1, !tbaa !225
  %1700 = load i32, ptr %7, align 4, !tbaa !9
  %1701 = and i32 %1700, 32768
  %1702 = icmp ne i32 %1701, 0
  br i1 %1702, label %1730, label %1703

1703:                                             ; preds = %1695
  %1704 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 0
  %1705 = load float, ptr %1704, align 4, !tbaa !210
  %1706 = load float, ptr %67, align 4, !tbaa !138
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.ImGuiWindow, ptr %1707, i32 0, i32 35
  %1709 = load i8, ptr %1708, align 1, !tbaa !225, !range !93, !noundef !94
  %1710 = trunc i8 %1709 to i1
  br i1 %1710, label %1711, label %1715

1711:                                             ; preds = %1703
  %1712 = load ptr, ptr %9, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.ImGuiStyle, ptr %1712, i32 0, i32 21
  %1714 = load float, ptr %1713, align 4, !tbaa !226
  br label %1716

1715:                                             ; preds = %1703
  br label %1716

1716:                                             ; preds = %1715, %1711
  %1717 = phi float [ %1714, %1711 ], [ 0.000000e+00, %1715 ]
  %1718 = fsub float %1706, %1717
  %1719 = fcmp ogt float %1705, %1718
  br i1 %1719, label %1720, label %1728

1720:                                             ; preds = %1716
  %1721 = load i32, ptr %7, align 4, !tbaa !9
  %1722 = and i32 %1721, 8
  %1723 = icmp ne i32 %1722, 0
  br i1 %1723, label %1728, label %1724

1724:                                             ; preds = %1720
  %1725 = load i32, ptr %7, align 4, !tbaa !9
  %1726 = and i32 %1725, 2048
  %1727 = icmp ne i32 %1726, 0
  br label %1728

1728:                                             ; preds = %1724, %1720, %1716
  %1729 = phi i1 [ false, %1720 ], [ false, %1716 ], [ %1727, %1724 ]
  br label %1730

1730:                                             ; preds = %1728, %1695
  %1731 = phi i1 [ true, %1695 ], [ %1729, %1728 ]
  %1732 = load ptr, ptr %10, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.ImGuiWindow, ptr %1732, i32 0, i32 34
  %1734 = zext i1 %1731 to i8
  store i8 %1734, ptr %1733, align 8, !tbaa !227
  %1735 = load ptr, ptr %10, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiWindow, ptr %1735, i32 0, i32 34
  %1737 = load i8, ptr %1736, align 8, !tbaa !227, !range !93, !noundef !94
  %1738 = trunc i8 %1737 to i1
  br i1 %1738, label %1739, label %1763

1739:                                             ; preds = %1730
  %1740 = load ptr, ptr %10, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.ImGuiWindow, ptr %1740, i32 0, i32 35
  %1742 = load i8, ptr %1741, align 1, !tbaa !225, !range !93, !noundef !94
  %1743 = trunc i8 %1742 to i1
  br i1 %1743, label %1763, label %1744

1744:                                             ; preds = %1739
  %1745 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1746 = load float, ptr %1745, align 4, !tbaa !211
  %1747 = load float, ptr %68, align 4, !tbaa !138
  %1748 = load ptr, ptr %9, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.ImGuiStyle, ptr %1748, i32 0, i32 21
  %1750 = load float, ptr %1749, align 4, !tbaa !226
  %1751 = fsub float %1747, %1750
  %1752 = fcmp ogt float %1746, %1751
  br i1 %1752, label %1753, label %1758

1753:                                             ; preds = %1744
  %1754 = load i32, ptr %7, align 4, !tbaa !9
  %1755 = and i32 %1754, 8
  %1756 = icmp ne i32 %1755, 0
  %1757 = xor i1 %1756, true
  br label %1758

1758:                                             ; preds = %1753, %1744
  %1759 = phi i1 [ false, %1744 ], [ %1757, %1753 ]
  %1760 = load ptr, ptr %10, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiWindow, ptr %1760, i32 0, i32 35
  %1762 = zext i1 %1759 to i8
  store i8 %1762, ptr %1761, align 1, !tbaa !225
  br label %1763

1763:                                             ; preds = %1758, %1739, %1730
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #12
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.ImGuiWindow, ptr %1764, i32 0, i32 35
  %1766 = load i8, ptr %1765, align 1, !tbaa !225, !range !93, !noundef !94
  %1767 = trunc i8 %1766 to i1
  br i1 %1767, label %1768, label %1772

1768:                                             ; preds = %1763
  %1769 = load ptr, ptr %9, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.ImGuiStyle, ptr %1769, i32 0, i32 21
  %1771 = load float, ptr %1770, align 4, !tbaa !226
  br label %1773

1772:                                             ; preds = %1763
  br label %1773

1773:                                             ; preds = %1772, %1768
  %1774 = phi float [ %1771, %1768 ], [ 0.000000e+00, %1772 ]
  %1775 = load ptr, ptr %10, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.ImGuiWindow, ptr %1775, i32 0, i32 34
  %1777 = load i8, ptr %1776, align 8, !tbaa !227, !range !93, !noundef !94
  %1778 = trunc i8 %1777 to i1
  br i1 %1778, label %1779, label %1783

1779:                                             ; preds = %1773
  %1780 = load ptr, ptr %9, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.ImGuiStyle, ptr %1780, i32 0, i32 21
  %1782 = load float, ptr %1781, align 4, !tbaa !226
  br label %1784

1783:                                             ; preds = %1773
  br label %1784

1784:                                             ; preds = %1783, %1779
  %1785 = phi float [ %1782, %1779 ], [ 0.000000e+00, %1783 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %69, float noundef %1774, float noundef %1785)
  %1786 = load ptr, ptr %10, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.ImGuiWindow, ptr %1786, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1787, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #12
  %1788 = load ptr, ptr %10, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.ImGuiWindow, ptr %1788, i32 0, i32 33
  %1790 = getelementptr inbounds %struct.ImVec2, ptr %1789, i32 0, i32 0
  %1791 = load float, ptr %1790, align 8, !tbaa !228
  %1792 = load ptr, ptr %10, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.ImGuiWindow, ptr %1792, i32 0, i32 20
  %1794 = load float, ptr %1793, align 8, !tbaa !207
  %1795 = fadd float %1794, %1791
  store float %1795, ptr %1793, align 8, !tbaa !207
  %1796 = load ptr, ptr %10, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.ImGuiWindow, ptr %1796, i32 0, i32 33
  %1798 = getelementptr inbounds %struct.ImVec2, ptr %1797, i32 0, i32 1
  %1799 = load float, ptr %1798, align 4, !tbaa !229
  %1800 = load ptr, ptr %10, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.ImGuiWindow, ptr %1800, i32 0, i32 21
  %1802 = load float, ptr %1801, align 4, !tbaa !209
  %1803 = fadd float %1802, %1799
  store float %1803, ptr %1801, align 4, !tbaa !209
  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 8, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  br label %1804

1804:                                             ; preds = %1784, %1615
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #12
  %1805 = load i32, ptr %7, align 4, !tbaa !9
  %1806 = and i32 %1805, 16777216
  %1807 = icmp ne i32 %1806, 0
  br i1 %1807, label %1808, label %1818

1808:                                             ; preds = %1804
  %1809 = load i32, ptr %7, align 4, !tbaa !9
  %1810 = and i32 %1809, 67108864
  %1811 = icmp ne i32 %1810, 0
  br i1 %1811, label %1818, label %1812

1812:                                             ; preds = %1808
  %1813 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1818, label %1815

1815:                                             ; preds = %1812
  %1816 = load ptr, ptr %17, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiWindow, ptr %1816, i32 0, i32 75
  br label %1819

1818:                                             ; preds = %1812, %1808, %1804
  br label %1819

1819:                                             ; preds = %1818, %1815
  %1820 = phi ptr [ %1817, %1815 ], [ %48, %1818 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %1820, i64 16, i1 false), !tbaa.struct !169
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #12
  %1821 = load ptr, ptr %10, align 8, !tbaa !5
  %1822 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1821)
  %1823 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1824 = extractvalue { <2 x float>, <2 x float> } %1822, 0
  store <2 x float> %1824, ptr %1823, align 4
  %1825 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1826 = extractvalue { <2 x float>, <2 x float> } %1822, 1
  store <2 x float> %1826, ptr %1825, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #12
  %1827 = load ptr, ptr %10, align 8, !tbaa !5
  %1828 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1827)
  %1829 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 0
  %1830 = extractvalue { <2 x float>, <2 x float> } %1828, 0
  store <2 x float> %1830, ptr %1829, align 4
  %1831 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 1
  %1832 = extractvalue { <2 x float>, <2 x float> } %1828, 1
  store <2 x float> %1832, ptr %1831, align 4
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.ImGuiWindow, ptr %1833, i32 0, i32 70
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1834, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !169
  %1835 = load ptr, ptr %10, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.ImGuiWindow, ptr %1835, i32 0, i32 70
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1836, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1837 = load ptr, ptr %10, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.ImGuiWindow, ptr %1837, i32 0, i32 7
  %1839 = getelementptr inbounds %struct.ImVec2, ptr %1838, i32 0, i32 0
  %1840 = load float, ptr %1839, align 8, !tbaa !230
  %1841 = load ptr, ptr %10, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.ImGuiWindow, ptr %1841, i32 0, i32 18
  %1843 = load float, ptr %1842, align 8, !tbaa !206
  %1844 = fadd float %1840, %1843
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 71
  %1847 = getelementptr inbounds %struct.ImRect, ptr %1846, i32 0, i32 0
  %1848 = getelementptr inbounds %struct.ImVec2, ptr %1847, i32 0, i32 0
  store float %1844, ptr %1848, align 8, !tbaa !231
  %1849 = load ptr, ptr %10, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiWindow, ptr %1849, i32 0, i32 7
  %1851 = getelementptr inbounds %struct.ImVec2, ptr %1850, i32 0, i32 1
  %1852 = load float, ptr %1851, align 4, !tbaa !232
  %1853 = load ptr, ptr %10, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.ImGuiWindow, ptr %1853, i32 0, i32 19
  %1855 = load float, ptr %1854, align 4, !tbaa !208
  %1856 = fadd float %1852, %1855
  %1857 = load ptr, ptr %10, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiWindow, ptr %1857, i32 0, i32 71
  %1859 = getelementptr inbounds %struct.ImRect, ptr %1858, i32 0, i32 0
  %1860 = getelementptr inbounds %struct.ImVec2, ptr %1859, i32 0, i32 1
  store float %1856, ptr %1860, align 4, !tbaa !233
  %1861 = load ptr, ptr %10, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.ImGuiWindow, ptr %1861, i32 0, i32 7
  %1863 = getelementptr inbounds %struct.ImVec2, ptr %1862, i32 0, i32 0
  %1864 = load float, ptr %1863, align 8, !tbaa !230
  %1865 = load ptr, ptr %10, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.ImGuiWindow, ptr %1865, i32 0, i32 8
  %1867 = getelementptr inbounds %struct.ImVec2, ptr %1866, i32 0, i32 0
  %1868 = load float, ptr %1867, align 8, !tbaa !180
  %1869 = fadd float %1864, %1868
  %1870 = load ptr, ptr %10, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.ImGuiWindow, ptr %1870, i32 0, i32 20
  %1872 = load float, ptr %1871, align 8, !tbaa !207
  %1873 = fsub float %1869, %1872
  %1874 = load ptr, ptr %10, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.ImGuiWindow, ptr %1874, i32 0, i32 71
  %1876 = getelementptr inbounds %struct.ImRect, ptr %1875, i32 0, i32 1
  %1877 = getelementptr inbounds %struct.ImVec2, ptr %1876, i32 0, i32 0
  store float %1873, ptr %1877, align 8, !tbaa !234
  %1878 = load ptr, ptr %10, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.ImGuiWindow, ptr %1878, i32 0, i32 7
  %1880 = getelementptr inbounds %struct.ImVec2, ptr %1879, i32 0, i32 1
  %1881 = load float, ptr %1880, align 4, !tbaa !232
  %1882 = load ptr, ptr %10, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.ImGuiWindow, ptr %1882, i32 0, i32 8
  %1884 = getelementptr inbounds %struct.ImVec2, ptr %1883, i32 0, i32 1
  %1885 = load float, ptr %1884, align 4, !tbaa !181
  %1886 = fadd float %1881, %1885
  %1887 = load ptr, ptr %10, align 8, !tbaa !5
  %1888 = getelementptr inbounds %struct.ImGuiWindow, ptr %1887, i32 0, i32 21
  %1889 = load float, ptr %1888, align 4, !tbaa !209
  %1890 = fsub float %1886, %1889
  %1891 = load ptr, ptr %10, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.ImGuiWindow, ptr %1891, i32 0, i32 71
  %1893 = getelementptr inbounds %struct.ImRect, ptr %1892, i32 0, i32 1
  %1894 = getelementptr inbounds %struct.ImVec2, ptr %1893, i32 0, i32 1
  store float %1890, ptr %1894, align 4, !tbaa !235
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  %1895 = load i32, ptr %7, align 4, !tbaa !9
  %1896 = and i32 %1895, 1024
  %1897 = icmp ne i32 %1896, 0
  br i1 %1897, label %1902, label %1898

1898:                                             ; preds = %1819
  %1899 = load i32, ptr %7, align 4, !tbaa !9
  %1900 = and i32 %1899, 1
  %1901 = icmp ne i32 %1900, 0
  br i1 %1901, label %1906, label %1902

1902:                                             ; preds = %1898, %1819
  %1903 = load ptr, ptr %9, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.ImGuiStyle, ptr %1903, i32 0, i32 14
  %1905 = load float, ptr %1904, align 4, !tbaa !236
  br label %1910

1906:                                             ; preds = %1898
  %1907 = load ptr, ptr %10, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiWindow, ptr %1907, i32 0, i32 15
  %1909 = load float, ptr %1908, align 4, !tbaa !183
  br label %1910

1910:                                             ; preds = %1906, %1902
  %1911 = phi float [ %1905, %1902 ], [ %1909, %1906 ]
  store float %1911, ptr %73, align 4, !tbaa !138
  %1912 = load ptr, ptr %10, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.ImGuiWindow, ptr %1912, i32 0, i32 71
  %1914 = getelementptr inbounds %struct.ImRect, ptr %1913, i32 0, i32 0
  %1915 = getelementptr inbounds %struct.ImVec2, ptr %1914, i32 0, i32 0
  %1916 = load float, ptr %1915, align 8, !tbaa !231
  %1917 = fadd float 5.000000e-01, %1916
  %1918 = load ptr, ptr %10, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.ImGuiWindow, ptr %1918, i32 0, i32 15
  %1920 = load float, ptr %1919, align 4, !tbaa !183
  %1921 = call float @llvm.fmuladd.f32(float %1920, float 5.000000e-01, float %1917)
  %1922 = call noundef float @_ZL7ImFloorf(float noundef %1921)
  %1923 = load ptr, ptr %10, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiWindow, ptr %1923, i32 0, i32 72
  %1925 = getelementptr inbounds %struct.ImRect, ptr %1924, i32 0, i32 0
  %1926 = getelementptr inbounds %struct.ImVec2, ptr %1925, i32 0, i32 0
  store float %1922, ptr %1926, align 8, !tbaa !237
  %1927 = load ptr, ptr %10, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiWindow, ptr %1927, i32 0, i32 71
  %1929 = getelementptr inbounds %struct.ImRect, ptr %1928, i32 0, i32 0
  %1930 = getelementptr inbounds %struct.ImVec2, ptr %1929, i32 0, i32 1
  %1931 = load float, ptr %1930, align 4, !tbaa !233
  %1932 = fadd float 5.000000e-01, %1931
  %1933 = load float, ptr %73, align 4, !tbaa !138
  %1934 = call float @llvm.fmuladd.f32(float %1933, float 5.000000e-01, float %1932)
  %1935 = call noundef float @_ZL7ImFloorf(float noundef %1934)
  %1936 = load ptr, ptr %10, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.ImGuiWindow, ptr %1936, i32 0, i32 72
  %1938 = getelementptr inbounds %struct.ImRect, ptr %1937, i32 0, i32 0
  %1939 = getelementptr inbounds %struct.ImVec2, ptr %1938, i32 0, i32 1
  store float %1935, ptr %1939, align 4, !tbaa !238
  %1940 = load ptr, ptr %10, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.ImGuiWindow, ptr %1940, i32 0, i32 71
  %1942 = getelementptr inbounds %struct.ImRect, ptr %1941, i32 0, i32 1
  %1943 = getelementptr inbounds %struct.ImVec2, ptr %1942, i32 0, i32 0
  %1944 = load float, ptr %1943, align 8, !tbaa !234
  %1945 = load ptr, ptr %10, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiWindow, ptr %1945, i32 0, i32 15
  %1947 = load float, ptr %1946, align 4, !tbaa !183
  %1948 = fneg float %1947
  %1949 = call float @llvm.fmuladd.f32(float %1948, float 5.000000e-01, float %1944)
  %1950 = call noundef float @_ZL7ImFloorf(float noundef %1949)
  %1951 = load ptr, ptr %10, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ImGuiWindow, ptr %1951, i32 0, i32 72
  %1953 = getelementptr inbounds %struct.ImRect, ptr %1952, i32 0, i32 1
  %1954 = getelementptr inbounds %struct.ImVec2, ptr %1953, i32 0, i32 0
  store float %1950, ptr %1954, align 8, !tbaa !239
  %1955 = load ptr, ptr %10, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.ImGuiWindow, ptr %1955, i32 0, i32 71
  %1957 = getelementptr inbounds %struct.ImRect, ptr %1956, i32 0, i32 1
  %1958 = getelementptr inbounds %struct.ImVec2, ptr %1957, i32 0, i32 1
  %1959 = load float, ptr %1958, align 4, !tbaa !235
  %1960 = load ptr, ptr %10, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.ImGuiWindow, ptr %1960, i32 0, i32 15
  %1962 = load float, ptr %1961, align 4, !tbaa !183
  %1963 = fneg float %1962
  %1964 = call float @llvm.fmuladd.f32(float %1963, float 5.000000e-01, float %1959)
  %1965 = call noundef float @_ZL7ImFloorf(float noundef %1964)
  %1966 = load ptr, ptr %10, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.ImGuiWindow, ptr %1966, i32 0, i32 72
  %1968 = getelementptr inbounds %struct.ImRect, ptr %1967, i32 0, i32 1
  %1969 = getelementptr inbounds %struct.ImVec2, ptr %1968, i32 0, i32 1
  store float %1965, ptr %1969, align 4, !tbaa !240
  %1970 = load ptr, ptr %10, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.ImGuiWindow, ptr %1970, i32 0, i32 72
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1971, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1972 = load ptr, ptr %10, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiWindow, ptr %1972, i32 0, i32 8
  %1974 = getelementptr inbounds %struct.ImVec2, ptr %1973, i32 0, i32 0
  %1975 = load float, ptr %1974, align 8, !tbaa !180
  %1976 = fcmp ogt float %1975, 0.000000e+00
  br i1 %1976, label %1977, label %1994

1977:                                             ; preds = %1910
  %1978 = load i32, ptr %7, align 4, !tbaa !9
  %1979 = and i32 %1978, 33554432
  %1980 = icmp ne i32 %1979, 0
  br i1 %1980, label %1994, label %1981

1981:                                             ; preds = %1977
  %1982 = load i32, ptr %7, align 4, !tbaa !9
  %1983 = and i32 %1982, 64
  %1984 = icmp ne i32 %1983, 0
  br i1 %1984, label %1994, label %1985

1985:                                             ; preds = %1981
  %1986 = load ptr, ptr %10, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiWindow, ptr %1986, i32 0, i32 8
  %1988 = getelementptr inbounds %struct.ImVec2, ptr %1987, i32 0, i32 0
  %1989 = load float, ptr %1988, align 8, !tbaa !180
  %1990 = fmul float %1989, 0x3FE4CCCCC0000000
  %1991 = call noundef float @_ZL7ImTruncf(float noundef %1990)
  %1992 = load ptr, ptr %10, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiWindow, ptr %1992, i32 0, i32 81
  store float %1991, ptr %1993, align 8, !tbaa !241
  br label %2002

1994:                                             ; preds = %1981, %1977, %1910
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiContext, ptr %1995, i32 0, i32 6
  %1997 = load float, ptr %1996, align 8, !tbaa !193
  %1998 = fmul float %1997, 1.600000e+01
  %1999 = call noundef float @_ZL7ImTruncf(float noundef %1998)
  %2000 = load ptr, ptr %10, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.ImGuiWindow, ptr %2000, i32 0, i32 81
  store float %1999, ptr %2001, align 8, !tbaa !241
  br label %2002

2002:                                             ; preds = %1994, %1985
  %2003 = load ptr, ptr %10, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiWindow, ptr %2003, i32 0, i32 10
  %2005 = getelementptr inbounds %struct.ImVec2, ptr %2004, i32 0, i32 0
  %2006 = load float, ptr %2005, align 8, !tbaa !242
  %2007 = load ptr, ptr %10, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.ImGuiWindow, ptr %2007, i32 0, i32 13
  %2009 = getelementptr inbounds %struct.ImVec2, ptr %2008, i32 0, i32 0
  %2010 = load float, ptr %2009, align 8, !tbaa !187
  %2011 = call float @llvm.fmuladd.f32(float %2010, float 2.000000e+00, float %2006)
  %2012 = load ptr, ptr %10, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.ImGuiWindow, ptr %2012, i32 0, i32 71
  %2014 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2013)
  %2015 = fsub float %2011, %2014
  %2016 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2015)
  %2017 = load ptr, ptr %10, align 8, !tbaa !5
  %2018 = getelementptr inbounds %struct.ImGuiWindow, ptr %2017, i32 0, i32 29
  %2019 = getelementptr inbounds %struct.ImVec2, ptr %2018, i32 0, i32 0
  store float %2016, ptr %2019, align 8, !tbaa !243
  %2020 = load ptr, ptr %10, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiWindow, ptr %2020, i32 0, i32 10
  %2022 = getelementptr inbounds %struct.ImVec2, ptr %2021, i32 0, i32 1
  %2023 = load float, ptr %2022, align 4, !tbaa !244
  %2024 = load ptr, ptr %10, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.ImGuiWindow, ptr %2024, i32 0, i32 13
  %2026 = getelementptr inbounds %struct.ImVec2, ptr %2025, i32 0, i32 1
  %2027 = load float, ptr %2026, align 4, !tbaa !245
  %2028 = call float @llvm.fmuladd.f32(float %2027, float 2.000000e+00, float %2023)
  %2029 = load ptr, ptr %10, align 8, !tbaa !5
  %2030 = getelementptr inbounds %struct.ImGuiWindow, ptr %2029, i32 0, i32 71
  %2031 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2030)
  %2032 = fsub float %2028, %2031
  %2033 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2032)
  %2034 = load ptr, ptr %10, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.ImGuiWindow, ptr %2034, i32 0, i32 29
  %2036 = getelementptr inbounds %struct.ImVec2, ptr %2035, i32 0, i32 1
  store float %2033, ptr %2036, align 4, !tbaa !246
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  %2037 = load ptr, ptr %10, align 8, !tbaa !5
  %2038 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2037)
  store <2 x float> %2038, ptr %74, align 4
  %2039 = load ptr, ptr %10, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.ImGuiWindow, ptr %2039, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2040, ptr align 4 %74, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2041 = load ptr, ptr %10, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.ImGuiWindow, ptr %2041, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2042, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  %2043 = load ptr, ptr %10, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.ImGuiWindow, ptr %2043, i32 0, i32 23
  store float 0.000000e+00, ptr %2044, align 4, !tbaa !247
  %2045 = load ptr, ptr %10, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.ImGuiWindow, ptr %2045, i32 0, i32 22
  store float 0.000000e+00, ptr %2046, align 8, !tbaa !248
  %2047 = load ptr, ptr %10, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.ImGuiWindow, ptr %2047, i32 0, i32 87
  %2049 = load ptr, ptr %2048, align 8, !tbaa !170
  %2050 = getelementptr inbounds %struct.ImDrawList, ptr %2049, i32 0, i32 0
  %2051 = getelementptr inbounds %struct.ImVector.38, ptr %2050, i32 0, i32 0
  %2052 = load i32, ptr %2051, align 8, !tbaa !249
  %2053 = icmp eq i32 %2052, 1
  br i1 %2053, label %2054, label %2063

2054:                                             ; preds = %2002
  %2055 = load ptr, ptr %10, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 87
  %2057 = load ptr, ptr %2056, align 8, !tbaa !170
  %2058 = getelementptr inbounds %struct.ImDrawList, ptr %2057, i32 0, i32 0
  %2059 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2058, i32 noundef 0)
  %2060 = getelementptr inbounds %struct.ImDrawCmd, ptr %2059, i32 0, i32 4
  %2061 = load i32, ptr %2060, align 8, !tbaa !250
  %2062 = icmp eq i32 %2061, 0
  br label %2063

2063:                                             ; preds = %2054, %2002
  %2064 = phi i1 [ false, %2002 ], [ %2062, %2054 ]
  br i1 %2064, label %2065, label %2066

2065:                                             ; preds = %2063
  br label %2068

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

2067:                                             ; No predecessors!
  br label %2068

2068:                                             ; preds = %2067, %2065
  %2069 = load ptr, ptr %10, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.ImGuiWindow, ptr %2069, i32 0, i32 87
  %2071 = load ptr, ptr %2070, align 8, !tbaa !170
  %2072 = load ptr, ptr %8, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiContext, ptr %2072, i32 0, i32 5
  %2074 = load ptr, ptr %2073, align 8, !tbaa !252
  %2075 = getelementptr inbounds %struct.ImFont, ptr %2074, i32 0, i32 6
  %2076 = load ptr, ptr %2075, align 8, !tbaa !253
  %2077 = getelementptr inbounds %struct.ImFontAtlas, ptr %2076, i32 0, i32 2
  %2078 = load i64, ptr %2077, align 8, !tbaa !254
  call void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216) %2071, i64 noundef %2078)
  %2079 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 0
  %2080 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2079, ptr noundef nonnull align 4 dereferenceable(8) %2080, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #12
  store i8 0, ptr %76, align 1, !tbaa !97
  %2081 = load i32, ptr %7, align 4, !tbaa !9
  %2082 = and i32 %2081, 16777216
  %2083 = icmp ne i32 %2082, 0
  br i1 %2083, label %2084, label %2157

2084:                                             ; preds = %2068
  %2085 = load i32, ptr %7, align 4, !tbaa !9
  %2086 = and i32 %2085, 67108864
  %2087 = icmp ne i32 %2086, 0
  br i1 %2087, label %2157, label %2088

2088:                                             ; preds = %2084
  %2089 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %2090 = trunc i8 %2089 to i1
  br i1 %2090, label %2157, label %2091

2091:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %2092 = load ptr, ptr %17, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiWindow, ptr %2092, i32 0, i32 69
  %2094 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2093, i32 0, i32 26
  %2095 = getelementptr inbounds %struct.ImVector.2, ptr %2094, i32 0, i32 0
  %2096 = load i32, ptr %2095, align 8, !tbaa !216
  %2097 = icmp sge i32 %2096, 2
  br i1 %2097, label %2098, label %2110

2098:                                             ; preds = %2091
  %2099 = load ptr, ptr %17, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.ImGuiWindow, ptr %2099, i32 0, i32 69
  %2101 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2100, i32 0, i32 26
  %2102 = load ptr, ptr %17, align 8, !tbaa !5
  %2103 = getelementptr inbounds %struct.ImGuiWindow, ptr %2102, i32 0, i32 69
  %2104 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2103, i32 0, i32 26
  %2105 = getelementptr inbounds %struct.ImVector.2, ptr %2104, i32 0, i32 0
  %2106 = load i32, ptr %2105, align 8, !tbaa !216
  %2107 = sub nsw i32 %2106, 2
  %2108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2101, i32 noundef %2107)
  %2109 = load ptr, ptr %2108, align 8, !tbaa !5
  br label %2111

2110:                                             ; preds = %2091
  br label %2111

2111:                                             ; preds = %2110, %2098
  %2112 = phi ptr [ %2109, %2098 ], [ null, %2110 ]
  store ptr %2112, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #12
  %2113 = load ptr, ptr %77, align 8, !tbaa !5
  %2114 = icmp ne ptr %2113, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #12
  br i1 %2114, label %2115, label %2129

2115:                                             ; preds = %2111
  %2116 = load ptr, ptr %77, align 8, !tbaa !5
  %2117 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %2116)
  %2118 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %2119 = extractvalue { <2 x float>, <2 x float> } %2117, 0
  store <2 x float> %2119, ptr %2118, align 4
  %2120 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %2121 = extractvalue { <2 x float>, <2 x float> } %2117, 1
  store <2 x float> %2121, ptr %2120, align 4
  %2122 = load ptr, ptr %10, align 8, !tbaa !5
  %2123 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %2122)
  %2124 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 0
  %2125 = extractvalue { <2 x float>, <2 x float> } %2123, 0
  store <2 x float> %2125, ptr %2124, align 4
  %2126 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 1
  %2127 = extractvalue { <2 x float>, <2 x float> } %2123, 1
  store <2 x float> %2127, ptr %2126, align 4
  %2128 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull align 4 dereferenceable(16) %80)
  br label %2130

2129:                                             ; preds = %2111
  br label %2130

2130:                                             ; preds = %2129, %2115
  %2131 = phi i1 [ %2128, %2115 ], [ false, %2129 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #12
  %2132 = zext i1 %2131 to i8
  store i8 %2132, ptr %78, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #12
  %2133 = load ptr, ptr %17, align 8, !tbaa !5
  %2134 = getelementptr inbounds %struct.ImGuiWindow, ptr %2133, i32 0, i32 87
  %2135 = load ptr, ptr %2134, align 8, !tbaa !170
  %2136 = getelementptr inbounds %struct.ImDrawList, ptr %2135, i32 0, i32 2
  %2137 = getelementptr inbounds %struct.ImVector.39, ptr %2136, i32 0, i32 0
  %2138 = load i32, ptr %2137, align 8, !tbaa !258
  %2139 = icmp eq i32 %2138, 0
  %2140 = zext i1 %2139 to i8
  store i8 %2140, ptr %81, align 1, !tbaa !97
  %2141 = load ptr, ptr %10, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.ImGuiWindow, ptr %2141, i32 0, i32 87
  %2143 = load ptr, ptr %2142, align 8, !tbaa !170
  %2144 = getelementptr inbounds %struct.ImDrawList, ptr %2143, i32 0, i32 0
  %2145 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2144)
  %2146 = getelementptr inbounds %struct.ImDrawCmd, ptr %2145, i32 0, i32 4
  %2147 = load i32, ptr %2146, align 8, !tbaa !250
  %2148 = icmp eq i32 %2147, 0
  br i1 %2148, label %2149, label %2156

2149:                                             ; preds = %2130
  %2150 = load i8, ptr %81, align 1, !tbaa !97, !range !93, !noundef !94
  %2151 = trunc i8 %2150 to i1
  br i1 %2151, label %2156, label %2152

2152:                                             ; preds = %2149
  %2153 = load i8, ptr %78, align 1, !tbaa !97, !range !93, !noundef !94
  %2154 = trunc i8 %2153 to i1
  br i1 %2154, label %2156, label %2155

2155:                                             ; preds = %2152
  store i8 1, ptr %76, align 1, !tbaa !97
  br label %2156

2156:                                             ; preds = %2155, %2152, %2149, %2130
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  br label %2157

2157:                                             ; preds = %2156, %2088, %2084, %2068
  %2158 = load i8, ptr %76, align 1, !tbaa !97, !range !93, !noundef !94
  %2159 = trunc i8 %2158 to i1
  br i1 %2159, label %2160, label %2166

2160:                                             ; preds = %2157
  %2161 = load ptr, ptr %17, align 8, !tbaa !5
  %2162 = getelementptr inbounds %struct.ImGuiWindow, ptr %2161, i32 0, i32 87
  %2163 = load ptr, ptr %2162, align 8, !tbaa !170
  %2164 = load ptr, ptr %10, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.ImGuiWindow, ptr %2164, i32 0, i32 87
  store ptr %2163, ptr %2165, align 8, !tbaa !170
  br label %2166

2166:                                             ; preds = %2160, %2157
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #12
  %2167 = load ptr, ptr %8, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ImGuiContext, ptr %2167, i32 0, i32 152
  %2169 = load ptr, ptr %2168, align 8, !tbaa !259
  %2170 = icmp ne ptr %2169, null
  br i1 %2170, label %2171, label %2175

2171:                                             ; preds = %2166
  %2172 = load ptr, ptr %8, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ImGuiContext, ptr %2172, i32 0, i32 152
  %2174 = load ptr, ptr %2173, align 8, !tbaa !259
  br label %2179

2175:                                             ; preds = %2166
  %2176 = load ptr, ptr %8, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct.ImGuiContext, ptr %2176, i32 0, i32 107
  %2178 = load ptr, ptr %2177, align 8, !tbaa !260
  br label %2179

2179:                                             ; preds = %2175, %2171
  %2180 = phi ptr [ %2174, %2171 ], [ %2178, %2175 ]
  store ptr %2180, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #12
  %2181 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2182 = trunc i8 %2181 to i1
  br i1 %2182, label %2196, label %2183

2183:                                             ; preds = %2179
  %2184 = load ptr, ptr %82, align 8, !tbaa !5
  %2185 = icmp ne ptr %2184, null
  br i1 %2185, label %2186, label %2194

2186:                                             ; preds = %2183
  %2187 = load ptr, ptr %10, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiWindow, ptr %2187, i32 0, i32 93
  %2189 = load ptr, ptr %2188, align 8, !tbaa !261
  %2190 = load ptr, ptr %82, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct.ImGuiWindow, ptr %2190, i32 0, i32 93
  %2192 = load ptr, ptr %2191, align 8, !tbaa !261
  %2193 = icmp eq ptr %2189, %2192
  br label %2194

2194:                                             ; preds = %2186, %2183
  %2195 = phi i1 [ false, %2183 ], [ %2193, %2186 ]
  br label %2196

2196:                                             ; preds = %2194, %2179
  %2197 = phi i1 [ true, %2179 ], [ %2195, %2194 ]
  %2198 = zext i1 %2197 to i8
  store i8 %2198, ptr %83, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #12
  store i8 1, ptr %84, align 1, !tbaa !97
  %2199 = load ptr, ptr %10, align 8, !tbaa !5
  %2200 = load i8, ptr %83, align 1, !tbaa !97, !range !93, !noundef !94
  %2201 = trunc i8 %2200 to i1
  %2202 = load i32, ptr %59, align 4, !tbaa !9
  %2203 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %2204 = load float, ptr %60, align 4, !tbaa !138
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2199, ptr noundef nonnull align 4 dereferenceable(16) %72, i1 noundef zeroext %2201, i1 noundef zeroext true, i32 noundef %2202, ptr noundef %2203, float noundef %2204)
  %2205 = load i8, ptr %76, align 1, !tbaa !97, !range !93, !noundef !94
  %2206 = trunc i8 %2205 to i1
  br i1 %2206, label %2207, label %2212

2207:                                             ; preds = %2196
  %2208 = load ptr, ptr %10, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiWindow, ptr %2208, i32 0, i32 88
  %2210 = load ptr, ptr %10, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiWindow, ptr %2210, i32 0, i32 87
  store ptr %2209, ptr %2211, align 8, !tbaa !170
  br label %2212

2212:                                             ; preds = %2207, %2196
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #12
  %2213 = load i32, ptr %7, align 4, !tbaa !9
  %2214 = and i32 %2213, 8
  %2215 = icmp ne i32 %2214, 0
  br i1 %2215, label %2220, label %2216

2216:                                             ; preds = %2212
  %2217 = load i32, ptr %7, align 4, !tbaa !9
  %2218 = and i32 %2217, 2048
  %2219 = icmp ne i32 %2218, 0
  br label %2220

2220:                                             ; preds = %2216, %2212
  %2221 = phi i1 [ false, %2212 ], [ %2219, %2216 ]
  %2222 = zext i1 %2221 to i8
  store i8 %2222, ptr %85, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #12
  %2223 = load i32, ptr %7, align 4, !tbaa !9
  %2224 = and i32 %2223, 8
  %2225 = icmp ne i32 %2224, 0
  %2226 = xor i1 %2225, true
  %2227 = zext i1 %2226 to i8
  store i8 %2227, ptr %86, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  %2228 = load ptr, ptr %10, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 12
  %2230 = getelementptr inbounds %struct.ImVec2, ptr %2229, i32 0, i32 0
  %2231 = load float, ptr %2230, align 8, !tbaa !197
  %2232 = fcmp une float %2231, 0.000000e+00
  br i1 %2232, label %2233, label %2238

2233:                                             ; preds = %2220
  %2234 = load ptr, ptr %10, align 8, !tbaa !5
  %2235 = getelementptr inbounds %struct.ImGuiWindow, ptr %2234, i32 0, i32 12
  %2236 = getelementptr inbounds %struct.ImVec2, ptr %2235, i32 0, i32 0
  %2237 = load float, ptr %2236, align 8, !tbaa !197
  br label %2268

2238:                                             ; preds = %2220
  %2239 = load i8, ptr %85, align 1, !tbaa !97, !range !93, !noundef !94
  %2240 = trunc i8 %2239 to i1
  br i1 %2240, label %2241, label %2246

2241:                                             ; preds = %2238
  %2242 = load ptr, ptr %10, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.ImGuiWindow, ptr %2242, i32 0, i32 10
  %2244 = getelementptr inbounds %struct.ImVec2, ptr %2243, i32 0, i32 0
  %2245 = load float, ptr %2244, align 8, !tbaa !242
  br label %2247

2246:                                             ; preds = %2238
  br label %2247

2247:                                             ; preds = %2246, %2241
  %2248 = phi float [ %2245, %2241 ], [ 0.000000e+00, %2246 ]
  %2249 = load ptr, ptr %10, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 8
  %2251 = getelementptr inbounds %struct.ImVec2, ptr %2250, i32 0, i32 0
  %2252 = load float, ptr %2251, align 8, !tbaa !180
  %2253 = load ptr, ptr %10, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.ImGuiWindow, ptr %2253, i32 0, i32 13
  %2255 = getelementptr inbounds %struct.ImVec2, ptr %2254, i32 0, i32 0
  %2256 = load float, ptr %2255, align 8, !tbaa !187
  %2257 = fneg float %2256
  %2258 = call float @llvm.fmuladd.f32(float %2257, float 2.000000e+00, float %2252)
  %2259 = load ptr, ptr %10, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.ImGuiWindow, ptr %2259, i32 0, i32 18
  %2261 = load float, ptr %2260, align 8, !tbaa !206
  %2262 = load ptr, ptr %10, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.ImGuiWindow, ptr %2262, i32 0, i32 20
  %2264 = load float, ptr %2263, align 8, !tbaa !207
  %2265 = fadd float %2261, %2264
  %2266 = fsub float %2258, %2265
  %2267 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2248, float noundef %2266)
  br label %2268

2268:                                             ; preds = %2247, %2233
  %2269 = phi float [ %2237, %2233 ], [ %2267, %2247 ]
  store float %2269, ptr %87, align 4, !tbaa !138
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #12
  %2270 = load ptr, ptr %10, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.ImGuiWindow, ptr %2270, i32 0, i32 12
  %2272 = getelementptr inbounds %struct.ImVec2, ptr %2271, i32 0, i32 1
  %2273 = load float, ptr %2272, align 4, !tbaa !198
  %2274 = fcmp une float %2273, 0.000000e+00
  br i1 %2274, label %2275, label %2280

2275:                                             ; preds = %2268
  %2276 = load ptr, ptr %10, align 8, !tbaa !5
  %2277 = getelementptr inbounds %struct.ImGuiWindow, ptr %2276, i32 0, i32 12
  %2278 = getelementptr inbounds %struct.ImVec2, ptr %2277, i32 0, i32 1
  %2279 = load float, ptr %2278, align 4, !tbaa !198
  br label %2310

2280:                                             ; preds = %2268
  %2281 = load i8, ptr %86, align 1, !tbaa !97, !range !93, !noundef !94
  %2282 = trunc i8 %2281 to i1
  br i1 %2282, label %2283, label %2288

2283:                                             ; preds = %2280
  %2284 = load ptr, ptr %10, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.ImGuiWindow, ptr %2284, i32 0, i32 10
  %2286 = getelementptr inbounds %struct.ImVec2, ptr %2285, i32 0, i32 1
  %2287 = load float, ptr %2286, align 4, !tbaa !244
  br label %2289

2288:                                             ; preds = %2280
  br label %2289

2289:                                             ; preds = %2288, %2283
  %2290 = phi float [ %2287, %2283 ], [ 0.000000e+00, %2288 ]
  %2291 = load ptr, ptr %10, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiWindow, ptr %2291, i32 0, i32 8
  %2293 = getelementptr inbounds %struct.ImVec2, ptr %2292, i32 0, i32 1
  %2294 = load float, ptr %2293, align 4, !tbaa !181
  %2295 = load ptr, ptr %10, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.ImGuiWindow, ptr %2295, i32 0, i32 13
  %2297 = getelementptr inbounds %struct.ImVec2, ptr %2296, i32 0, i32 1
  %2298 = load float, ptr %2297, align 4, !tbaa !245
  %2299 = fneg float %2298
  %2300 = call float @llvm.fmuladd.f32(float %2299, float 2.000000e+00, float %2294)
  %2301 = load ptr, ptr %10, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.ImGuiWindow, ptr %2301, i32 0, i32 19
  %2303 = load float, ptr %2302, align 4, !tbaa !208
  %2304 = load ptr, ptr %10, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiWindow, ptr %2304, i32 0, i32 21
  %2306 = load float, ptr %2305, align 4, !tbaa !209
  %2307 = fadd float %2303, %2306
  %2308 = fsub float %2300, %2307
  %2309 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2290, float noundef %2308)
  br label %2310

2310:                                             ; preds = %2289, %2275
  %2311 = phi float [ %2279, %2275 ], [ %2309, %2289 ]
  store float %2311, ptr %88, align 4, !tbaa !138
  %2312 = load ptr, ptr %10, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ImGuiWindow, ptr %2312, i32 0, i32 71
  %2314 = getelementptr inbounds %struct.ImRect, ptr %2313, i32 0, i32 0
  %2315 = getelementptr inbounds %struct.ImVec2, ptr %2314, i32 0, i32 0
  %2316 = load float, ptr %2315, align 8, !tbaa !231
  %2317 = load ptr, ptr %10, align 8, !tbaa !5
  %2318 = getelementptr inbounds %struct.ImGuiWindow, ptr %2317, i32 0, i32 28
  %2319 = getelementptr inbounds %struct.ImVec2, ptr %2318, i32 0, i32 0
  %2320 = load float, ptr %2319, align 8, !tbaa !262
  %2321 = fsub float %2316, %2320
  %2322 = load ptr, ptr %10, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 13
  %2324 = getelementptr inbounds %struct.ImVec2, ptr %2323, i32 0, i32 0
  %2325 = load float, ptr %2324, align 8, !tbaa !187
  %2326 = load ptr, ptr %10, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiWindow, ptr %2326, i32 0, i32 15
  %2328 = load float, ptr %2327, align 4, !tbaa !183
  %2329 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2325, float noundef %2328)
  %2330 = fadd float %2321, %2329
  %2331 = call noundef float @_ZL7ImTruncf(float noundef %2330)
  %2332 = load ptr, ptr %10, align 8, !tbaa !5
  %2333 = getelementptr inbounds %struct.ImGuiWindow, ptr %2332, i32 0, i32 73
  %2334 = getelementptr inbounds %struct.ImRect, ptr %2333, i32 0, i32 0
  %2335 = getelementptr inbounds %struct.ImVec2, ptr %2334, i32 0, i32 0
  store float %2331, ptr %2335, align 8, !tbaa !263
  %2336 = load ptr, ptr %10, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiWindow, ptr %2336, i32 0, i32 71
  %2338 = getelementptr inbounds %struct.ImRect, ptr %2337, i32 0, i32 0
  %2339 = getelementptr inbounds %struct.ImVec2, ptr %2338, i32 0, i32 1
  %2340 = load float, ptr %2339, align 4, !tbaa !233
  %2341 = load ptr, ptr %10, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.ImGuiWindow, ptr %2341, i32 0, i32 28
  %2343 = getelementptr inbounds %struct.ImVec2, ptr %2342, i32 0, i32 1
  %2344 = load float, ptr %2343, align 4, !tbaa !264
  %2345 = fsub float %2340, %2344
  %2346 = load ptr, ptr %10, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiWindow, ptr %2346, i32 0, i32 13
  %2348 = getelementptr inbounds %struct.ImVec2, ptr %2347, i32 0, i32 1
  %2349 = load float, ptr %2348, align 4, !tbaa !245
  %2350 = load ptr, ptr %10, align 8, !tbaa !5
  %2351 = getelementptr inbounds %struct.ImGuiWindow, ptr %2350, i32 0, i32 15
  %2352 = load float, ptr %2351, align 4, !tbaa !183
  %2353 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2349, float noundef %2352)
  %2354 = fadd float %2345, %2353
  %2355 = call noundef float @_ZL7ImTruncf(float noundef %2354)
  %2356 = load ptr, ptr %10, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.ImGuiWindow, ptr %2356, i32 0, i32 73
  %2358 = getelementptr inbounds %struct.ImRect, ptr %2357, i32 0, i32 0
  %2359 = getelementptr inbounds %struct.ImVec2, ptr %2358, i32 0, i32 1
  store float %2355, ptr %2359, align 4, !tbaa !265
  %2360 = load ptr, ptr %10, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiWindow, ptr %2360, i32 0, i32 73
  %2362 = getelementptr inbounds %struct.ImRect, ptr %2361, i32 0, i32 0
  %2363 = getelementptr inbounds %struct.ImVec2, ptr %2362, i32 0, i32 0
  %2364 = load float, ptr %2363, align 8, !tbaa !263
  %2365 = load float, ptr %87, align 4, !tbaa !138
  %2366 = fadd float %2364, %2365
  %2367 = load ptr, ptr %10, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.ImGuiWindow, ptr %2367, i32 0, i32 73
  %2369 = getelementptr inbounds %struct.ImRect, ptr %2368, i32 0, i32 1
  %2370 = getelementptr inbounds %struct.ImVec2, ptr %2369, i32 0, i32 0
  store float %2366, ptr %2370, align 8, !tbaa !266
  %2371 = load ptr, ptr %10, align 8, !tbaa !5
  %2372 = getelementptr inbounds %struct.ImGuiWindow, ptr %2371, i32 0, i32 73
  %2373 = getelementptr inbounds %struct.ImRect, ptr %2372, i32 0, i32 0
  %2374 = getelementptr inbounds %struct.ImVec2, ptr %2373, i32 0, i32 1
  %2375 = load float, ptr %2374, align 4, !tbaa !265
  %2376 = load float, ptr %88, align 4, !tbaa !138
  %2377 = fadd float %2375, %2376
  %2378 = load ptr, ptr %10, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiWindow, ptr %2378, i32 0, i32 73
  %2380 = getelementptr inbounds %struct.ImRect, ptr %2379, i32 0, i32 1
  %2381 = getelementptr inbounds %struct.ImVec2, ptr %2380, i32 0, i32 1
  store float %2377, ptr %2381, align 4, !tbaa !267
  %2382 = load ptr, ptr %10, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiWindow, ptr %2382, i32 0, i32 73
  %2384 = load ptr, ptr %10, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.ImGuiWindow, ptr %2384, i32 0, i32 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2385, ptr align 8 %2383, i64 16, i1 false), !tbaa.struct !169
  %2386 = load ptr, ptr %10, align 8, !tbaa !5
  %2387 = getelementptr inbounds %struct.ImGuiWindow, ptr %2386, i32 0, i32 7
  %2388 = getelementptr inbounds %struct.ImVec2, ptr %2387, i32 0, i32 0
  %2389 = load float, ptr %2388, align 8, !tbaa !230
  %2390 = load ptr, ptr %10, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiWindow, ptr %2390, i32 0, i32 28
  %2392 = getelementptr inbounds %struct.ImVec2, ptr %2391, i32 0, i32 0
  %2393 = load float, ptr %2392, align 8, !tbaa !262
  %2394 = fsub float %2389, %2393
  %2395 = load ptr, ptr %10, align 8, !tbaa !5
  %2396 = getelementptr inbounds %struct.ImGuiWindow, ptr %2395, i32 0, i32 13
  %2397 = getelementptr inbounds %struct.ImVec2, ptr %2396, i32 0, i32 0
  %2398 = load float, ptr %2397, align 8, !tbaa !187
  %2399 = fadd float %2394, %2398
  %2400 = load ptr, ptr %10, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiWindow, ptr %2400, i32 0, i32 18
  %2402 = load float, ptr %2401, align 8, !tbaa !206
  %2403 = fadd float %2399, %2402
  %2404 = load ptr, ptr %10, align 8, !tbaa !5
  %2405 = getelementptr inbounds %struct.ImGuiWindow, ptr %2404, i32 0, i32 76
  %2406 = getelementptr inbounds %struct.ImRect, ptr %2405, i32 0, i32 0
  %2407 = getelementptr inbounds %struct.ImVec2, ptr %2406, i32 0, i32 0
  store float %2403, ptr %2407, align 8, !tbaa !268
  %2408 = load ptr, ptr %10, align 8, !tbaa !5
  %2409 = getelementptr inbounds %struct.ImGuiWindow, ptr %2408, i32 0, i32 7
  %2410 = getelementptr inbounds %struct.ImVec2, ptr %2409, i32 0, i32 1
  %2411 = load float, ptr %2410, align 4, !tbaa !232
  %2412 = load ptr, ptr %10, align 8, !tbaa !5
  %2413 = getelementptr inbounds %struct.ImGuiWindow, ptr %2412, i32 0, i32 28
  %2414 = getelementptr inbounds %struct.ImVec2, ptr %2413, i32 0, i32 1
  %2415 = load float, ptr %2414, align 4, !tbaa !264
  %2416 = fsub float %2411, %2415
  %2417 = load ptr, ptr %10, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.ImGuiWindow, ptr %2417, i32 0, i32 13
  %2419 = getelementptr inbounds %struct.ImVec2, ptr %2418, i32 0, i32 1
  %2420 = load float, ptr %2419, align 4, !tbaa !245
  %2421 = fadd float %2416, %2420
  %2422 = load ptr, ptr %10, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiWindow, ptr %2422, i32 0, i32 19
  %2424 = load float, ptr %2423, align 4, !tbaa !208
  %2425 = fadd float %2421, %2424
  %2426 = load ptr, ptr %10, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiWindow, ptr %2426, i32 0, i32 76
  %2428 = getelementptr inbounds %struct.ImRect, ptr %2427, i32 0, i32 0
  %2429 = getelementptr inbounds %struct.ImVec2, ptr %2428, i32 0, i32 1
  store float %2425, ptr %2429, align 4, !tbaa !269
  %2430 = load ptr, ptr %10, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiWindow, ptr %2430, i32 0, i32 76
  %2432 = getelementptr inbounds %struct.ImRect, ptr %2431, i32 0, i32 0
  %2433 = getelementptr inbounds %struct.ImVec2, ptr %2432, i32 0, i32 0
  %2434 = load float, ptr %2433, align 8, !tbaa !268
  %2435 = load ptr, ptr %10, align 8, !tbaa !5
  %2436 = getelementptr inbounds %struct.ImGuiWindow, ptr %2435, i32 0, i32 12
  %2437 = getelementptr inbounds %struct.ImVec2, ptr %2436, i32 0, i32 0
  %2438 = load float, ptr %2437, align 8, !tbaa !197
  %2439 = fcmp une float %2438, 0.000000e+00
  br i1 %2439, label %2440, label %2445

2440:                                             ; preds = %2310
  %2441 = load ptr, ptr %10, align 8, !tbaa !5
  %2442 = getelementptr inbounds %struct.ImGuiWindow, ptr %2441, i32 0, i32 12
  %2443 = getelementptr inbounds %struct.ImVec2, ptr %2442, i32 0, i32 0
  %2444 = load float, ptr %2443, align 8, !tbaa !197
  br label %2464

2445:                                             ; preds = %2310
  %2446 = load ptr, ptr %10, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiWindow, ptr %2446, i32 0, i32 8
  %2448 = getelementptr inbounds %struct.ImVec2, ptr %2447, i32 0, i32 0
  %2449 = load float, ptr %2448, align 8, !tbaa !180
  %2450 = load ptr, ptr %10, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ImGuiWindow, ptr %2450, i32 0, i32 13
  %2452 = getelementptr inbounds %struct.ImVec2, ptr %2451, i32 0, i32 0
  %2453 = load float, ptr %2452, align 8, !tbaa !187
  %2454 = fneg float %2453
  %2455 = call float @llvm.fmuladd.f32(float %2454, float 2.000000e+00, float %2449)
  %2456 = load ptr, ptr %10, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiWindow, ptr %2456, i32 0, i32 18
  %2458 = load float, ptr %2457, align 8, !tbaa !206
  %2459 = load ptr, ptr %10, align 8, !tbaa !5
  %2460 = getelementptr inbounds %struct.ImGuiWindow, ptr %2459, i32 0, i32 20
  %2461 = load float, ptr %2460, align 8, !tbaa !207
  %2462 = fadd float %2458, %2461
  %2463 = fsub float %2455, %2462
  br label %2464

2464:                                             ; preds = %2445, %2440
  %2465 = phi float [ %2444, %2440 ], [ %2463, %2445 ]
  %2466 = fadd float %2434, %2465
  %2467 = load ptr, ptr %10, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.ImGuiWindow, ptr %2467, i32 0, i32 76
  %2469 = getelementptr inbounds %struct.ImRect, ptr %2468, i32 0, i32 1
  %2470 = getelementptr inbounds %struct.ImVec2, ptr %2469, i32 0, i32 0
  store float %2466, ptr %2470, align 8, !tbaa !270
  %2471 = load ptr, ptr %10, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiWindow, ptr %2471, i32 0, i32 76
  %2473 = getelementptr inbounds %struct.ImRect, ptr %2472, i32 0, i32 0
  %2474 = getelementptr inbounds %struct.ImVec2, ptr %2473, i32 0, i32 1
  %2475 = load float, ptr %2474, align 4, !tbaa !269
  %2476 = load ptr, ptr %10, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 12
  %2478 = getelementptr inbounds %struct.ImVec2, ptr %2477, i32 0, i32 1
  %2479 = load float, ptr %2478, align 4, !tbaa !198
  %2480 = fcmp une float %2479, 0.000000e+00
  br i1 %2480, label %2481, label %2486

2481:                                             ; preds = %2464
  %2482 = load ptr, ptr %10, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiWindow, ptr %2482, i32 0, i32 12
  %2484 = getelementptr inbounds %struct.ImVec2, ptr %2483, i32 0, i32 1
  %2485 = load float, ptr %2484, align 4, !tbaa !198
  br label %2505

2486:                                             ; preds = %2464
  %2487 = load ptr, ptr %10, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.ImGuiWindow, ptr %2487, i32 0, i32 8
  %2489 = getelementptr inbounds %struct.ImVec2, ptr %2488, i32 0, i32 1
  %2490 = load float, ptr %2489, align 4, !tbaa !181
  %2491 = load ptr, ptr %10, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiWindow, ptr %2491, i32 0, i32 13
  %2493 = getelementptr inbounds %struct.ImVec2, ptr %2492, i32 0, i32 1
  %2494 = load float, ptr %2493, align 4, !tbaa !245
  %2495 = fneg float %2494
  %2496 = call float @llvm.fmuladd.f32(float %2495, float 2.000000e+00, float %2490)
  %2497 = load ptr, ptr %10, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiWindow, ptr %2497, i32 0, i32 19
  %2499 = load float, ptr %2498, align 4, !tbaa !208
  %2500 = load ptr, ptr %10, align 8, !tbaa !5
  %2501 = getelementptr inbounds %struct.ImGuiWindow, ptr %2500, i32 0, i32 21
  %2502 = load float, ptr %2501, align 4, !tbaa !209
  %2503 = fadd float %2499, %2502
  %2504 = fsub float %2496, %2503
  br label %2505

2505:                                             ; preds = %2486, %2481
  %2506 = phi float [ %2485, %2481 ], [ %2504, %2486 ]
  %2507 = fadd float %2475, %2506
  %2508 = load ptr, ptr %10, align 8, !tbaa !5
  %2509 = getelementptr inbounds %struct.ImGuiWindow, ptr %2508, i32 0, i32 76
  %2510 = getelementptr inbounds %struct.ImRect, ptr %2509, i32 0, i32 1
  %2511 = getelementptr inbounds %struct.ImVec2, ptr %2510, i32 0, i32 1
  store float %2507, ptr %2511, align 4, !tbaa !271
  %2512 = load ptr, ptr %10, align 8, !tbaa !5
  %2513 = getelementptr inbounds %struct.ImGuiWindow, ptr %2512, i32 0, i32 18
  %2514 = load float, ptr %2513, align 8, !tbaa !206
  %2515 = load ptr, ptr %10, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.ImGuiWindow, ptr %2515, i32 0, i32 13
  %2517 = getelementptr inbounds %struct.ImVec2, ptr %2516, i32 0, i32 0
  %2518 = load float, ptr %2517, align 8, !tbaa !187
  %2519 = fadd float %2514, %2518
  %2520 = load ptr, ptr %10, align 8, !tbaa !5
  %2521 = getelementptr inbounds %struct.ImGuiWindow, ptr %2520, i32 0, i32 28
  %2522 = getelementptr inbounds %struct.ImVec2, ptr %2521, i32 0, i32 0
  %2523 = load float, ptr %2522, align 8, !tbaa !262
  %2524 = fsub float %2519, %2523
  %2525 = load ptr, ptr %10, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiWindow, ptr %2525, i32 0, i32 69
  %2527 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2526, i32 0, i32 11
  %2528 = getelementptr inbounds %struct.ImVec1, ptr %2527, i32 0, i32 0
  store float %2524, ptr %2528, align 4, !tbaa !272
  %2529 = load ptr, ptr %10, align 8, !tbaa !5
  %2530 = getelementptr inbounds %struct.ImGuiWindow, ptr %2529, i32 0, i32 69
  %2531 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2530, i32 0, i32 13
  %2532 = getelementptr inbounds %struct.ImVec1, ptr %2531, i32 0, i32 0
  store float 0.000000e+00, ptr %2532, align 4, !tbaa !273
  %2533 = load ptr, ptr %10, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiWindow, ptr %2533, i32 0, i32 69
  %2535 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2534, i32 0, i32 12
  %2536 = getelementptr inbounds %struct.ImVec1, ptr %2535, i32 0, i32 0
  store float 0.000000e+00, ptr %2536, align 8, !tbaa !274
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #12
  %2537 = load ptr, ptr %10, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiWindow, ptr %2537, i32 0, i32 7
  %2539 = getelementptr inbounds %struct.ImVec2, ptr %2538, i32 0, i32 0
  %2540 = load float, ptr %2539, align 8, !tbaa !230
  %2541 = fpext float %2540 to double
  %2542 = load ptr, ptr %10, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.ImGuiWindow, ptr %2542, i32 0, i32 13
  %2544 = getelementptr inbounds %struct.ImVec2, ptr %2543, i32 0, i32 0
  %2545 = load float, ptr %2544, align 8, !tbaa !187
  %2546 = fpext float %2545 to double
  %2547 = fadd double %2541, %2546
  %2548 = load ptr, ptr %10, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.ImGuiWindow, ptr %2548, i32 0, i32 28
  %2550 = getelementptr inbounds %struct.ImVec2, ptr %2549, i32 0, i32 0
  %2551 = load float, ptr %2550, align 8, !tbaa !262
  %2552 = fpext float %2551 to double
  %2553 = fsub double %2547, %2552
  %2554 = load ptr, ptr %10, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.ImGuiWindow, ptr %2554, i32 0, i32 18
  %2556 = load float, ptr %2555, align 8, !tbaa !206
  %2557 = fpext float %2556 to double
  %2558 = fadd double %2553, %2557
  %2559 = load ptr, ptr %10, align 8, !tbaa !5
  %2560 = getelementptr inbounds %struct.ImGuiWindow, ptr %2559, i32 0, i32 69
  %2561 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2560, i32 0, i32 12
  %2562 = getelementptr inbounds %struct.ImVec1, ptr %2561, i32 0, i32 0
  %2563 = load float, ptr %2562, align 8, !tbaa !274
  %2564 = fpext float %2563 to double
  %2565 = fadd double %2558, %2564
  store double %2565, ptr %89, align 8, !tbaa !275
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #12
  %2566 = load ptr, ptr %10, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiWindow, ptr %2566, i32 0, i32 7
  %2568 = getelementptr inbounds %struct.ImVec2, ptr %2567, i32 0, i32 1
  %2569 = load float, ptr %2568, align 4, !tbaa !232
  %2570 = fpext float %2569 to double
  %2571 = load ptr, ptr %10, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.ImGuiWindow, ptr %2571, i32 0, i32 13
  %2573 = getelementptr inbounds %struct.ImVec2, ptr %2572, i32 0, i32 1
  %2574 = load float, ptr %2573, align 4, !tbaa !245
  %2575 = fpext float %2574 to double
  %2576 = fadd double %2570, %2575
  %2577 = load ptr, ptr %10, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.ImGuiWindow, ptr %2577, i32 0, i32 28
  %2579 = getelementptr inbounds %struct.ImVec2, ptr %2578, i32 0, i32 1
  %2580 = load float, ptr %2579, align 4, !tbaa !264
  %2581 = fpext float %2580 to double
  %2582 = fsub double %2576, %2581
  %2583 = load ptr, ptr %10, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiWindow, ptr %2583, i32 0, i32 19
  %2585 = load float, ptr %2584, align 4, !tbaa !208
  %2586 = fpext float %2585 to double
  %2587 = fadd double %2582, %2586
  store double %2587, ptr %90, align 8, !tbaa !275
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #12
  %2588 = load double, ptr %89, align 8, !tbaa !275
  %2589 = fptrunc double %2588 to float
  %2590 = load double, ptr %90, align 8, !tbaa !275
  %2591 = fptrunc double %2590 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %2589, float noundef %2591)
  %2592 = load ptr, ptr %10, align 8, !tbaa !5
  %2593 = getelementptr inbounds %struct.ImGuiWindow, ptr %2592, i32 0, i32 69
  %2594 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2593, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2594, ptr align 4 %91, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #12
  %2595 = load double, ptr %89, align 8, !tbaa !275
  %2596 = load ptr, ptr %10, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.ImGuiWindow, ptr %2596, i32 0, i32 69
  %2598 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2597, i32 0, i32 2
  %2599 = getelementptr inbounds %struct.ImVec2, ptr %2598, i32 0, i32 0
  %2600 = load float, ptr %2599, align 8, !tbaa !276
  %2601 = fpext float %2600 to double
  %2602 = fsub double %2595, %2601
  %2603 = fptrunc double %2602 to float
  %2604 = load double, ptr %90, align 8, !tbaa !275
  %2605 = load ptr, ptr %10, align 8, !tbaa !5
  %2606 = getelementptr inbounds %struct.ImGuiWindow, ptr %2605, i32 0, i32 69
  %2607 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2606, i32 0, i32 2
  %2608 = getelementptr inbounds %struct.ImVec2, ptr %2607, i32 0, i32 1
  %2609 = load float, ptr %2608, align 4, !tbaa !277
  %2610 = fpext float %2609 to double
  %2611 = fsub double %2604, %2610
  %2612 = fptrunc double %2611 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %92, float noundef %2603, float noundef %2612)
  %2613 = load ptr, ptr %10, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiWindow, ptr %2613, i32 0, i32 69
  %2615 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2614, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2615, ptr align 4 %92, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  %2616 = load ptr, ptr %10, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.ImGuiWindow, ptr %2616, i32 0, i32 69
  %2618 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2617, i32 0, i32 2
  %2619 = load ptr, ptr %10, align 8, !tbaa !5
  %2620 = getelementptr inbounds %struct.ImGuiWindow, ptr %2619, i32 0, i32 69
  %2621 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2620, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2621, ptr align 8 %2618, i64 8, i1 false), !tbaa.struct !150
  %2622 = load ptr, ptr %10, align 8, !tbaa !5
  %2623 = getelementptr inbounds %struct.ImGuiWindow, ptr %2622, i32 0, i32 69
  %2624 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2623, i32 0, i32 0
  %2625 = load ptr, ptr %10, align 8, !tbaa !5
  %2626 = getelementptr inbounds %struct.ImGuiWindow, ptr %2625, i32 0, i32 69
  %2627 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2626, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2627, ptr align 8 %2624, i64 8, i1 false), !tbaa.struct !150
  %2628 = load ptr, ptr %10, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.ImGuiWindow, ptr %2628, i32 0, i32 69
  %2630 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2629, i32 0, i32 2
  %2631 = load ptr, ptr %10, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 69
  %2633 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2632, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2633, ptr align 8 %2630, i64 8, i1 false), !tbaa.struct !150
  %2634 = load ptr, ptr %10, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiWindow, ptr %2634, i32 0, i32 69
  %2636 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2635, i32 0, i32 2
  %2637 = load ptr, ptr %10, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiWindow, ptr %2637, i32 0, i32 69
  %2639 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2638, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2639, ptr align 8 %2636, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %93, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2640 = load ptr, ptr %10, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.ImGuiWindow, ptr %2640, i32 0, i32 69
  %2642 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2641, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2642, ptr align 4 %93, i64 8, i1 false), !tbaa.struct !150
  %2643 = load ptr, ptr %10, align 8, !tbaa !5
  %2644 = getelementptr inbounds %struct.ImGuiWindow, ptr %2643, i32 0, i32 69
  %2645 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2644, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2645, ptr align 4 %2642, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #12
  %2646 = load ptr, ptr %10, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiWindow, ptr %2646, i32 0, i32 69
  %2648 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2647, i32 0, i32 8
  store float 0.000000e+00, ptr %2648, align 4, !tbaa !278
  %2649 = load ptr, ptr %10, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiWindow, ptr %2649, i32 0, i32 69
  %2651 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2650, i32 0, i32 7
  store float 0.000000e+00, ptr %2651, align 8, !tbaa !279
  %2652 = load ptr, ptr %10, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiWindow, ptr %2652, i32 0, i32 69
  %2654 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2653, i32 0, i32 10
  store i8 0, ptr %2654, align 1, !tbaa !280
  %2655 = load ptr, ptr %10, align 8, !tbaa !5
  %2656 = getelementptr inbounds %struct.ImGuiWindow, ptr %2655, i32 0, i32 69
  %2657 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2656, i32 0, i32 9
  store i8 0, ptr %2657, align 8, !tbaa !281
  %2658 = load ptr, ptr %10, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.ImGuiWindow, ptr %2658, i32 0, i32 69
  %2660 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2659, i32 0, i32 15
  store i32 0, ptr %2660, align 8, !tbaa !147
  %2661 = load ptr, ptr %10, align 8, !tbaa !5
  %2662 = getelementptr inbounds %struct.ImGuiWindow, ptr %2661, i32 0, i32 69
  %2663 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2662, i32 0, i32 17
  %2664 = load i16, ptr %2663, align 2, !tbaa !282
  %2665 = load ptr, ptr %10, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiWindow, ptr %2665, i32 0, i32 69
  %2667 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2666, i32 0, i32 16
  store i16 %2664, ptr %2667, align 4, !tbaa !283
  %2668 = load ptr, ptr %10, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.ImGuiWindow, ptr %2668, i32 0, i32 69
  %2670 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2669, i32 0, i32 17
  store i16 0, ptr %2670, align 2, !tbaa !282
  %2671 = load ptr, ptr %10, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.ImGuiWindow, ptr %2671, i32 0, i32 69
  %2673 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2672, i32 0, i32 18
  store i8 1, ptr %2673, align 8, !tbaa !284
  %2674 = load ptr, ptr %10, align 8, !tbaa !5
  %2675 = getelementptr inbounds %struct.ImGuiWindow, ptr %2674, i32 0, i32 69
  %2676 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2675, i32 0, i32 19
  store i8 0, ptr %2676, align 1, !tbaa !285
  %2677 = load ptr, ptr %10, align 8, !tbaa !5
  %2678 = getelementptr inbounds %struct.ImGuiWindow, ptr %2677, i32 0, i32 29
  %2679 = getelementptr inbounds %struct.ImVec2, ptr %2678, i32 0, i32 1
  %2680 = load float, ptr %2679, align 4, !tbaa !246
  %2681 = fcmp ogt float %2680, 0.000000e+00
  %2682 = load ptr, ptr %10, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.ImGuiWindow, ptr %2682, i32 0, i32 69
  %2684 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2683, i32 0, i32 20
  %2685 = zext i1 %2681 to i8
  store i8 %2685, ptr %2684, align 2, !tbaa !286
  %2686 = load ptr, ptr %10, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.ImGuiWindow, ptr %2686, i32 0, i32 69
  %2688 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2687, i32 0, i32 21
  store i8 0, ptr %2688, align 1, !tbaa !287
  %2689 = load ptr, ptr %10, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.ImGuiWindow, ptr %2689, i32 0, i32 69
  %2691 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2690, i32 0, i32 23
  %2692 = load ptr, ptr %9, align 8, !tbaa !5
  %2693 = getelementptr inbounds %struct.ImGuiStyle, ptr %2692, i32 0, i32 15
  %2694 = getelementptr inbounds %struct.ImVec2, ptr %2693, i32 0, i32 0
  %2695 = load float, ptr %2694, align 4, !tbaa !188
  %2696 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %2697 = trunc i8 %2696 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %2691, float noundef %2695, i1 noundef zeroext %2697)
  %2698 = load ptr, ptr %10, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiWindow, ptr %2698, i32 0, i32 69
  %2700 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2699, i32 0, i32 24
  store i32 0, ptr %2700, align 8, !tbaa !288
  %2701 = load ptr, ptr %10, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.ImGuiWindow, ptr %2701, i32 0, i32 69
  %2703 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2702, i32 0, i32 25
  store i32 0, ptr %2703, align 4, !tbaa !289
  %2704 = load ptr, ptr %10, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.ImGuiWindow, ptr %2704, i32 0, i32 69
  %2706 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2705, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2706, i32 noundef 0)
  %2707 = load ptr, ptr %10, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.ImGuiWindow, ptr %2707, i32 0, i32 83
  %2709 = load ptr, ptr %10, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.ImGuiWindow, ptr %2709, i32 0, i32 69
  %2711 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2710, i32 0, i32 27
  store ptr %2708, ptr %2711, align 8, !tbaa !290
  %2712 = load ptr, ptr %10, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.ImGuiWindow, ptr %2712, i32 0, i32 69
  %2714 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2713, i32 0, i32 28
  store ptr null, ptr %2714, align 8, !tbaa !291
  %2715 = load ptr, ptr %10, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiWindow, ptr %2715, i32 0, i32 69
  %2717 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2716, i32 0, i32 30
  store i32 1, ptr %2717, align 4, !tbaa !292
  %2718 = load ptr, ptr %17, align 8, !tbaa !5
  %2719 = icmp ne ptr %2718, null
  br i1 %2719, label %2720, label %2725

2720:                                             ; preds = %2505
  %2721 = load ptr, ptr %17, align 8, !tbaa !5
  %2722 = getelementptr inbounds %struct.ImGuiWindow, ptr %2721, i32 0, i32 69
  %2723 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2722, i32 0, i32 30
  %2724 = load i32, ptr %2723, align 4, !tbaa !292
  br label %2726

2725:                                             ; preds = %2505
  br label %2726

2726:                                             ; preds = %2725, %2720
  %2727 = phi i32 [ %2724, %2720 ], [ 1, %2725 ]
  %2728 = load ptr, ptr %10, align 8, !tbaa !5
  %2729 = getelementptr inbounds %struct.ImGuiWindow, ptr %2728, i32 0, i32 69
  %2730 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2729, i32 0, i32 31
  store i32 %2727, ptr %2730, align 8, !tbaa !293
  %2731 = load ptr, ptr %10, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiWindow, ptr %2731, i32 0, i32 81
  %2733 = load float, ptr %2732, align 8, !tbaa !241
  %2734 = load ptr, ptr %10, align 8, !tbaa !5
  %2735 = getelementptr inbounds %struct.ImGuiWindow, ptr %2734, i32 0, i32 69
  %2736 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2735, i32 0, i32 33
  store float %2733, ptr %2736, align 8, !tbaa !294
  %2737 = load ptr, ptr %10, align 8, !tbaa !5
  %2738 = getelementptr inbounds %struct.ImGuiWindow, ptr %2737, i32 0, i32 69
  %2739 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2738, i32 0, i32 34
  store float -1.000000e+00, ptr %2739, align 4, !tbaa !295
  %2740 = load ptr, ptr %10, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.ImGuiWindow, ptr %2740, i32 0, i32 69
  %2742 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2741, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2742, i32 noundef 0)
  %2743 = load ptr, ptr %10, align 8, !tbaa !5
  %2744 = getelementptr inbounds %struct.ImGuiWindow, ptr %2743, i32 0, i32 69
  %2745 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2744, i32 0, i32 36
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2745, i32 noundef 0)
  %2746 = load i32, ptr %7, align 4, !tbaa !9
  %2747 = and i32 %2746, 134217728
  %2748 = icmp ne i32 %2747, 0
  br i1 %2748, label %2749, label %2755

2749:                                             ; preds = %2726
  %2750 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 55)
  %2751 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %2750)
  %2752 = load ptr, ptr %10, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.ImGuiWindow, ptr %2752, i32 0, i32 69
  %2754 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2753, i32 0, i32 32
  store i32 %2751, ptr %2754, align 4, !tbaa !296
  br label %2755

2755:                                             ; preds = %2749, %2726
  %2756 = load ptr, ptr %10, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.ImGuiWindow, ptr %2756, i32 0, i32 55
  %2758 = load i8, ptr %2757, align 2, !tbaa !212
  %2759 = sext i8 %2758 to i32
  %2760 = icmp sgt i32 %2759, 0
  br i1 %2760, label %2761, label %2766

2761:                                             ; preds = %2755
  %2762 = load ptr, ptr %10, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.ImGuiWindow, ptr %2762, i32 0, i32 55
  %2764 = load i8, ptr %2763, align 2, !tbaa !212
  %2765 = add i8 %2764, -1
  store i8 %2765, ptr %2763, align 2, !tbaa !212
  br label %2766

2766:                                             ; preds = %2761, %2755
  %2767 = load ptr, ptr %10, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.ImGuiWindow, ptr %2767, i32 0, i32 56
  %2769 = load i8, ptr %2768, align 1, !tbaa !213
  %2770 = sext i8 %2769 to i32
  %2771 = icmp sgt i32 %2770, 0
  br i1 %2771, label %2772, label %2777

2772:                                             ; preds = %2766
  %2773 = load ptr, ptr %10, align 8, !tbaa !5
  %2774 = getelementptr inbounds %struct.ImGuiWindow, ptr %2773, i32 0, i32 56
  %2775 = load i8, ptr %2774, align 1, !tbaa !213
  %2776 = add i8 %2775, -1
  store i8 %2776, ptr %2774, align 1, !tbaa !213
  br label %2777

2777:                                             ; preds = %2772, %2766
  %2778 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2779 = trunc i8 %2778 to i1
  br i1 %2779, label %2780, label %2782

2780:                                             ; preds = %2777
  %2781 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %2781, i32 noundef 2)
  br label %2782

2782:                                             ; preds = %2780, %2777
  %2783 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2784 = trunc i8 %2783 to i1
  br i1 %2784, label %2785, label %2793

2785:                                             ; preds = %2782
  %2786 = load ptr, ptr %10, align 8, !tbaa !5
  %2787 = load ptr, ptr %8, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiContext, ptr %2787, i32 0, i32 107
  %2789 = load ptr, ptr %2788, align 8, !tbaa !260
  %2790 = icmp eq ptr %2786, %2789
  br i1 %2790, label %2791, label %2793

2791:                                             ; preds = %2785
  %2792 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2792, i1 noundef zeroext false)
  br label %2793

2793:                                             ; preds = %2791, %2785, %2782
  %2794 = load ptr, ptr %8, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.ImGuiContext, ptr %2794, i32 0, i32 2
  %2796 = getelementptr inbounds %struct.ImGuiIO, ptr %2795, i32 0, i32 28
  %2797 = load i8, ptr %2796, align 1, !tbaa !297, !range !93, !noundef !94
  %2798 = trunc i8 %2797 to i1
  br i1 %2798, label %2799, label %2821

2799:                                             ; preds = %2793
  %2800 = load ptr, ptr %8, align 8, !tbaa !5
  %2801 = getelementptr inbounds %struct.ImGuiContext, ptr %2800, i32 0, i32 107
  %2802 = load ptr, ptr %2801, align 8, !tbaa !260
  %2803 = icmp ne ptr %2802, null
  br i1 %2803, label %2804, label %2820

2804:                                             ; preds = %2799
  %2805 = load ptr, ptr %8, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiContext, ptr %2805, i32 0, i32 107
  %2807 = load ptr, ptr %2806, align 8, !tbaa !260
  %2808 = getelementptr inbounds %struct.ImGuiWindow, ptr %2807, i32 0, i32 91
  %2809 = load ptr, ptr %2808, align 8, !tbaa !164
  %2810 = load ptr, ptr %10, align 8, !tbaa !5
  %2811 = icmp eq ptr %2809, %2810
  br i1 %2811, label %2812, label %2820

2812:                                             ; preds = %2804
  %2813 = load ptr, ptr %8, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.ImGuiContext, ptr %2813, i32 0, i32 56
  %2815 = load i32, ptr %2814, align 4, !tbaa !202
  %2816 = icmp eq i32 %2815, 0
  br i1 %2816, label %2817, label %2820

2817:                                             ; preds = %2812
  %2818 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef 4644, i32 noundef 0)
  br i1 %2818, label %2819, label %2820

2819:                                             ; preds = %2817
  call void @_ZN5ImGui14LogToClipboardEi(i32 noundef 0)
  br label %2820

2820:                                             ; preds = %2819, %2817, %2812, %2804, %2799
  br label %2821

2821:                                             ; preds = %2820, %2793
  %2822 = load i32, ptr %7, align 4, !tbaa !9
  %2823 = and i32 %2822, 1
  %2824 = icmp ne i32 %2823, 0
  br i1 %2824, label %2849, label %2825

2825:                                             ; preds = %2821
  %2826 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #12
  %2827 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2828 = getelementptr inbounds %struct.ImVec2, ptr %2827, i32 0, i32 0
  %2829 = load float, ptr %2828, align 4, !tbaa !298
  %2830 = load ptr, ptr %10, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.ImGuiWindow, ptr %2830, i32 0, i32 15
  %2832 = load float, ptr %2831, align 4, !tbaa !183
  %2833 = fadd float %2829, %2832
  %2834 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2835 = getelementptr inbounds %struct.ImVec2, ptr %2834, i32 0, i32 1
  %2836 = load float, ptr %2835, align 4, !tbaa !299
  %2837 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2838 = getelementptr inbounds %struct.ImVec2, ptr %2837, i32 0, i32 0
  %2839 = load float, ptr %2838, align 4, !tbaa !300
  %2840 = load ptr, ptr %10, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.ImGuiWindow, ptr %2840, i32 0, i32 15
  %2842 = load float, ptr %2841, align 4, !tbaa !183
  %2843 = fsub float %2839, %2842
  %2844 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2845 = getelementptr inbounds %struct.ImVec2, ptr %2844, i32 0, i32 1
  %2846 = load float, ptr %2845, align 4, !tbaa !301
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %94, float noundef %2833, float noundef %2836, float noundef %2843, float noundef %2846)
  %2847 = load ptr, ptr %5, align 8, !tbaa !5
  %2848 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2826, ptr noundef nonnull align 4 dereferenceable(16) %94, ptr noundef %2847, ptr noundef %2848)
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #12
  br label %2849

2849:                                             ; preds = %2825, %2821
  %2850 = load ptr, ptr %10, align 8, !tbaa !5
  %2851 = getelementptr inbounds %struct.ImGuiWindow, ptr %2850, i32 0, i32 77
  %2852 = getelementptr inbounds %struct.ImVec2ih, ptr %2851, i32 0, i32 1
  store i16 0, ptr %2852, align 2, !tbaa !302
  %2853 = load ptr, ptr %10, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiWindow, ptr %2853, i32 0, i32 77
  %2855 = getelementptr inbounds %struct.ImVec2ih, ptr %2854, i32 0, i32 0
  store i16 0, ptr %2855, align 8, !tbaa !303
  %2856 = load i32, ptr %7, align 4, !tbaa !9
  %2857 = and i32 %2856, 33554432
  %2858 = icmp ne i32 %2857, 0
  br i1 %2858, label %2859, label %2863

2859:                                             ; preds = %2849
  %2860 = load ptr, ptr %10, align 8, !tbaa !5
  %2861 = load ptr, ptr %8, align 8, !tbaa !5
  %2862 = getelementptr inbounds %struct.ImGuiContext, ptr %2861, i32 0, i32 236
  store ptr %2860, ptr %2862, align 8, !tbaa !304
  br label %2863

2863:                                             ; preds = %2859, %2849
  %2864 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %2864, ptr noundef nonnull align 4 dereferenceable(16) %72)
  %2865 = load ptr, ptr %8, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiContext, ptr %2865, i32 0, i32 86
  %2867 = load i32, ptr %2866, align 4, !tbaa !305
  %2868 = icmp ne i32 %2867, 0
  br i1 %2868, label %2869, label %2886

2869:                                             ; preds = %2863
  %2870 = load ptr, ptr %10, align 8, !tbaa !5
  %2871 = getelementptr inbounds %struct.ImGuiWindow, ptr %2870, i32 0, i32 2
  %2872 = load i32, ptr %2871, align 8, !tbaa !99
  %2873 = load ptr, ptr %8, align 8, !tbaa !5
  %2874 = getelementptr inbounds %struct.ImGuiContext, ptr %2873, i32 0, i32 86
  %2875 = load i32, ptr %2874, align 4, !tbaa !305
  %2876 = icmp eq i32 %2872, %2875
  br i1 %2876, label %2885, label %2877

2877:                                             ; preds = %2869
  %2878 = load ptr, ptr %10, align 8, !tbaa !5
  %2879 = getelementptr inbounds %struct.ImGuiWindow, ptr %2878, i32 0, i32 25
  %2880 = load i32, ptr %2879, align 4, !tbaa !306
  %2881 = load ptr, ptr %8, align 8, !tbaa !5
  %2882 = getelementptr inbounds %struct.ImGuiContext, ptr %2881, i32 0, i32 86
  %2883 = load i32, ptr %2882, align 4, !tbaa !305
  %2884 = icmp eq i32 %2880, %2883
  br i1 %2884, label %2885, label %2886

2885:                                             ; preds = %2877, %2869
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %2886

2886:                                             ; preds = %2885, %2877, %2863
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  br label %2903

2887:                                             ; preds = %747, %742
  %2888 = load ptr, ptr %10, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.ImGuiWindow, ptr %2888, i32 0, i32 42
  %2890 = load i8, ptr %2889, align 8, !tbaa !165, !range !93, !noundef !94
  %2891 = trunc i8 %2890 to i1
  br i1 %2891, label %2892, label %2894

2892:                                             ; preds = %2887
  %2893 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL29SetWindowActiveForSkipRefreshP11ImGuiWindow(ptr noundef %2893)
  br label %2894

2894:                                             ; preds = %2892, %2887
  %2895 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2895)
  %2896 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #12
  %2897 = load ptr, ptr %10, align 8, !tbaa !5
  %2898 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %2897)
  %2899 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 0
  %2900 = extractvalue { <2 x float>, <2 x float> } %2898, 0
  store <2 x float> %2900, ptr %2899, align 4
  %2901 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 1
  %2902 = extractvalue { <2 x float>, <2 x float> } %2898, 1
  store <2 x float> %2902, ptr %2901, align 4
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %2896, ptr noundef nonnull align 4 dereferenceable(16) %95)
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #12
  br label %2903

2903:                                             ; preds = %2894, %2886
  %2904 = load ptr, ptr %10, align 8, !tbaa !5
  %2905 = getelementptr inbounds %struct.ImGuiWindow, ptr %2904, i32 0, i32 42
  %2906 = load i8, ptr %2905, align 8, !tbaa !165, !range !93, !noundef !94
  %2907 = trunc i8 %2906 to i1
  br i1 %2907, label %2915, label %2908

2908:                                             ; preds = %2903
  %2909 = load ptr, ptr %10, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.ImGuiWindow, ptr %2909, i32 0, i32 72
  %2911 = getelementptr inbounds %struct.ImRect, ptr %2910, i32 0, i32 0
  %2912 = load ptr, ptr %10, align 8, !tbaa !5
  %2913 = getelementptr inbounds %struct.ImGuiWindow, ptr %2912, i32 0, i32 72
  %2914 = getelementptr inbounds %struct.ImRect, ptr %2913, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2911, ptr noundef nonnull align 4 dereferenceable(8) %2914, i1 noundef zeroext true)
  br label %2915

2915:                                             ; preds = %2908, %2903
  %2916 = load ptr, ptr %10, align 8, !tbaa !5
  %2917 = getelementptr inbounds %struct.ImGuiWindow, ptr %2916, i32 0, i32 38
  store i8 0, ptr %2917, align 4, !tbaa !307
  %2918 = load ptr, ptr %10, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiWindow, ptr %2918, i32 0, i32 50
  %2920 = load i16, ptr %2919, align 8, !tbaa !308
  %2921 = add i16 %2920, 1
  store i16 %2921, ptr %2919, align 8, !tbaa !308
  %2922 = load ptr, ptr %8, align 8, !tbaa !5
  %2923 = getelementptr inbounds %struct.ImGuiContext, ptr %2922, i32 0, i32 89
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112) %2923)
  %2924 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %2925 = trunc i8 %2924 to i1
  br i1 %2925, label %2926, label %3152

2926:                                             ; preds = %2915
  %2927 = load ptr, ptr %10, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.ImGuiWindow, ptr %2927, i32 0, i32 42
  %2929 = load i8, ptr %2928, align 8, !tbaa !165, !range !93, !noundef !94
  %2930 = trunc i8 %2929 to i1
  br i1 %2930, label %3152, label %2931

2931:                                             ; preds = %2926
  %2932 = load i32, ptr %7, align 4, !tbaa !9
  %2933 = and i32 %2932, 16777216
  %2934 = icmp ne i32 %2933, 0
  br i1 %2934, label %2935, label %3063

2935:                                             ; preds = %2931
  %2936 = load i32, ptr %7, align 4, !tbaa !9
  %2937 = and i32 %2936, 268435456
  %2938 = icmp ne i32 %2937, 0
  br i1 %2938, label %3063, label %2939

2939:                                             ; preds = %2935
  %2940 = load i32, ptr %7, align 4, !tbaa !9
  %2941 = and i32 %2940, 1
  %2942 = icmp ne i32 %2941, 0
  br i1 %2942, label %2943, label %2944

2943:                                             ; preds = %2939
  br label %2946

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

2945:                                             ; No predecessors!
  br label %2946

2946:                                             ; preds = %2945, %2943
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #12
  %2947 = load ptr, ptr %10, align 8, !tbaa !5
  %2948 = getelementptr inbounds %struct.ImGuiWindow, ptr %2947, i32 0, i32 4
  %2949 = load i32, ptr %2948, align 8, !tbaa !126
  %2950 = and i32 %2949, 256
  %2951 = icmp ne i32 %2950, 0
  br i1 %2951, label %2952, label %2974

2952:                                             ; preds = %2946
  %2953 = load ptr, ptr %8, align 8, !tbaa !5
  %2954 = getelementptr inbounds %struct.ImGuiContext, ptr %2953, i32 0, i32 122
  %2955 = load i8, ptr %2954, align 1, !tbaa !309, !range !93, !noundef !94
  %2956 = trunc i8 %2955 to i1
  br i1 %2956, label %2957, label %2972

2957:                                             ; preds = %2952
  %2958 = load ptr, ptr %8, align 8, !tbaa !5
  %2959 = getelementptr inbounds %struct.ImGuiContext, ptr %2958, i32 0, i32 107
  %2960 = load ptr, ptr %2959, align 8, !tbaa !260
  %2961 = icmp ne ptr %2960, null
  br i1 %2961, label %2962, label %2972

2962:                                             ; preds = %2957
  %2963 = load ptr, ptr %8, align 8, !tbaa !5
  %2964 = getelementptr inbounds %struct.ImGuiContext, ptr %2963, i32 0, i32 107
  %2965 = load ptr, ptr %2964, align 8, !tbaa !260
  %2966 = getelementptr inbounds %struct.ImGuiWindow, ptr %2965, i32 0, i32 94
  %2967 = load ptr, ptr %2966, align 8, !tbaa !310
  %2968 = load ptr, ptr %10, align 8, !tbaa !5
  %2969 = getelementptr inbounds %struct.ImGuiWindow, ptr %2968, i32 0, i32 94
  %2970 = load ptr, ptr %2969, align 8, !tbaa !310
  %2971 = icmp eq ptr %2967, %2970
  br label %2972

2972:                                             ; preds = %2962, %2957, %2952
  %2973 = phi i1 [ false, %2957 ], [ false, %2952 ], [ %2971, %2962 ]
  br label %2974

2974:                                             ; preds = %2972, %2946
  %2975 = phi i1 [ false, %2946 ], [ %2973, %2972 ]
  %2976 = zext i1 %2975 to i8
  store i8 %2976, ptr %96, align 1, !tbaa !97
  %2977 = load ptr, ptr %8, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.ImGuiContext, ptr %2977, i32 0, i32 251
  %2979 = load i8, ptr %2978, align 8, !tbaa !311, !range !93, !noundef !94
  %2980 = trunc i8 %2979 to i1
  br i1 %2980, label %3028, label %2981

2981:                                             ; preds = %2974
  %2982 = load i8, ptr %96, align 1, !tbaa !97, !range !93, !noundef !94
  %2983 = trunc i8 %2982 to i1
  br i1 %2983, label %3028, label %2984

2984:                                             ; preds = %2981
  %2985 = load ptr, ptr %10, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.ImGuiWindow, ptr %2985, i32 0, i32 70
  %2987 = getelementptr inbounds %struct.ImRect, ptr %2986, i32 0, i32 0
  %2988 = getelementptr inbounds %struct.ImVec2, ptr %2987, i32 0, i32 0
  %2989 = load float, ptr %2988, align 8, !tbaa !312
  %2990 = load ptr, ptr %10, align 8, !tbaa !5
  %2991 = getelementptr inbounds %struct.ImGuiWindow, ptr %2990, i32 0, i32 70
  %2992 = getelementptr inbounds %struct.ImRect, ptr %2991, i32 0, i32 1
  %2993 = getelementptr inbounds %struct.ImVec2, ptr %2992, i32 0, i32 0
  %2994 = load float, ptr %2993, align 8, !tbaa !313
  %2995 = fcmp oge float %2989, %2994
  br i1 %2995, label %3008, label %2996

2996:                                             ; preds = %2984
  %2997 = load ptr, ptr %10, align 8, !tbaa !5
  %2998 = getelementptr inbounds %struct.ImGuiWindow, ptr %2997, i32 0, i32 70
  %2999 = getelementptr inbounds %struct.ImRect, ptr %2998, i32 0, i32 0
  %3000 = getelementptr inbounds %struct.ImVec2, ptr %2999, i32 0, i32 1
  %3001 = load float, ptr %3000, align 4, !tbaa !314
  %3002 = load ptr, ptr %10, align 8, !tbaa !5
  %3003 = getelementptr inbounds %struct.ImGuiWindow, ptr %3002, i32 0, i32 70
  %3004 = getelementptr inbounds %struct.ImRect, ptr %3003, i32 0, i32 1
  %3005 = getelementptr inbounds %struct.ImVec2, ptr %3004, i32 0, i32 1
  %3006 = load float, ptr %3005, align 4, !tbaa !315
  %3007 = fcmp oge float %3001, %3006
  br i1 %3007, label %3008, label %3027

3008:                                             ; preds = %2996, %2984
  %3009 = load ptr, ptr %10, align 8, !tbaa !5
  %3010 = getelementptr inbounds %struct.ImGuiWindow, ptr %3009, i32 0, i32 55
  %3011 = load i8, ptr %3010, align 2, !tbaa !212
  %3012 = sext i8 %3011 to i32
  %3013 = icmp sgt i32 %3012, 0
  br i1 %3013, label %3020, label %3014

3014:                                             ; preds = %3008
  %3015 = load ptr, ptr %10, align 8, !tbaa !5
  %3016 = getelementptr inbounds %struct.ImGuiWindow, ptr %3015, i32 0, i32 56
  %3017 = load i8, ptr %3016, align 1, !tbaa !213
  %3018 = sext i8 %3017 to i32
  %3019 = icmp sgt i32 %3018, 0
  br i1 %3019, label %3020, label %3023

3020:                                             ; preds = %3014, %3008
  %3021 = load ptr, ptr %10, align 8, !tbaa !5
  %3022 = getelementptr inbounds %struct.ImGuiWindow, ptr %3021, i32 0, i32 61
  store i8 1, ptr %3022, align 1, !tbaa !166
  br label %3026

3023:                                             ; preds = %3014
  %3024 = load ptr, ptr %10, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiWindow, ptr %3024, i32 0, i32 60
  store i8 1, ptr %3025, align 4, !tbaa !178
  br label %3026

3026:                                             ; preds = %3023, %3020
  br label %3027

3027:                                             ; preds = %3026, %2996
  br label %3028

3028:                                             ; preds = %3027, %2981, %2974
  %3029 = load ptr, ptr %17, align 8, !tbaa !5
  %3030 = icmp ne ptr %3029, null
  br i1 %3030, label %3031, label %3045

3031:                                             ; preds = %3028
  %3032 = load ptr, ptr %17, align 8, !tbaa !5
  %3033 = getelementptr inbounds %struct.ImGuiWindow, ptr %3032, i32 0, i32 39
  %3034 = load i8, ptr %3033, align 1, !tbaa !205, !range !93, !noundef !94
  %3035 = trunc i8 %3034 to i1
  br i1 %3035, label %3042, label %3036

3036:                                             ; preds = %3031
  %3037 = load ptr, ptr %17, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.ImGuiWindow, ptr %3037, i32 0, i32 60
  %3039 = load i8, ptr %3038, align 4, !tbaa !178
  %3040 = sext i8 %3039 to i32
  %3041 = icmp sgt i32 %3040, 0
  br i1 %3041, label %3042, label %3045

3042:                                             ; preds = %3036, %3031
  %3043 = load ptr, ptr %10, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiWindow, ptr %3043, i32 0, i32 60
  store i8 1, ptr %3044, align 4, !tbaa !178
  br label %3045

3045:                                             ; preds = %3042, %3036, %3028
  %3046 = load ptr, ptr %17, align 8, !tbaa !5
  %3047 = icmp ne ptr %3046, null
  br i1 %3047, label %3048, label %3062

3048:                                             ; preds = %3045
  %3049 = load ptr, ptr %17, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiWindow, ptr %3049, i32 0, i32 39
  %3051 = load i8, ptr %3050, align 1, !tbaa !205, !range !93, !noundef !94
  %3052 = trunc i8 %3051 to i1
  br i1 %3052, label %3059, label %3053

3053:                                             ; preds = %3048
  %3054 = load ptr, ptr %17, align 8, !tbaa !5
  %3055 = getelementptr inbounds %struct.ImGuiWindow, ptr %3054, i32 0, i32 61
  %3056 = load i8, ptr %3055, align 1, !tbaa !166
  %3057 = sext i8 %3056 to i32
  %3058 = icmp sgt i32 %3057, 0
  br i1 %3058, label %3059, label %3062

3059:                                             ; preds = %3053, %3048
  %3060 = load ptr, ptr %10, align 8, !tbaa !5
  %3061 = getelementptr inbounds %struct.ImGuiWindow, ptr %3060, i32 0, i32 61
  store i8 1, ptr %3061, align 1, !tbaa !166
  br label %3062

3062:                                             ; preds = %3059, %3053, %3045
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #12
  br label %3063

3063:                                             ; preds = %3062, %2935, %2931
  %3064 = load ptr, ptr %9, align 8, !tbaa !5
  %3065 = getelementptr inbounds %struct.ImGuiStyle, ptr %3064, i32 0, i32 0
  %3066 = load float, ptr %3065, align 4, !tbaa !316
  %3067 = fcmp ole float %3066, 0.000000e+00
  br i1 %3067, label %3068, label %3071

3068:                                             ; preds = %3063
  %3069 = load ptr, ptr %10, align 8, !tbaa !5
  %3070 = getelementptr inbounds %struct.ImGuiWindow, ptr %3069, i32 0, i32 60
  store i8 1, ptr %3070, align 4, !tbaa !178
  br label %3071

3071:                                             ; preds = %3068, %3063
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #12
  %3072 = load ptr, ptr %10, align 8, !tbaa !5
  %3073 = getelementptr inbounds %struct.ImGuiWindow, ptr %3072, i32 0, i32 60
  %3074 = load i8, ptr %3073, align 4, !tbaa !178
  %3075 = sext i8 %3074 to i32
  %3076 = icmp sgt i32 %3075, 0
  br i1 %3076, label %3083, label %3077

3077:                                             ; preds = %3071
  %3078 = load ptr, ptr %10, align 8, !tbaa !5
  %3079 = getelementptr inbounds %struct.ImGuiWindow, ptr %3078, i32 0, i32 61
  %3080 = load i8, ptr %3079, align 1, !tbaa !166
  %3081 = sext i8 %3080 to i32
  %3082 = icmp sgt i32 %3081, 0
  br label %3083

3083:                                             ; preds = %3077, %3071
  %3084 = phi i1 [ true, %3071 ], [ %3082, %3077 ]
  %3085 = zext i1 %3084 to i8
  store i8 %3085, ptr %97, align 1, !tbaa !97
  %3086 = load i8, ptr %97, align 1, !tbaa !97, !range !93, !noundef !94
  %3087 = trunc i8 %3086 to i1
  br i1 %3087, label %3094, label %3088

3088:                                             ; preds = %3083
  %3089 = load ptr, ptr %10, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.ImGuiWindow, ptr %3089, i32 0, i32 62
  %3091 = load i8, ptr %3090, align 2, !tbaa !179
  %3092 = sext i8 %3091 to i32
  %3093 = icmp sgt i32 %3092, 0
  br label %3094

3094:                                             ; preds = %3088, %3083
  %3095 = phi i1 [ true, %3083 ], [ %3093, %3088 ]
  %3096 = load ptr, ptr %10, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.ImGuiWindow, ptr %3096, i32 0, i32 44
  %3098 = zext i1 %3095 to i8
  store i8 %3098, ptr %3097, align 2, !tbaa !317
  %3099 = load ptr, ptr %10, align 8, !tbaa !5
  %3100 = getelementptr inbounds %struct.ImGuiWindow, ptr %3099, i32 0, i32 63
  %3101 = load i8, ptr %3100, align 1, !tbaa !318
  %3102 = sext i8 %3101 to i32
  %3103 = icmp sgt i32 %3102, 0
  br i1 %3103, label %3104, label %3113

3104:                                             ; preds = %3094
  %3105 = load ptr, ptr %10, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.ImGuiWindow, ptr %3105, i32 0, i32 63
  %3107 = load i8, ptr %3106, align 1, !tbaa !318
  %3108 = add i8 %3107, -1
  store i8 %3108, ptr %3106, align 1, !tbaa !318
  %3109 = load ptr, ptr %10, align 8, !tbaa !5
  %3110 = getelementptr inbounds %struct.ImGuiWindow, ptr %3109, i32 0, i32 3
  %3111 = load i32, ptr %3110, align 4, !tbaa !123
  %3112 = or i32 %3111, 197120
  store i32 %3112, ptr %3110, align 4, !tbaa !123
  br label %3113

3113:                                             ; preds = %3104, %3094
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #12
  store i8 0, ptr %98, align 1, !tbaa !97
  %3114 = load ptr, ptr %10, align 8, !tbaa !5
  %3115 = getelementptr inbounds %struct.ImGuiWindow, ptr %3114, i32 0, i32 39
  %3116 = load i8, ptr %3115, align 1, !tbaa !205, !range !93, !noundef !94
  %3117 = trunc i8 %3116 to i1
  br i1 %3117, label %3126, label %3118

3118:                                             ; preds = %3113
  %3119 = load ptr, ptr %10, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiWindow, ptr %3119, i32 0, i32 36
  %3121 = load i8, ptr %3120, align 2, !tbaa !167, !range !93, !noundef !94
  %3122 = trunc i8 %3121 to i1
  br i1 %3122, label %3123, label %3126

3123:                                             ; preds = %3118
  %3124 = load i8, ptr %97, align 1, !tbaa !97, !range !93, !noundef !94
  %3125 = trunc i8 %3124 to i1
  br i1 %3125, label %3126, label %3146

3126:                                             ; preds = %3123, %3118, %3113
  %3127 = load ptr, ptr %10, align 8, !tbaa !5
  %3128 = getelementptr inbounds %struct.ImGuiWindow, ptr %3127, i32 0, i32 55
  %3129 = load i8, ptr %3128, align 2, !tbaa !212
  %3130 = sext i8 %3129 to i32
  %3131 = icmp sle i32 %3130, 0
  br i1 %3131, label %3132, label %3145

3132:                                             ; preds = %3126
  %3133 = load ptr, ptr %10, align 8, !tbaa !5
  %3134 = getelementptr inbounds %struct.ImGuiWindow, ptr %3133, i32 0, i32 56
  %3135 = load i8, ptr %3134, align 1, !tbaa !213
  %3136 = sext i8 %3135 to i32
  %3137 = icmp sle i32 %3136, 0
  br i1 %3137, label %3138, label %3145

3138:                                             ; preds = %3132
  %3139 = load ptr, ptr %10, align 8, !tbaa !5
  %3140 = getelementptr inbounds %struct.ImGuiWindow, ptr %3139, i32 0, i32 61
  %3141 = load i8, ptr %3140, align 1, !tbaa !166
  %3142 = sext i8 %3141 to i32
  %3143 = icmp sle i32 %3142, 0
  br i1 %3143, label %3144, label %3145

3144:                                             ; preds = %3138
  store i8 1, ptr %98, align 1, !tbaa !97
  br label %3145

3145:                                             ; preds = %3144, %3138, %3132, %3126
  br label %3146

3146:                                             ; preds = %3145, %3123
  %3147 = load i8, ptr %98, align 1, !tbaa !97, !range !93, !noundef !94
  %3148 = trunc i8 %3147 to i1
  %3149 = load ptr, ptr %10, align 8, !tbaa !5
  %3150 = getelementptr inbounds %struct.ImGuiWindow, ptr %3149, i32 0, i32 41
  %3151 = zext i1 %3148 to i8
  store i8 %3151, ptr %3150, align 1, !tbaa !319
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #12
  br label %3159

3152:                                             ; preds = %2926, %2915
  %3153 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %3154 = trunc i8 %3153 to i1
  br i1 %3154, label %3155, label %3158

3155:                                             ; preds = %3152
  %3156 = load ptr, ptr %10, align 8, !tbaa !5
  %3157 = getelementptr inbounds %struct.ImGuiWindow, ptr %3156, i32 0, i32 41
  store i8 1, ptr %3157, align 1, !tbaa !319
  br label %3158

3158:                                             ; preds = %3155, %3152
  br label %3159

3159:                                             ; preds = %3158, %3146
  %3160 = load ptr, ptr %10, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.ImGuiWindow, ptr %3160, i32 0, i32 45
  %3162 = load i8, ptr %3161, align 1, !tbaa !116, !range !93, !noundef !94
  %3163 = trunc i8 %3162 to i1
  br i1 %3163, label %3213, label %3164

3164:                                             ; preds = %3159
  %3165 = load ptr, ptr %8, align 8, !tbaa !5
  %3166 = getelementptr inbounds %struct.ImGuiContext, ptr %3165, i32 0, i32 2
  %3167 = getelementptr inbounds %struct.ImGuiIO, ptr %3166, i32 0, i32 42
  %3168 = load i8, ptr %3167, align 2, !tbaa !320, !range !93, !noundef !94
  %3169 = trunc i8 %3168 to i1
  br i1 %3169, label %3170, label %3173

3170:                                             ; preds = %3164
  %3171 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %3172 = trunc i8 %3171 to i1
  br i1 %3172, label %3189, label %3173

3173:                                             ; preds = %3170, %3164
  %3174 = load ptr, ptr %8, align 8, !tbaa !5
  %3175 = getelementptr inbounds %struct.ImGuiContext, ptr %3174, i32 0, i32 2
  %3176 = getelementptr inbounds %struct.ImGuiIO, ptr %3175, i32 0, i32 43
  %3177 = load i8, ptr %3176, align 1, !tbaa !321, !range !93, !noundef !94
  %3178 = trunc i8 %3177 to i1
  br i1 %3178, label %3179, label %3212

3179:                                             ; preds = %3173
  %3180 = load ptr, ptr %8, align 8, !tbaa !5
  %3181 = getelementptr inbounds %struct.ImGuiContext, ptr %3180, i32 0, i32 280
  %3182 = load i8, ptr %3181, align 8, !tbaa !322
  %3183 = sext i8 %3182 to i32
  %3184 = load ptr, ptr %8, align 8, !tbaa !5
  %3185 = getelementptr inbounds %struct.ImGuiContext, ptr %3184, i32 0, i32 29
  %3186 = getelementptr inbounds %struct.ImVector.3, ptr %3185, i32 0, i32 0
  %3187 = load i32, ptr %3186, align 8, !tbaa !114
  %3188 = icmp eq i32 %3183, %3187
  br i1 %3188, label %3189, label %3212

3189:                                             ; preds = %3179, %3170
  %3190 = load ptr, ptr %10, align 8, !tbaa !5
  %3191 = getelementptr inbounds %struct.ImGuiWindow, ptr %3190, i32 0, i32 55
  %3192 = load i8, ptr %3191, align 2, !tbaa !212
  %3193 = sext i8 %3192 to i32
  %3194 = icmp sgt i32 %3193, 0
  br i1 %3194, label %3195, label %3200

3195:                                             ; preds = %3189
  %3196 = load ptr, ptr %10, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.ImGuiWindow, ptr %3196, i32 0, i32 55
  %3198 = load i8, ptr %3197, align 2, !tbaa !212
  %3199 = add i8 %3198, 1
  store i8 %3199, ptr %3197, align 2, !tbaa !212
  br label %3200

3200:                                             ; preds = %3195, %3189
  %3201 = load ptr, ptr %10, align 8, !tbaa !5
  %3202 = getelementptr inbounds %struct.ImGuiWindow, ptr %3201, i32 0, i32 56
  %3203 = load i8, ptr %3202, align 1, !tbaa !213
  %3204 = sext i8 %3203 to i32
  %3205 = icmp sgt i32 %3204, 0
  br i1 %3205, label %3206, label %3211

3206:                                             ; preds = %3200
  %3207 = load ptr, ptr %10, align 8, !tbaa !5
  %3208 = getelementptr inbounds %struct.ImGuiWindow, ptr %3207, i32 0, i32 56
  %3209 = load i8, ptr %3208, align 1, !tbaa !213
  %3210 = add i8 %3209, 1
  store i8 %3210, ptr %3208, align 1, !tbaa !213
  br label %3211

3211:                                             ; preds = %3206, %3200
  store i1 false, ptr %4, align 1
  store i32 1, ptr %99, align 4
  br label %3219

3212:                                             ; preds = %3179, %3173
  br label %3213

3213:                                             ; preds = %3212, %3159
  %3214 = load ptr, ptr %10, align 8, !tbaa !5
  %3215 = getelementptr inbounds %struct.ImGuiWindow, ptr %3214, i32 0, i32 41
  %3216 = load i8, ptr %3215, align 1, !tbaa !319, !range !93, !noundef !94
  %3217 = trunc i8 %3216 to i1
  %3218 = xor i1 %3217, true
  store i1 %3218, ptr %4, align 1
  store i32 1, ptr %99, align 4
  br label %3219

3219:                                             ; preds = %3213, %3211
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 8, 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
  %3220 = load i1, ptr %4, align 1
  ret i1 %3220
}

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

; 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: 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 nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef) #1

; 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 dso_local void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef) #8

; 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 nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 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(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 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

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

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

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

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

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

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

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

; 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> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208)) #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 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 { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045)) #8 align 2

; 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(64) 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(64) 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 dso_local noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef, i32 noundef) #8

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

; 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 @_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
declare hidden void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) #8

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112)) #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 4800}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 2984, !22, i64 3056, !6, i64 4216, !17, i64 4224, !17, i64 4228, !17, i64 4232, !17, i64 4236, !24, i64 4240, !27, i64 4776, !10, i64 4784, !10, i64 4788, !10, i64 4792, !10, i64 4796, !14, i64 4800, !14, i64 4801, !14, i64 4802, !14, i64 4803, !6, i64 4808, !7, i64 4816, !28, i64 4832, !28, i64 4848, !18, i64 4864, !10, i64 4868, !29, i64 4872, !29, i64 4888, !29, i64 4904, !30, i64 4920, !31, i64 4936, !10, i64 4952, !16, i64 4956, !10, i64 4964, !6, i64 4968, !6, i64 4976, !6, i64 4984, !6, i64 4992, !6, i64 5000, !6, i64 5008, !16, i64 5016, !10, i64 5024, !10, i64 5028, !17, i64 5032, !16, i64 5036, !16, i64 5044, !10, i64 5052, !10, i64 5056, !10, i64 5060, !10, i64 5064, !10, i64 5068, !17, i64 5072, !17, i64 5076, !14, i64 5080, !14, i64 5081, !14, i64 5082, !10, i64 5084, !10, i64 5088, !17, i64 5092, !14, i64 5096, !14, i64 5097, !14, i64 5098, !14, i64 5099, !14, i64 5100, !14, i64 5101, !14, i64 5102, !10, i64 5103, !16, i64 5104, !6, i64 5112, !33, i64 5120, !10, i64 5124, !34, i64 5128, !35, i64 5140, !10, i64 5148, !17, i64 5152, !27, i64 5160, !27, i64 5168, !27, i64 5176, !36, i64 5184, !7, i64 5204, !37, i64 7056, !10, i64 7400, !14, i64 7404, !10, i64 7408, !10, i64 7412, !10, i64 7416, !10, i64 7420, !39, i64 7424, !41, i64 7480, !43, i64 7560, !14, i64 7672, !10, i64 7676, !44, i64 7680, !45, i64 7696, !46, i64 7712, !47, i64 7728, !48, i64 7744, !49, i64 7760, !50, i64 7776, !50, i64 7792, !51, i64 7808, !52, i64 7824, !14, i64 7840, !14, i64 7841, !14, i64 7842, !14, i64 7843, !10, i64 7844, !6, i64 7848, !10, i64 7856, !53, i64 7860, !10, i64 7864, !10, i64 7868, !10, i64 7872, !10, i64 7876, !47, i64 7880, !10, i64 7896, !17, i64 7900, !10, i64 7904, !10, i64 7908, !33, i64 7912, !40, i64 7920, !7, i64 7928, !14, i64 7929, !14, i64 7930, !14, i64 7931, !54, i64 7936, !14, i64 7992, !14, i64 7993, !14, i64 7994, !10, i64 7996, !10, i64 8000, !10, i64 8004, !23, i64 8008, !23, i64 8012, !23, i64 8016, !42, i64 8020, !42, i64 8036, !10, i64 8052, !10, i64 8056, !10, i64 8060, !54, i64 8064, !54, i64 8120, !54, i64 8176, !54, i64 8232, !10, i64 8288, !10, i64 8292, !10, i64 8296, !10, i64 8300, !14, i64 8304, !14, i64 8305, !10, i64 8308, !10, i64 8312, !6, i64 8320, !6, i64 8328, !6, i64 8336, !17, i64 8344, !17, i64 8348, !14, i64 8352, !55, i64 8356, !16, i64 8360, !16, i64 8368, !17, i64 8376, !14, i64 8380, !14, i64 8381, !14, i64 8382, !10, i64 8384, !10, i64 8388, !10, i64 8392, !56, i64 8400, !42, i64 8464, !42, i64 8480, !10, i64 8496, !10, i64 8500, !17, i64 8504, !10, i64 8508, !10, i64 8512, !10, i64 8516, !10, i64 8520, !57, i64 8528, !7, i64 8544, !10, i64 8560, !58, i64 8568, !6, i64 8584, !10, i64 8592, !10, i64 8596, !59, i64 8600, !60, i64 8616, !62, i64 8656, !63, i64 8672, !6, i64 8688, !64, i64 8696, !66, i64 8736, !67, i64 8752, !68, i64 8768, !6, i64 8872, !10, i64 8880, !69, i64 8888, !70, i64 8904, !10, i64 8944, !10, i64 8948, !17, i64 8952, !17, i64 8956, !10, i64 8960, !10, i64 8964, !10, i64 8968, !17, i64 8972, !16, i64 8976, !72, i64 8984, !74, i64 9104, !75, i64 9128, !10, i64 9248, !35, i64 9252, !10, i64 9260, !10, i64 9264, !10, i64 9268, !10, i64 9272, !10, i64 9276, !17, i64 9280, !17, i64 9284, !10, i64 9288, !25, i64 9292, !77, i64 9308, !42, i64 9356, !14, i64 9372, !19, i64 9374, !17, i64 9376, !17, i64 9380, !17, i64 9384, !14, i64 9388, !14, i64 9389, !17, i64 9392, !17, i64 9396, !17, i64 9400, !19, i64 9404, !19, i64 9406, !6, i64 9408, !73, i64 9416, !78, i64 9432, !79, i64 9448, !81, i64 9552, !81, i64 9568, !14, i64 9584, !17, i64 9588, !82, i64 9592, !83, i64 9608, !84, i64 9624, !85, i64 9640, !86, i64 9656, !10, i64 9672, !7, i64 9680, !14, i64 9760, !10, i64 9764, !6, i64 9768, !6, i64 9776, !82, i64 9784, !6, i64 9800, !6, i64 9808, !17, i64 9816, !14, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !6, i64 9840, !6, i64 9848, !16, i64 9856, !14, i64 9864, !10, i64 9868, !87, i64 9872, !6, i64 9896, !10, i64 9904, !10, i64 9908, !82, i64 9912, !88, i64 9928, !10, i64 9952, !10, i64 9956, !7, i64 9960, !7, i64 9961, !14, i64 9962, !10, i64 9964, !7, i64 9968, !14, i64 9969, !7, i64 9970, !10, i64 9972, !17, i64 9976, !25, i64 9980, !89, i64 9996, !90, i64 10024, !92, i64 10064, !7, i64 10124, !10, i64 10364, !10, i64 10368, !17, i64 10372, !10, i64 10376, !10, i64 10380, !10, i64 10384, !73, i64 10392, !7, i64 10408}
!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, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !14, i64 124, !14, i64 125, !14, i64 126, !14, i64 127, !14, i64 128, !14, i64 129, !14, i64 130, !14, i64 131, !14, i64 132, !14, i64 133, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 177, !14, i64 178, !14, i64 179, !14, i64 180, !14, i64 181, !14, i64 182, !17, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !16, i64 204, !6, i64 216, !16, i64 224, !7, i64 232, !17, i64 240, !17, i64 244, !18, i64 248, !14, i64 252, !14, i64 253, !14, i64 254, !14, i64 255, !10, i64 256, !7, i64 260, !14, i64 2724, !16, i64 2728, !7, i64 2736, !7, i64 2776, !7, i64 2816, !7, i64 2821, !7, i64 2826, !7, i64 2836, !7, i64 2846, !7, i64 2851, !7, i64 2856, !14, i64 2861, !14, i64 2862, !7, i64 2864, !7, i64 2884, !7, i64 2904, !17, i64 2924, !14, i64 2928, !14, i64 2929, !19, i64 2930, !20, i64 2936, !6, i64 2952, !6, i64 2960, !6, i64 2968}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !19, i64 56, !6, i64 64}
!22 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !23, 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, !17, i64 156, !16, i64 160, !23, i64 168, !16, i64 172, !16, i64 180, !17, i64 188, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !17, i64 224, !14, i64 228, !14, i64 229, !14, i64 230, !17, i64 232, !17, i64 236, !7, i64 240, !17, i64 1136, !17, i64 1140, !17, i64 1144, !10, i64 1148, !10, i64 1152}
!23 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!24 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !6, i64 16, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !25, i64 40, !10, i64 56, !26, i64 64, !7, i64 80, !17, i64 464, !7, i64 468}
!25 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!26 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"double", !7, i64 0}
!28 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS12ImGuiStorage", !32, i64 0}
!32 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!34 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 9}
!35 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!36 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!37 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !38, i64 312, !38, i64 328}
!38 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !40, i64 16, !17, i64 24, !10, i64 28, !10, i64 32, !14, i64 36, !7, i64 37, !35, i64 38, !10, i64 48}
!40 = !{!"long long", !7, i64 0}
!41 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !42, i64 12, !42, i64 28, !42, i64 44, !42, i64 60, !10, i64 76}
!42 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!43 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !10, i64 56, !14, i64 60, !42, i64 64, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100, !10, i64 108}
!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 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!54 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !42, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !40, i64 48}
!55 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!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, !31, 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, !31, 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 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 9, !16, i64 12, !16, i64 20, !16, i64 28, !6, i64 40, !14, i64 48, !42, i64 52, !42, i64 68, !42, i64 84}
!69 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !71, i64 0, !31, i64 16, !10, i64 32, !10, i64 36}
!71 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !73, i64 40, !73, i64 56, !73, i64 72, !10, i64 88, !16, i64 92, !17, i64 100, !14, i64 104, !14, i64 105, !14, i64 106, !14, i64 107, !10, i64 108, !10, i64 112}
!73 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !73, i64 8}
!75 = !{!"_ZTS6ImFont", !62, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !76, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !17, i64 88, !17, i64 92, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !10, i64 112, !7, i64 116}
!76 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS21ImGuiComboPreviewData", !42, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!78 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS22ImGuiTypingSelectState", !80, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!80 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!81 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!82 = !{!"_ZTS15ImGuiTextBuffer", !73, i64 0}
!83 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !73, i64 0}
!85 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !73, i64 0}
!86 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{!"_ZTS23ImGuiErrorRecoveryState", !19, i64 0, !19, i64 2, !19, i64 4, !19, i64 6, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !19, i64 18, !19, i64 20}
!88 = !{!"_ZTS14ImGuiTextIndex", !48, i64 0, !10, i64 16}
!89 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!90 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !91, i64 16, !14, i64 32, !17, i64 36}
!91 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!92 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !19, i64 8, !7, i64 12}
!93 = !{i8 0, i8 2}
!94 = !{}
!95 = !{!13, !10, i64 4788}
!96 = !{!13, !10, i64 4784}
!97 = !{!14, !14, i64 0}
!98 = !{!13, !10, i64 4964}
!99 = !{!100, !10, i64 16}
!100 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !14, i64 205, !14, i64 206, !14, i64 207, !14, i64 208, !14, i64 209, !14, i64 210, !14, i64 211, !14, i64 212, !14, i64 213, !7, i64 214, !7, i64 215, !19, i64 216, !19, i64 218, !19, i64 220, !19, i64 222, !19, i64 224, !7, i64 226, !7, i64 227, !14, i64 228, !23, i64 232, !7, i64 236, !7, i64 237, !7, i64 238, !7, i64 239, !10, i64 240, !10, i64 241, !10, i64 242, !16, i64 244, !16, i64 252, !78, i64 264, !101, i64 280, !42, i64 512, !42, i64 528, !42, i64 544, !42, i64 560, !42, i64 576, !42, i64 592, !42, i64 608, !104, i64 624, !104, i64 628, !10, i64 632, !17, i64 636, !17, i64 640, !31, i64 648, !105, i64 664, !17, i64 680, !10, i64 684, !6, i64 688, !106, i64 696, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !7, i64 976, !7, i64 984, !7, i64 1016, !10, i64 1032, !10, i64 1036, !10, i64 1040, !14, i64 1044}
!101 = !{!"_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, !102, i64 68, !102, i64 72, !102, i64 76, !16, i64 80, !53, i64 88, !19, i64 92, !19, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !103, i64 108, !10, i64 136, !10, i64 140, !29, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !17, i64 192, !17, i64 196, !62, i64 200, !62, i64 216}
!102 = !{!"_ZTS6ImVec1", !17, i64 0}
!103 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!104 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!105 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!106 = !{!"_ZTS10ImDrawList", !107, i64 0, !20, i64 16, !108, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !26, i64 80, !109, i64 96, !110, i64 128, !111, i64 152, !112, i64 168, !57, i64 184, !17, i64 200, !6, i64 208}
!107 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!108 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!109 = !{!"_ZTS15ImDrawCmdHeader", !25, i64 0, !40, i64 16, !10, i64 24}
!110 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !63, i64 8}
!111 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!112 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !6, i64 8}
!113 = !{!100, !10, i64 632}
!114 = !{!13, !10, i64 4920}
!115 = !{!13, !14, i64 4801}
!116 = !{!100, !14, i64 211}
!117 = !{!13, !10, i64 7792}
!118 = !{!100, !10, i64 148}
!119 = !{!120, !10, i64 0}
!120 = !{!"_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}
!121 = !{!120, !6, i64 8}
!122 = !{!100, !14, i64 209}
!123 = !{!100, !10, i64 20}
!124 = !{!13, !10, i64 7560}
!125 = !{!13, !10, i64 7616}
!126 = !{!100, !10, i64 24}
!127 = !{!13, !27, i64 4776}
!128 = !{!100, !17, i64 636}
!129 = !{!100, !19, i64 220}
!130 = !{!13, !10, i64 4952}
!131 = !{!100, !19, i64 222}
!132 = !{!133, !6, i64 0}
!133 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !41, i64 8, !87, i64 88, !14, i64 110}
!134 = !{!100, !6, i64 912}
!135 = !{!100, !10, i64 264}
!136 = !{!13, !6, i64 4968}
!137 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !138, i64 16, i64 4, !138, i64 20, i64 4, !138, i64 24, i64 4, !138, i64 28, i64 4, !138, i64 32, i64 4, !138, i64 36, i64 4, !138, i64 40, i64 4, !138, i64 44, i64 4, !138, i64 48, i64 4, !138, i64 52, i64 4, !138, i64 56, i64 4, !138, i64 60, i64 4, !138, i64 64, i64 4, !138, i64 68, i64 4, !138, i64 72, i64 4, !138, i64 76, i64 4, !9}
!138 = !{!17, !17, i64 0}
!139 = !{!13, !10, i64 7416}
!140 = !{!133, !14, i64 110}
!141 = !{!13, !6, i64 9896}
!142 = !{!13, !10, i64 9260}
!143 = !{!100, !6, i64 920}
!144 = !{!100, !6, i64 960}
!145 = !{!13, !10, i64 7412}
!146 = !{!100, !10, i64 1032}
!147 = !{!100, !53, i64 368}
!148 = !{!120, !10, i64 24}
!149 = !{!13, !10, i64 7564}
!150 = !{i64 0, i64 4, !138, i64 4, i64 4, !138}
!151 = !{!13, !10, i64 7568}
!152 = !{!13, !17, i64 7592}
!153 = !{!13, !17, i64 7596}
!154 = !{!100, !17, i64 56}
!155 = !{!100, !17, i64 60}
!156 = !{!13, !17, i64 7608}
!157 = !{!100, !17, i64 168}
!158 = !{!100, !17, i64 176}
!159 = !{!13, !17, i64 7612}
!160 = !{!100, !17, i64 172}
!161 = !{!100, !17, i64 180}
!162 = !{!13, !14, i64 7620}
!163 = !{!13, !10, i64 7572}
!164 = !{!100, !6, i64 928}
!165 = !{!100, !14, i64 208}
!166 = !{!100, !7, i64 237}
!167 = !{!100, !14, i64 202}
!168 = !{!100, !14, i64 213}
!169 = !{i64 0, i64 4, !138, i64 4, i64 4, !138, i64 8, i64 4, !138, i64 12, i64 4, !138}
!170 = !{!100, !6, i64 688}
!171 = !{!100, !10, i64 456}
!172 = !{!100, !14, i64 1044}
!173 = !{!13, !6, i64 8336}
!174 = !{!100, !6, i64 8}
!175 = !{!100, !10, i64 136}
!176 = !{!177, !177, i64 0}
!177 = !{!"long", !7, i64 0}
!178 = !{!100, !7, i64 236}
!179 = !{!100, !7, i64 238}
!180 = !{!100, !17, i64 48}
!181 = !{!100, !17, i64 52}
!182 = !{!22, !17, i64 48}
!183 = !{!100, !17, i64 100}
!184 = !{!22, !17, i64 56}
!185 = !{!22, !17, i64 20}
!186 = !{!22, !17, i64 12}
!187 = !{!100, !17, i64 88}
!188 = !{!22, !17, i64 76}
!189 = !{!13, !17, i64 7660}
!190 = !{!100, !17, i64 380}
!191 = !{!13, !17, i64 7664}
!192 = !{!100, !17, i64 384}
!193 = !{!13, !17, i64 4224}
!194 = !{!13, !17, i64 3120}
!195 = !{!100, !17, i64 104}
!196 = !{!100, !17, i64 108}
!197 = !{!100, !17, i64 80}
!198 = !{!100, !17, i64 84}
!199 = !{!13, !6, i64 4976}
!200 = !{!13, !10, i64 5060}
!201 = !{!13, !10, i64 5064}
!202 = !{!13, !10, i64 5084}
!203 = !{!19, !19, i64 0}
!204 = !{!100, !14, i64 206}
!205 = !{!100, !14, i64 205}
!206 = !{!100, !17, i64 112}
!207 = !{!100, !17, i64 120}
!208 = !{!100, !17, i64 116}
!209 = !{!100, !17, i64 124}
!210 = !{!16, !17, i64 0}
!211 = !{!16, !17, i64 4}
!212 = !{!100, !7, i64 226}
!213 = !{!100, !7, i64 227}
!214 = !{!100, !14, i64 228}
!215 = !{!100, !23, i64 232}
!216 = !{!100, !10, i64 424}
!217 = !{!100, !17, i64 244}
!218 = !{!22, !17, i64 44}
!219 = !{!22, !17, i64 52}
!220 = !{!22, !17, i64 16}
!221 = !{!100, !17, i64 96}
!222 = !{!13, !14, i64 101}
!223 = !{!100, !7, i64 214}
!224 = !{!100, !7, i64 215}
!225 = !{!100, !14, i64 201}
!226 = !{!22, !17, i64 116}
!227 = !{!100, !14, i64 200}
!228 = !{!100, !17, i64 192}
!229 = !{!100, !17, i64 196}
!230 = !{!100, !17, i64 40}
!231 = !{!100, !17, i64 528}
!232 = !{!100, !17, i64 44}
!233 = !{!100, !17, i64 532}
!234 = !{!100, !17, i64 536}
!235 = !{!100, !17, i64 540}
!236 = !{!22, !17, i64 72}
!237 = !{!100, !17, i64 544}
!238 = !{!100, !17, i64 548}
!239 = !{!100, !17, i64 552}
!240 = !{!100, !17, i64 556}
!241 = !{!100, !17, i64 640}
!242 = !{!100, !17, i64 64}
!243 = !{!100, !17, i64 160}
!244 = !{!100, !17, i64 68}
!245 = !{!100, !17, i64 92}
!246 = !{!100, !17, i64 164}
!247 = !{!100, !17, i64 132}
!248 = !{!100, !17, i64 128}
!249 = !{!106, !10, i64 0}
!250 = !{!251, !10, i64 32}
!251 = !{!"_ZTS9ImDrawCmd", !25, i64 0, !40, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60}
!252 = !{!13, !6, i64 4216}
!253 = !{!75, !6, i64 64}
!254 = !{!255, !40, i64 8}
!255 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !40, 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, !256, i64 104, !257, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!256 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!257 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!258 = !{!106, !10, i64 32}
!259 = !{!13, !6, i64 8320}
!260 = !{!13, !6, i64 7848}
!261 = !{!100, !6, i64 944}
!262 = !{!100, !17, i64 152}
!263 = !{!100, !17, i64 560}
!264 = !{!100, !17, i64 156}
!265 = !{!100, !17, i64 564}
!266 = !{!100, !17, i64 568}
!267 = !{!100, !17, i64 572}
!268 = !{!100, !17, i64 608}
!269 = !{!100, !17, i64 612}
!270 = !{!100, !17, i64 616}
!271 = !{!100, !17, i64 620}
!272 = !{!100, !17, i64 348}
!273 = !{!100, !17, i64 356}
!274 = !{!100, !17, i64 352}
!275 = !{!27, !27, i64 0}
!276 = !{!100, !17, i64 296}
!277 = !{!100, !17, i64 300}
!278 = !{!100, !17, i64 340}
!279 = !{!100, !17, i64 336}
!280 = !{!100, !14, i64 345}
!281 = !{!100, !14, i64 344}
!282 = !{!100, !19, i64 374}
!283 = !{!100, !19, i64 372}
!284 = !{!100, !14, i64 376}
!285 = !{!100, !14, i64 377}
!286 = !{!100, !14, i64 378}
!287 = !{!100, !14, i64 379}
!288 = !{!100, !10, i64 416}
!289 = !{!100, !10, i64 420}
!290 = !{!100, !6, i64 440}
!291 = !{!100, !6, i64 448}
!292 = !{!100, !10, i64 460}
!293 = !{!100, !10, i64 464}
!294 = !{!100, !17, i64 472}
!295 = !{!100, !17, i64 476}
!296 = !{!100, !10, i64 468}
!297 = !{!13, !14, i64 103}
!298 = !{!42, !17, i64 0}
!299 = !{!42, !17, i64 4}
!300 = !{!42, !17, i64 8}
!301 = !{!42, !17, i64 12}
!302 = !{!100, !19, i64 626}
!303 = !{!100, !19, i64 624}
!304 = !{!13, !6, i64 9408}
!305 = !{!13, !10, i64 7420}
!306 = !{!100, !10, i64 140}
!307 = !{!100, !14, i64 204}
!308 = !{!100, !19, i64 216}
!309 = !{!13, !14, i64 7929}
!310 = !{!100, !6, i64 952}
!311 = !{!13, !14, i64 9760}
!312 = !{!100, !17, i64 512}
!313 = !{!100, !17, i64 520}
!314 = !{!100, !17, i64 516}
!315 = !{!100, !17, i64 524}
!316 = !{!22, !17, i64 0}
!317 = !{!100, !14, i64 210}
!318 = !{!100, !7, i64 239}
!319 = !{!100, !14, i64 207}
!320 = !{!13, !14, i64 138}
!321 = !{!13, !14, i64 139}
!322 = !{!13, !7, i64 9968}


; 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.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%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 [74 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [43 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 noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #8

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

; 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 uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208)) 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 @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216), i64 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 #8

; Function Attrs: nounwind
declare void @llvm.debugtrap() #12

; 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 { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045)) 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI20ImGuiWindowStackDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #11 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.ImVec2, align 8
  %6 = alloca %struct.ImRect, align 4
  %7 = alloca %struct.ImVec4, align 4
  %8 = alloca i64, align 8
  %9 = alloca %struct.ImVec2, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImRect, align 8
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImRect, align 8
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca %struct.ImVec2, align 8
  %18 = alloca %struct.ImRect, align 8
  %19 = alloca %struct.ImRect, align 8
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca %struct.ImRect, align 4
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [4 x i32], align 16
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImVec2, align 8
  %32 = alloca %struct.ImRect, align 4
  %33 = alloca %struct.ImRect, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImRect, align 8
  %36 = alloca %struct.ImRect, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImVec2, align 8
  %40 = alloca %struct.ImRect, align 4
  %41 = alloca %struct.ImRect, align 8
  %42 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %42, i64 3056
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %44

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

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

46:                                               ; preds = %44
  %47 = getelementptr inbounds i8, ptr %42, i64 4800
  %48 = load i8, ptr %47, align 8, !tbaa !10, !range !92, !noundef !93
  %49 = trunc nuw i8 %48 to i1
  br i1 %49, label %51, label %50

50:                                               ; preds = %46
  tail call void @__assert_fail(ptr noundef nonnull @.str.148, ptr noundef nonnull @.str.3, i32 noundef 6960, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

51:                                               ; preds = %46
  %52 = getelementptr inbounds i8, ptr %42, i64 4788
  %53 = load i32, ptr %52, align 4, !tbaa !94
  %54 = getelementptr inbounds i8, ptr %42, i64 4784
  %55 = load i32, ptr %54, align 8, !tbaa !95
  %.not370 = icmp eq i32 %53, %55
  br i1 %.not370, label %56, label %57

56:                                               ; preds = %51
  tail call void @__assert_fail(ptr noundef nonnull @.str.149, ptr noundef nonnull @.str.3, i32 noundef 6961, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

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

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

62:                                               ; preds = %60, %57
  %63 = phi ptr [ %61, %60 ], [ %58, %57 ]
  %64 = getelementptr inbounds i8, ptr %42, i64 4964
  %65 = load i32, ptr %64, align 4, !tbaa !96
  %66 = getelementptr inbounds i8, ptr %63, i64 16
  %67 = load i32, ptr %66, align 8, !tbaa !97
  %68 = icmp eq i32 %65, %67
  br i1 %68, label %69, label %70

69:                                               ; preds = %62
  tail call void @llvm.debugtrap()
  br label %70

70:                                               ; preds = %69, %62
  %71 = and i32 %2, 197120
  %72 = icmp eq i32 %71, 197120
  %73 = or i32 %2, 6
  %spec.select = select i1 %72, i32 %73, i32 %2
  %74 = load i32, ptr %54, align 8, !tbaa !95
  %75 = getelementptr inbounds i8, ptr %63, i64 632
  %76 = load i32, ptr %75, align 8, !tbaa !111
  %.not371 = icmp eq i32 %76, %74
  %77 = getelementptr inbounds i8, ptr %42, i64 4920
  %78 = load i32, ptr %77, align 8, !tbaa !112
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %83

80:                                               ; preds = %70
  %81 = getelementptr inbounds i8, ptr %42, i64 4801
  %82 = load i8, ptr %81, align 1, !tbaa !113, !range !92, !noundef !93
  br label %83

83:                                               ; preds = %80, %70
  %84 = phi i8 [ 0, %70 ], [ %82, %80 ]
  %85 = getelementptr inbounds i8, ptr %63, i64 211
  store i8 %84, ptr %85, align 1, !tbaa !114
  %86 = add nsw i32 %74, -1
  %87 = icmp slt i32 %76, %86
  %88 = and i32 %spec.select, 67108864
  %.not372 = icmp eq i32 %88, 0
  br i1 %.not372, label %105, label %89

89:                                               ; preds = %83
  %90 = getelementptr inbounds i8, ptr %42, i64 7776
  %91 = getelementptr inbounds i8, ptr %42, i64 7792
  %92 = load i32, ptr %91, align 8, !tbaa !115
  %93 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %90, i32 noundef %92)
  %94 = getelementptr inbounds i8, ptr %63, i64 148
  %95 = load i32, ptr %94, align 4, !tbaa !116
  %96 = load i32, ptr %93, align 8, !tbaa !117
  %97 = icmp ne i32 %95, %96
  %98 = getelementptr inbounds i8, ptr %93, i64 8
  %99 = load ptr, ptr %98, align 8, !tbaa !119
  %100 = icmp ne ptr %63, %99
  %101 = or i1 %97, %100
  %102 = or i1 %87, %101
  %103 = getelementptr inbounds i8, ptr %63, i64 209
  %104 = zext i1 %102 to i8
  store i8 %104, ptr %103, align 1, !tbaa !120
  br i1 %102, label %108, label %109

105:                                              ; preds = %83
  %106 = getelementptr inbounds i8, ptr %63, i64 209
  %107 = zext i1 %87 to i8
  store i8 %107, ptr %106, align 1, !tbaa !120
  br i1 %87, label %108, label %109

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

109:                                              ; preds = %89, %108, %105
  %.0330.in493 = phi i1 [ false, %89 ], [ true, %108 ], [ false, %105 ]
  br i1 %.not371, label %131, label %110

110:                                              ; preds = %109
  tail call void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef nonnull %63, i1 noundef zeroext %59, i32 noundef %spec.select)
  %111 = getelementptr inbounds i8, ptr %63, i64 20
  store i32 %spec.select, ptr %111, align 4, !tbaa !121
  %112 = getelementptr inbounds i8, ptr %42, i64 7560
  %113 = load i32, ptr %112, align 8, !tbaa !122
  %114 = and i32 %113, 256
  %.not373 = icmp eq i32 %114, 0
  br i1 %.not373, label %118, label %115

115:                                              ; preds = %110
  %116 = getelementptr inbounds i8, ptr %42, i64 7616
  %117 = load i32, ptr %116, align 8, !tbaa !123
  br label %118

118:                                              ; preds = %110, %115
  %119 = phi i32 [ %117, %115 ], [ 0, %110 ]
  %120 = getelementptr inbounds i8, ptr %63, i64 24
  store i32 %119, ptr %120, align 8, !tbaa !124
  store i32 %74, ptr %75, align 8, !tbaa !111
  %121 = getelementptr inbounds i8, ptr %42, i64 4776
  %122 = load double, ptr %121, align 8, !tbaa !125
  %123 = fptrunc double %122 to float
  %124 = getelementptr inbounds i8, ptr %63, i64 636
  store float %123, ptr %124, align 4, !tbaa !126
  %125 = getelementptr inbounds i8, ptr %63, i64 220
  store i16 0, ptr %125, align 4, !tbaa !127
  %126 = getelementptr inbounds i8, ptr %42, i64 4952
  %127 = load i32, ptr %126, align 8, !tbaa !128
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %126, align 8, !tbaa !128
  %129 = trunc i32 %127 to i16
  %130 = getelementptr inbounds i8, ptr %63, i64 222
  store i16 %129, ptr %130, align 2, !tbaa !129
  br label %134

131:                                              ; preds = %109
  %132 = getelementptr inbounds i8, ptr %63, i64 20
  %133 = load i32, ptr %132, align 4, !tbaa !121
  br label %134

134:                                              ; preds = %131, %118
  %.1 = phi i32 [ %spec.select, %118 ], [ %133, %131 ]
  %135 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  br i1 %135, label %139, label %136

136:                                              ; preds = %134
  %137 = tail call noundef nonnull align 8 dereferenceable(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  %138 = load ptr, ptr %137, align 8, !tbaa !130
  br label %139

139:                                              ; preds = %134, %136
  %140 = phi ptr [ %138, %136 ], [ null, %134 ]
  br i1 %.not371, label %144, label %141

141:                                              ; preds = %139
  %142 = and i32 %.1, 83886080
  %.not374 = icmp eq i32 %142, 0
  %143 = select i1 %.not374, ptr null, ptr %140
  br label %147

144:                                              ; preds = %139
  %145 = getelementptr inbounds i8, ptr %63, i64 912
  %146 = load ptr, ptr %145, align 8, !tbaa !132
  br label %147

147:                                              ; preds = %144, %141
  %148 = phi ptr [ %143, %141 ], [ %146, %144 ]
  %149 = icmp eq ptr %148, null
  %150 = and i32 %.1, 16777216
  %151 = icmp ne i32 %150, 0
  %.not376 = select i1 %149, i1 %151, i1 false
  br i1 %.not376, label %152, label %153

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

153:                                              ; preds = %147
  %154 = getelementptr inbounds i8, ptr %63, i64 264
  %155 = load i32, ptr %154, align 8, !tbaa !133
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %157, label %158

157:                                              ; preds = %153
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %154, ptr noundef nonnull align 4 dereferenceable(4) %66)
  br label %158

158:                                              ; preds = %157, %153
  %159 = getelementptr inbounds i8, ptr %42, i64 4968
  store ptr %63, ptr %159, align 8, !tbaa !134
  %160 = load i32, ptr %77, align 8, !tbaa !112
  %161 = add nsw i32 %160, 1
  tail call void @_ZN8ImVectorI20ImGuiWindowStackDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %77, i32 noundef %161)
  %162 = tail call noundef nonnull align 8 dereferenceable(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  store ptr %63, ptr %162, align 8, !tbaa !130
  %163 = getelementptr inbounds i8, ptr %42, i64 7480
  %164 = getelementptr inbounds i8, ptr %162, i64 8
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %164, ptr noundef nonnull align 8 dereferenceable(80) %163, i64 80, i1 false), !tbaa.struct !135
  %165 = and i32 %.1, 33554432
  %.not390 = icmp eq i32 %165, 0
  br i1 %.not390, label %171, label %166

166:                                              ; preds = %158
  %167 = getelementptr inbounds i8, ptr %42, i64 7416
  %168 = load i32, ptr %167, align 8, !tbaa !138
  %169 = and i32 %168, 1024
  %170 = icmp ne i32 %169, 0
  br label %171

171:                                              ; preds = %166, %158
  %172 = phi i1 [ false, %158 ], [ %170, %166 ]
  %173 = getelementptr inbounds i8, ptr %162, i64 110
  %174 = zext i1 %172 to i8
  store i8 %174, ptr %173, align 2, !tbaa !139
  %175 = getelementptr inbounds i8, ptr %162, i64 88
  tail call void @_ZN5ImGui23ErrorRecoveryStoreStateEP23ImGuiErrorRecoveryState(ptr noundef nonnull %175)
  %176 = getelementptr inbounds i8, ptr %42, i64 9896
  store ptr %175, ptr %176, align 8, !tbaa !140
  %177 = and i32 %.1, 268435456
  %.not377 = icmp eq i32 %177, 0
  br i1 %.not377, label %182, label %178

178:                                              ; preds = %171
  %179 = getelementptr inbounds i8, ptr %42, i64 9260
  %180 = load i32, ptr %179, align 4, !tbaa !141
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %179, align 4, !tbaa !141
  br label %182

182:                                              ; preds = %178, %171
  br i1 %.not371, label %187, label %183

183:                                              ; preds = %182
  tail call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef nonnull %63, i32 noundef %.1, ptr noundef %148)
  %184 = getelementptr inbounds i8, ptr %63, i64 920
  store ptr %140, ptr %184, align 8, !tbaa !142
  %185 = select i1 %151, ptr %140, ptr null
  %186 = getelementptr inbounds i8, ptr %63, i64 960
  store ptr %185, ptr %186, align 8, !tbaa !143
  br label %187

187:                                              ; preds = %183, %182
  %188 = getelementptr inbounds i8, ptr %63, i64 24
  %189 = load i32, ptr %188, align 8, !tbaa !124
  %190 = and i32 %189, 256
  %.not378 = icmp eq i32 %190, 0
  %191 = getelementptr inbounds i8, ptr %42, i64 7412
  %.in = select i1 %.not378, ptr %66, ptr %191
  %192 = load i32, ptr %.in, align 4, !tbaa !136
  tail call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %192)
  %193 = load i32, ptr %191, align 4, !tbaa !144
  %194 = getelementptr inbounds i8, ptr %63, i64 1032
  store i32 %193, ptr %194, align 8, !tbaa !145
  %195 = and i32 %.1, 67108864
  %.not379 = icmp eq i32 %195, 0
  br i1 %.not379, label %207, label %196

196:                                              ; preds = %187
  %197 = getelementptr inbounds i8, ptr %42, i64 7776
  %198 = getelementptr inbounds i8, ptr %42, i64 7792
  %199 = load i32, ptr %198, align 8, !tbaa !115
  %200 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %197, i32 noundef %199)
  %201 = getelementptr inbounds i8, ptr %200, i64 8
  store ptr %63, ptr %201, align 8, !tbaa !119
  %202 = getelementptr inbounds i8, ptr %140, i64 368
  %203 = load i32, ptr %202, align 8, !tbaa !146
  %204 = getelementptr inbounds i8, ptr %200, i64 24
  store i32 %203, ptr %204, align 8, !tbaa !147
  tail call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %198, ptr noundef nonnull align 8 dereferenceable(52) %200)
  %205 = load i32, ptr %200, align 8, !tbaa !117
  %206 = getelementptr inbounds i8, ptr %63, i64 148
  store i32 %205, ptr %206, align 4, !tbaa !116
  br label %207

207:                                              ; preds = %196, %187
  %208 = getelementptr inbounds i8, ptr %42, i64 7560
  %209 = load i32, ptr %208, align 8, !tbaa !122
  %210 = and i32 %209, 1
  %.not380 = icmp eq i32 %210, 0
  br i1 %.not380, label %235, label %211

211:                                              ; preds = %207
  %212 = getelementptr inbounds i8, ptr %63, i64 240
  %213 = load i32, ptr %212, align 8
  %214 = shl i32 %213, 24
  %215 = ashr exact i32 %214, 24
  %216 = getelementptr inbounds i8, ptr %42, i64 7564
  %217 = load i32, ptr %216, align 4, !tbaa !148
  %218 = and i32 %215, %217
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %232

220:                                              ; preds = %211
  %221 = getelementptr inbounds i8, ptr %42, i64 7584
  %222 = tail call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %221)
  %223 = fcmp ogt float %222, 0x3EE4F8B580000000
  br i1 %223, label %224, label %._crit_edge

._crit_edge:                                      ; preds = %220
  %.pre = load i32, ptr %216, align 4, !tbaa !148
  br label %232

224:                                              ; preds = %220
  %225 = getelementptr inbounds i8, ptr %42, i64 7576
  %226 = getelementptr inbounds i8, ptr %63, i64 244
  %227 = load i64, ptr %225, align 8
  store i64 %227, ptr %226, align 4
  %228 = getelementptr inbounds i8, ptr %63, i64 252
  %229 = load i64, ptr %221, align 8
  store i64 %229, ptr %228, align 4
  %230 = load i32, ptr %212, align 8
  %231 = and i32 %230, -15
  store i32 %231, ptr %212, align 8
  br label %235

232:                                              ; preds = %._crit_edge, %211
  %233 = phi i32 [ %.pre, %._crit_edge ], [ %217, %211 ]
  %234 = getelementptr inbounds i8, ptr %42, i64 7576
  tail call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %63, ptr noundef nonnull align 4 dereferenceable(8) %234, i32 noundef %233)
  br label %235

235:                                              ; preds = %224, %232, %207
  %.0331.shrunk = phi i1 [ true, %224 ], [ %219, %232 ], [ false, %207 ]
  %236 = load i32, ptr %208, align 8, !tbaa !122
  %237 = and i32 %236, 2
  %.not381 = icmp eq i32 %237, 0
  br i1 %.not381, label %275, label %238

238:                                              ; preds = %235
  %239 = getelementptr inbounds i8, ptr %63, i64 240
  %240 = load i32, ptr %239, align 8
  %241 = shl i32 %240, 16
  %242 = ashr i32 %241, 24
  %243 = getelementptr inbounds i8, ptr %42, i64 7568
  %244 = load i32, ptr %243, align 8, !tbaa !149
  %245 = and i32 %242, %244
  %.not382 = icmp eq i32 %245, 0
  br i1 %.not382, label %.thread, label %246

246:                                              ; preds = %238
  %247 = getelementptr inbounds i8, ptr %42, i64 7592
  %248 = load float, ptr %247, align 8, !tbaa !150
  %249 = fcmp ogt float %248, 0.000000e+00
  %250 = getelementptr inbounds i8, ptr %42, i64 7596
  %251 = load float, ptr %250, align 4, !tbaa !151
  %252 = fcmp ogt float %251, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %238, %246
  %253 = phi i1 [ %249, %246 ], [ false, %238 ]
  %254 = phi i1 [ %252, %246 ], [ false, %238 ]
  %255 = load i32, ptr %188, align 8, !tbaa !124
  %256 = and i32 %255, 4
  %.not384 = icmp ne i32 %256, 0
  %257 = and i32 %240, 1024
  %258 = icmp eq i32 %257, 0
  %or.cond523 = and i1 %258, %.not384
  br i1 %or.cond523, label %259, label %263

259:                                              ; preds = %.thread
  %260 = getelementptr inbounds i8, ptr %63, i64 56
  %261 = load float, ptr %260, align 8, !tbaa !152
  %262 = getelementptr inbounds i8, ptr %42, i64 7592
  store float %261, ptr %262, align 8, !tbaa !150
  br label %263

263:                                              ; preds = %259, %.thread
  %264 = and i32 %255, 8
  %.not385 = icmp eq i32 %264, 0
  br i1 %.not385, label %273, label %265

265:                                              ; preds = %263
  %266 = load i32, ptr %239, align 8
  %267 = and i32 %266, 1024
  %268 = icmp eq i32 %267, 0
  br i1 %268, label %269, label %273

269:                                              ; preds = %265
  %270 = getelementptr inbounds i8, ptr %63, i64 60
  %271 = load float, ptr %270, align 4, !tbaa !153
  %272 = getelementptr inbounds i8, ptr %42, i64 7596
  store float %271, ptr %272, align 4, !tbaa !151
  br label %273

273:                                              ; preds = %269, %265, %263
  %274 = getelementptr inbounds i8, ptr %42, i64 7592
  tail call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %63, ptr noundef nonnull align 4 dereferenceable(8) %274, i32 noundef %244)
  %.pre540 = load i32, ptr %208, align 8, !tbaa !122
  br label %275

275:                                              ; preds = %273, %235
  %276 = phi i32 [ %.pre540, %273 ], [ %236, %235 ]
  %.0333 = phi i1 [ %254, %273 ], [ false, %235 ]
  %.0332 = phi i1 [ %253, %273 ], [ false, %235 ]
  %277 = and i32 %276, 128
  %.not386 = icmp eq i32 %277, 0
  br i1 %.not386, label %292, label %278

278:                                              ; preds = %275
  %279 = getelementptr inbounds i8, ptr %42, i64 7608
  %280 = load float, ptr %279, align 8, !tbaa !154
  %281 = fcmp ult float %280, 0.000000e+00
  br i1 %281, label %285, label %282

282:                                              ; preds = %278
  %283 = getelementptr inbounds i8, ptr %63, i64 168
  store float %280, ptr %283, align 8, !tbaa !155
  %284 = getelementptr inbounds i8, ptr %63, i64 176
  store float 0.000000e+00, ptr %284, align 8, !tbaa !156
  br label %285

285:                                              ; preds = %282, %278
  %286 = getelementptr inbounds i8, ptr %42, i64 7612
  %287 = load float, ptr %286, align 4, !tbaa !157
  %288 = fcmp ult float %287, 0.000000e+00
  br i1 %288, label %292, label %289

289:                                              ; preds = %285
  %290 = getelementptr inbounds i8, ptr %63, i64 172
  store float %287, ptr %290, align 4, !tbaa !158
  %291 = getelementptr inbounds i8, ptr %63, i64 180
  store float 0.000000e+00, ptr %291, align 4, !tbaa !159
  br label %292

292:                                              ; preds = %285, %289, %275
  %293 = and i32 %276, 4
  %.not387 = icmp eq i32 %293, 0
  br i1 %.not387, label %298, label %294

294:                                              ; preds = %292
  %295 = getelementptr inbounds i8, ptr %42, i64 7600
  %296 = getelementptr inbounds i8, ptr %63, i64 80
  %297 = load i64, ptr %295, align 8
  store i64 %297, ptr %296, align 8
  br label %303

298:                                              ; preds = %292
  br i1 %.not371, label %303, label %299

299:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 80
  %302 = load i64, ptr %5, align 8
  store i64 %302, ptr %301, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  br label %303

303:                                              ; preds = %298, %299, %294
  %304 = phi ptr [ %63, %298 ], [ %300, %299 ], [ %63, %294 ]
  %305 = load i32, ptr %208, align 8, !tbaa !122
  %306 = and i32 %305, 8
  %.not388 = icmp eq i32 %306, 0
  br i1 %.not388, label %313, label %307

307:                                              ; preds = %303
  %308 = getelementptr inbounds i8, ptr %42, i64 7620
  %309 = load i8, ptr %308, align 4, !tbaa !160, !range !92, !noundef !93
  %310 = trunc nuw i8 %309 to i1
  %311 = getelementptr inbounds i8, ptr %42, i64 7572
  %312 = load i32, ptr %311, align 4, !tbaa !161
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef nonnull %304, i1 noundef zeroext %310, i32 noundef %312)
  %.pre541 = load i32, ptr %208, align 8, !tbaa !122
  %.pre543.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %313

313:                                              ; preds = %307, %303
  %.pre543 = phi ptr [ %.pre543.pre, %307 ], [ %304, %303 ]
  %314 = phi i32 [ %.pre541, %307 ], [ %305, %303 ]
  %315 = and i32 %314, 32
  %.not389 = icmp eq i32 %315, 0
  br i1 %.not389, label %317, label %316

316:                                              ; preds = %313
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre543, i32 noundef 0)
  %.pre542 = load ptr, ptr %4, align 8, !tbaa !5
  br label %317

317:                                              ; preds = %316, %313
  %318 = phi ptr [ %.pre542, %316 ], [ %.pre543, %313 ]
  %319 = getelementptr inbounds i8, ptr %318, i64 209
  %320 = load i8, ptr %319, align 1, !tbaa !120, !range !92, !noundef !93
  %321 = trunc nuw i8 %320 to i1
  br i1 %321, label %322, label %323

322:                                              ; preds = %317
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %318, i32 noundef 8, i1 noundef zeroext false)
  %.pre544 = load ptr, ptr %4, align 8, !tbaa !5
  br label %323

323:                                              ; preds = %322, %317
  %324 = phi ptr [ %.pre544, %322 ], [ %318, %317 ]
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %324)
  %325 = load i8, ptr %173, align 2, !tbaa !139, !range !92, !noundef !93
  %326 = trunc nuw i8 %325 to i1
  %.pre569.pre579 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %326, label %327, label %332

327:                                              ; preds = %323
  %328 = getelementptr inbounds i8, ptr %.pre569.pre579, i64 928
  %329 = load ptr, ptr %328, align 8, !tbaa !162
  %330 = icmp eq ptr %329, %.pre569.pre579
  br i1 %330, label %331, label %332

331:                                              ; preds = %327
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  %.pre569.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %332

332:                                              ; preds = %331, %327, %323
  %.pre569 = phi ptr [ %.pre569.pre, %331 ], [ %.pre569.pre579, %327 ], [ %.pre569.pre579, %323 ]
  store ptr null, ptr %159, align 8, !tbaa !134
  %.phi.trans.insert571 = getelementptr inbounds i8, ptr %.pre569, i64 208
  %.pre572 = load i8, ptr %.phi.trans.insert571, align 8, !tbaa !163, !range !92
  br i1 %.not371, label %._crit_edge570, label %333

333:                                              ; preds = %332
  %334 = trunc nuw i8 %.pre572 to i1
  br i1 %334, label %._crit_edge570, label %335

335:                                              ; preds = %333
  %336 = and i32 %.1, 50331648
  %337 = icmp eq i32 %336, 50331648
  %338 = getelementptr inbounds i8, ptr %.pre569, i64 237
  %339 = load i8, ptr %338, align 1, !tbaa !164
  %340 = icmp slt i8 %339, 1
  %341 = getelementptr inbounds i8, ptr %.pre569, i64 202
  store i8 1, ptr %341, align 2, !tbaa !165
  %342 = icmp ne ptr %1, null
  %343 = getelementptr inbounds i8, ptr %.pre569, i64 213
  %344 = zext i1 %342 to i8
  store i8 %344, ptr %343, align 1, !tbaa !166
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(16) %7)
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds i8, ptr %345, i64 592
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %346, ptr noundef nonnull align 4 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !167
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  %347 = getelementptr inbounds i8, ptr %345, i64 264
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %347, i32 noundef 1)
  %348 = load ptr, ptr %4, align 8, !tbaa !5
  %349 = getelementptr inbounds i8, ptr %348, i64 688
  %350 = load ptr, ptr %349, align 8, !tbaa !168
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(216) %350)
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %351, i64 456
  store i32 -1, ptr %352, align 8, !tbaa !169
  %353 = getelementptr inbounds i8, ptr %351, i64 1044
  %354 = load i8, ptr %353, align 4, !tbaa !170, !range !92, !noundef !93
  %355 = trunc nuw i8 %354 to i1
  br i1 %355, label %356, label %357

356:                                              ; preds = %335
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %351)
  %.pre545.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %357

357:                                              ; preds = %356, %335
  %.pre545 = phi ptr [ %.pre545.pre, %356 ], [ %351, %335 ]
  %358 = getelementptr inbounds i8, ptr %42, i64 8336
  %359 = load ptr, ptr %358, align 8, !tbaa !171
  %.not391 = icmp eq ptr %359, null
  br i1 %.not391, label %.critedge429, label %360

360:                                              ; preds = %357
  %361 = getelementptr inbounds i8, ptr %.pre545, i64 20
  %362 = load i32, ptr %361, align 4, !tbaa !121
  %363 = and i32 %362, 131072
  %364 = icmp ne i32 %363, 0
  %brmerge = or i1 %59, %364
  br i1 %brmerge, label %.critedge429, label %365

365:                                              ; preds = %360
  %366 = getelementptr inbounds i8, ptr %.pre545, i64 8
  %367 = load ptr, ptr %366, align 8, !tbaa !172
  %368 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %367) #15
  %.not392 = icmp eq i32 %368, 0
  br i1 %.not392, label %.critedge429, label %369

369:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  %370 = getelementptr inbounds i8, ptr %.pre545, i64 136
  %371 = load i32, ptr %370, align 8, !tbaa !173
  %372 = sext i32 %371 to i64
  store i64 %372, ptr %8, align 8, !tbaa !174
  %373 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %367, ptr noundef nonnull %8, ptr noundef nonnull %0)
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds i8, ptr %374, i64 8
  store ptr %373, ptr %375, align 8, !tbaa !172
  %376 = load i64, ptr %8, align 8, !tbaa !174
  %377 = trunc i64 %376 to i32
  %378 = getelementptr inbounds i8, ptr %374, i64 136
  store i32 %377, ptr %378, align 8, !tbaa !173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %.critedge429

.critedge429:                                     ; preds = %357, %360, %369, %365
  %379 = phi ptr [ %.pre545, %357 ], [ %.pre545, %360 ], [ %374, %369 ], [ %.pre545, %365 ]
  %380 = getelementptr inbounds i8, ptr %379, i64 64
  %381 = getelementptr inbounds i8, ptr %379, i64 72
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %379, ptr noundef nonnull %380, ptr noundef nonnull %381)
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds i8, ptr %382, i64 236
  %384 = load i8, ptr %383, align 4, !tbaa !176
  %385 = icmp sgt i8 %384, 0
  br i1 %385, label %386, label %388

386:                                              ; preds = %.critedge429
  %387 = add nsw i8 %384, -1
  store i8 %387, ptr %383, align 4, !tbaa !176
  br label %388

388:                                              ; preds = %386, %.critedge429
  %389 = getelementptr inbounds i8, ptr %382, i64 237
  %390 = load i8, ptr %389, align 1, !tbaa !164
  %391 = icmp sgt i8 %390, 0
  br i1 %391, label %392, label %394

392:                                              ; preds = %388
  %393 = add nsw i8 %390, -1
  store i8 %393, ptr %389, align 1, !tbaa !164
  br label %394

394:                                              ; preds = %392, %388
  %395 = getelementptr inbounds i8, ptr %382, i64 238
  %396 = load i8, ptr %395, align 2, !tbaa !177
  %397 = icmp sgt i8 %396, 0
  br i1 %397, label %398, label %400

398:                                              ; preds = %394
  %399 = add nsw i8 %396, -1
  store i8 %399, ptr %395, align 2, !tbaa !177
  br label %400

400:                                              ; preds = %398, %394
  %.not539 = xor i1 %59, true
  %401 = select i1 %.0332, i1 %.0333, i1 false
  %or.cond = select i1 %.not539, i1 true, i1 %401
  br i1 %or.cond, label %403, label %402

402:                                              ; preds = %400
  store i8 1, ptr %389, align 1, !tbaa !164
  br label %403

403:                                              ; preds = %402, %400
  %404 = and i32 %.1, 100663296
  %.not393 = icmp ne i32 %404, 0
  %or.cond.not = select i1 %.0330.in493, i1 %.not393, i1 false
  br i1 %or.cond.not, label %405, label %420

405:                                              ; preds = %403
  store i8 1, ptr %389, align 1, !tbaa !164
  %406 = and i32 %.1, 64
  %.not394 = icmp eq i32 %406, 0
  br i1 %.not394, label %420, label %407

407:                                              ; preds = %405
  br i1 %.0332, label %411, label %408

408:                                              ; preds = %407
  %409 = getelementptr inbounds i8, ptr %382, i64 56
  store float 0.000000e+00, ptr %409, align 8, !tbaa !152
  %410 = getelementptr inbounds i8, ptr %382, i64 48
  store float 0.000000e+00, ptr %410, align 8, !tbaa !178
  br label %411

411:                                              ; preds = %408, %407
  br i1 %.0333, label %415, label %412

412:                                              ; preds = %411
  %413 = getelementptr inbounds i8, ptr %382, i64 60
  store float 0.000000e+00, ptr %413, align 4, !tbaa !153
  %414 = getelementptr inbounds i8, ptr %382, i64 52
  store float 0.000000e+00, ptr %414, align 4, !tbaa !179
  br label %415

415:                                              ; preds = %412, %411
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %416 = load ptr, ptr %4, align 8, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %416, i64 72
  %418 = load i64, ptr %9, align 8
  store i64 %418, ptr %417, align 8
  %419 = getelementptr inbounds i8, ptr %416, i64 64
  store i64 %418, ptr %419, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %420

420:                                              ; preds = %405, %415, %403
  %421 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %422, ptr noundef %421)
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %423)
  br i1 %151, label %431, label %.thread495

.thread495:                                       ; preds = %420
  %424 = and i32 %.1, 134217728
  %.not396 = icmp eq i32 %424, 0
  %or.cond431 = and i1 %.not393, %.not396
  %.in397.v = select i1 %or.cond431, i64 3112, i64 3076
  %.in397 = getelementptr inbounds i8, ptr %42, i64 %.in397.v
  %425 = load float, ptr %.in397, align 4, !tbaa !137
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = getelementptr inbounds i8, ptr %426, i64 100
  store float %425, ptr %427, align 4, !tbaa !180
  %428 = getelementptr inbounds i8, ptr %42, i64 3064
  %429 = getelementptr inbounds i8, ptr %426, i64 88
  %430 = load i64, ptr %428, align 4
  store i64 %430, ptr %429, align 8
  br label %455

431:                                              ; preds = %420
  %432 = getelementptr inbounds i8, ptr %42, i64 3104
  %433 = load float, ptr %432, align 4, !tbaa !181
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  %435 = getelementptr inbounds i8, ptr %434, i64 100
  store float %433, ptr %435, align 4, !tbaa !180
  %436 = getelementptr inbounds i8, ptr %42, i64 3064
  %437 = getelementptr inbounds i8, ptr %434, i64 88
  %438 = load i64, ptr %436, align 4
  store i64 %438, ptr %437, align 8
  %439 = and i32 %.1, 83886080
  %brmerge433.not = icmp eq i32 %439, 16777216
  br i1 %brmerge433.not, label %440, label %455

440:                                              ; preds = %431
  %441 = getelementptr inbounds i8, ptr %434, i64 24
  %442 = load i32, ptr %441, align 8, !tbaa !124
  %443 = and i32 %442, 2
  %.not398 = icmp eq i32 %443, 0
  %444 = fcmp oeq float %433, 0.000000e+00
  %or.cond593 = select i1 %.not398, i1 %444, i1 false
  br i1 %or.cond593, label %445, label %455

445:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %446 = and i32 %.1, 1024
  %.not399 = icmp eq i32 %446, 0
  br i1 %.not399, label %450, label %447

447:                                              ; preds = %445
  %448 = getelementptr inbounds i8, ptr %42, i64 3068
  %449 = load float, ptr %448, align 4, !tbaa !182
  br label %450

450:                                              ; preds = %445, %447
  %451 = phi float [ %449, %447 ], [ 0.000000e+00, %445 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef %451)
  %452 = load ptr, ptr %4, align 8, !tbaa !5
  %453 = getelementptr inbounds i8, ptr %452, i64 88
  %454 = load i64, ptr %10, align 8
  store i64 %454, ptr %453, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %455

455:                                              ; preds = %.thread495, %431, %450, %440
  %.in586.in = phi i64 [ %430, %.thread495 ], [ %438, %431 ], [ %454, %450 ], [ %438, %440 ]
  %brmerge433500 = phi i1 [ true, %.thread495 ], [ true, %431 ], [ false, %450 ], [ false, %440 ]
  %.in586 = trunc i64 %.in586.in to i32
  %456 = bitcast i32 %.in586 to float
  %.not379.not499 = xor i1 %.not379, true
  %457 = getelementptr inbounds i8, ptr %42, i64 3132
  %458 = load float, ptr %457, align 4, !tbaa !183
  %459 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %456, float noundef %458)
  %460 = getelementptr inbounds i8, ptr %42, i64 7660
  %461 = load float, ptr %460, align 4, !tbaa !184
  %462 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %459, float noundef %461)
  %463 = load ptr, ptr %4, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %463, i64 380
  store float %462, ptr %464, align 4, !tbaa !185
  %465 = getelementptr inbounds i8, ptr %42, i64 7664
  %466 = load float, ptr %465, align 4, !tbaa !186
  %467 = getelementptr inbounds i8, ptr %463, i64 384
  store float %466, ptr %467, align 4, !tbaa !187
  %468 = and i32 %.1, 1
  %.not400 = icmp eq i32 %468, 0
  br i1 %.not400, label %469, label %475

469:                                              ; preds = %455
  %470 = getelementptr inbounds i8, ptr %42, i64 4224
  %471 = load float, ptr %470, align 8, !tbaa !188
  %472 = getelementptr inbounds i8, ptr %42, i64 3120
  %473 = load float, ptr %472, align 4, !tbaa !189
  %474 = call float @llvm.fmuladd.f32(float %473, float 2.000000e+00, float %471)
  br label %475

475:                                              ; preds = %455, %469
  %476 = phi float [ %474, %469 ], [ 0.000000e+00, %455 ]
  %477 = getelementptr inbounds i8, ptr %463, i64 104
  store float %476, ptr %477, align 8, !tbaa !190
  %478 = and i32 %.1, 1024
  %.not401.not = icmp eq i32 %478, 0
  br i1 %.not401.not, label %486, label %479

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %42, i64 4224
  %481 = load float, ptr %480, align 8, !tbaa !188
  %482 = fadd float %466, %481
  %483 = getelementptr inbounds i8, ptr %42, i64 3120
  %484 = load float, ptr %483, align 4, !tbaa !189
  %485 = call float @llvm.fmuladd.f32(float %484, float 2.000000e+00, float %482)
  br label %486

486:                                              ; preds = %475, %479
  %487 = phi float [ %485, %479 ], [ 0.000000e+00, %475 ]
  %488 = getelementptr inbounds i8, ptr %463, i64 108
  store float %487, ptr %488, align 4, !tbaa !191
  br i1 %.0332, label %489, label %494

489:                                              ; preds = %486
  %490 = getelementptr inbounds i8, ptr %463, i64 80
  %491 = load float, ptr %490, align 8, !tbaa !192
  %492 = fcmp une float %491, 0.000000e+00
  br i1 %492, label %493, label %494

493:                                              ; preds = %489
  br label %494

494:                                              ; preds = %493, %489, %486
  %.0335 = phi i1 [ true, %493 ], [ %59, %489 ], [ %59, %486 ]
  br i1 %.0333, label %495, label %500

495:                                              ; preds = %494
  %496 = getelementptr inbounds i8, ptr %463, i64 84
  %497 = load float, ptr %496, align 4, !tbaa !193
  %498 = fcmp une float %497, 0.000000e+00
  br i1 %498, label %499, label %500

499:                                              ; preds = %495
  br label %500

500:                                              ; preds = %499, %495, %494
  %.0337 = phi i1 [ true, %499 ], [ %59, %495 ], [ %59, %494 ]
  %501 = and i32 %.1, 33
  %or.cond434 = icmp eq i32 %501, 0
  br i1 %or.cond434, label %502, label %545

502:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #12
  %503 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %463)
  %504 = extractvalue { <2 x float>, <2 x float> } %503, 0
  store <2 x float> %504, ptr %11, align 8
  %505 = getelementptr inbounds i8, ptr %11, i64 8
  %506 = extractvalue { <2 x float>, <2 x float> } %503, 1
  store <2 x float> %506, ptr %505, align 8
  %507 = getelementptr inbounds i8, ptr %42, i64 4976
  %508 = load ptr, ptr %507, align 8, !tbaa !194
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = icmp eq ptr %508, %509
  br i1 %510, label %511, label %535

511:                                              ; preds = %502
  %512 = getelementptr inbounds i8, ptr %42, i64 5060
  %513 = load i32, ptr %512, align 4, !tbaa !195
  %514 = icmp eq i32 %513, 0
  br i1 %514, label %515, label %535

515:                                              ; preds = %511
  %516 = getelementptr inbounds i8, ptr %42, i64 5064
  %517 = load i32, ptr %516, align 8, !tbaa !196
  %518 = icmp eq i32 %517, 0
  br i1 %518, label %519, label %535

519:                                              ; preds = %515
  %520 = getelementptr inbounds i8, ptr %42, i64 5084
  %521 = load i32, ptr %520, align 4, !tbaa !197
  %522 = icmp eq i32 %521, 0
  br i1 %522, label %523, label %535

523:                                              ; preds = %519
  %524 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %505, i1 noundef zeroext true)
  br i1 %524, label %525, label %535

525:                                              ; preds = %523
  %526 = getelementptr inbounds i8, ptr %42, i64 2834
  %527 = load i16, ptr %526, align 2, !tbaa !198
  %528 = icmp eq i16 %527, 2
  br i1 %528, label %529, label %535

529:                                              ; preds = %525
  %530 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 655)
  %531 = icmp eq i32 %530, -1
  br i1 %531, label %532, label %535

532:                                              ; preds = %529
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds i8, ptr %533, i64 206
  store i8 1, ptr %534, align 2, !tbaa !199
  br label %535

535:                                              ; preds = %525, %529, %532, %523, %519, %515, %511, %502
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = getelementptr inbounds i8, ptr %536, i64 206
  %538 = load i8, ptr %537, align 2, !tbaa !199, !range !92, !noundef !93
  %539 = trunc nuw i8 %538 to i1
  br i1 %539, label %540, label %544

540:                                              ; preds = %535
  %541 = getelementptr inbounds i8, ptr %536, i64 205
  %542 = load i8, ptr %541, align 1, !tbaa !200, !range !92, !noundef !93
  %543 = xor i8 %542, 1
  store i8 %543, ptr %541, align 1, !tbaa !200
  %.not529.not = icmp ne i8 %542, 0
  %spec.select435 = or i1 %.not529.not, %.0337
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %536)
  %.pre546.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %544

544:                                              ; preds = %540, %535
  %.pre546 = phi ptr [ %.pre546.pre, %540 ], [ %536, %535 ]
  %.2339 = phi i1 [ %spec.select435, %540 ], [ %.0337, %535 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre546, i64 104
  %.pre547 = load float, ptr %.phi.trans.insert, align 8, !tbaa !190
  %.phi.trans.insert548 = getelementptr inbounds i8, ptr %.pre546, i64 108
  %.pre549 = load float, ptr %.phi.trans.insert548, align 4, !tbaa !191
  br label %547

545:                                              ; preds = %500
  %546 = getelementptr inbounds i8, ptr %463, i64 205
  store i8 0, ptr %546, align 1, !tbaa !200
  br label %547

547:                                              ; preds = %545, %544
  %548 = phi float [ %487, %545 ], [ %.pre549, %544 ]
  %549 = phi float [ %476, %545 ], [ %.pre547, %544 ]
  %550 = phi ptr [ %463, %545 ], [ %.pre546, %544 ]
  %.3340 = phi i1 [ %.0337, %545 ], [ %.2339, %544 ]
  %551 = getelementptr inbounds i8, ptr %550, i64 206
  store i8 0, ptr %551, align 2, !tbaa !199
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %552 = getelementptr inbounds i8, ptr %550, i64 192
  %553 = load i64, ptr %552, align 8
  store i64 %553, ptr %12, align 8
  %554 = getelementptr inbounds i8, ptr %550, i64 112
  store float 0.000000e+00, ptr %554, align 8, !tbaa !201
  %555 = getelementptr inbounds i8, ptr %550, i64 120
  %556 = fadd float %549, %548
  %557 = getelementptr inbounds i8, ptr %550, i64 116
  store float %556, ptr %557, align 4, !tbaa !202
  store <2 x float> zeroinitializer, ptr %555, align 8, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %558 = load ptr, ptr %4, align 8, !tbaa !5
  %559 = getelementptr inbounds i8, ptr %558, i64 192
  %560 = load i64, ptr %13, align 8
  store i64 %560, ptr %559, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %561 = getelementptr inbounds i8, ptr %558, i64 72
  %562 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %558, ptr noundef nonnull align 4 dereferenceable(8) %561)
  store <2 x float> %562, ptr %14, align 8
  %563 = and i32 %.1, 64
  %.not403 = icmp ne i32 %563, 0
  %564 = extractelement <2 x float> %562, i64 0
  %565 = extractelement <2 x float> %562, i64 1
  %.pre550 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not403, label %566, label %576

566:                                              ; preds = %547
  %567 = getelementptr inbounds i8, ptr %.pre550, i64 205
  %568 = load i8, ptr %567, align 1, !tbaa !200, !range !92, !noundef !93
  %569 = trunc nuw i8 %568 to i1
  br i1 %569, label %576, label %570

570:                                              ; preds = %566
  br i1 %.0332, label %573, label %571

571:                                              ; preds = %570
  %572 = getelementptr inbounds i8, ptr %.pre550, i64 56
  store float %564, ptr %572, align 8, !tbaa !152
  br label %573

573:                                              ; preds = %571, %570
  %.1336 = phi i1 [ %.0335, %570 ], [ true, %571 ]
  br i1 %.0333, label %625, label %574

574:                                              ; preds = %573
  %575 = getelementptr inbounds i8, ptr %.pre550, i64 60
  store float %565, ptr %575, align 4, !tbaa !153
  br label %625

576:                                              ; preds = %566, %547
  %577 = getelementptr inbounds i8, ptr %.pre550, i64 226
  %578 = load i8, ptr %577, align 2, !tbaa !203
  %579 = icmp sgt i8 %578, 0
  br i1 %579, label %584, label %580

580:                                              ; preds = %576
  %581 = getelementptr inbounds i8, ptr %.pre550, i64 227
  %582 = load i8, ptr %581, align 1, !tbaa !204
  %583 = icmp sgt i8 %582, 0
  br i1 %583, label %.thread502, label %625

584:                                              ; preds = %576
  br i1 %.0332, label %.thread502, label %585

585:                                              ; preds = %584
  %586 = getelementptr inbounds i8, ptr %.pre550, i64 228
  %587 = load i8, ptr %586, align 4, !tbaa !205, !range !92, !noundef !93
  %588 = trunc nuw i8 %587 to i1
  br i1 %588, label %589, label %593

589:                                              ; preds = %585
  %590 = getelementptr inbounds i8, ptr %.pre550, i64 56
  %591 = load float, ptr %590, align 8, !tbaa !152
  %592 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %591, float noundef %564)
  %.pre551 = load ptr, ptr %4, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %585, %589
  %594 = phi ptr [ %.pre551, %589 ], [ %.pre550, %585 ]
  %595 = phi float [ %592, %589 ], [ %564, %585 ]
  %596 = getelementptr inbounds i8, ptr %594, i64 56
  store float %595, ptr %596, align 8, !tbaa !152
  br label %.thread502

.thread502:                                       ; preds = %580, %593, %584
  %597 = phi ptr [ %.pre550, %584 ], [ %594, %593 ], [ %.pre550, %580 ]
  %.2 = phi i1 [ %.0335, %584 ], [ true, %593 ], [ %.0335, %580 ]
  br i1 %.0333, label %619, label %598

598:                                              ; preds = %.thread502
  %599 = getelementptr inbounds i8, ptr %597, i64 227
  %600 = load i8, ptr %599, align 1, !tbaa !204
  %601 = icmp sgt i8 %600, 0
  br i1 %601, label %602, label %619

602:                                              ; preds = %598
  %603 = getelementptr inbounds i8, ptr %597, i64 228
  %604 = load i8, ptr %603, align 4, !tbaa !205, !range !92, !noundef !93
  %605 = trunc nuw i8 %604 to i1
  br i1 %605, label %606, label %612

606:                                              ; preds = %602
  %607 = getelementptr inbounds i8, ptr %597, i64 60
  %608 = load float, ptr %607, align 4, !tbaa !153
  %609 = getelementptr inbounds i8, ptr %14, i64 4
  %610 = load float, ptr %609, align 4, !tbaa !206
  %611 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %608, float noundef %610)
  %.pre552 = load ptr, ptr %4, align 8, !tbaa !5
  br label %615

612:                                              ; preds = %602
  %613 = getelementptr inbounds i8, ptr %14, i64 4
  %614 = load float, ptr %613, align 4, !tbaa !206
  br label %615

615:                                              ; preds = %612, %606
  %616 = phi ptr [ %.pre552, %606 ], [ %597, %612 ]
  %617 = phi float [ %611, %606 ], [ %614, %612 ]
  %618 = getelementptr inbounds i8, ptr %616, i64 60
  store float %617, ptr %618, align 4, !tbaa !153
  br label %619

619:                                              ; preds = %615, %598, %.thread502
  %620 = phi ptr [ %597, %.thread502 ], [ %616, %615 ], [ %597, %598 ]
  %.4341 = phi i1 [ %.3340, %.thread502 ], [ true, %615 ], [ %.3340, %598 ]
  %621 = getelementptr inbounds i8, ptr %620, i64 205
  %622 = load i8, ptr %621, align 1, !tbaa !200, !range !92, !noundef !93
  %623 = trunc nuw i8 %622 to i1
  br i1 %623, label %625, label %624

624:                                              ; preds = %619
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %620)
  %.pre553 = load ptr, ptr %4, align 8, !tbaa !5
  br label %625

625:                                              ; preds = %580, %624, %619, %573, %574
  %626 = phi ptr [ %620, %619 ], [ %.pre553, %624 ], [ %.pre550, %580 ], [ %.pre550, %573 ], [ %.pre550, %574 ]
  %.5342 = phi i1 [ %.4341, %619 ], [ %.4341, %624 ], [ %.3340, %580 ], [ %.3340, %573 ], [ true, %574 ]
  %.3 = phi i1 [ %.2, %619 ], [ %.2, %624 ], [ %.0335, %580 ], [ %.1336, %573 ], [ %.1336, %574 ]
  %627 = getelementptr inbounds i8, ptr %626, i64 56
  %628 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %626, ptr noundef nonnull align 4 dereferenceable(8) %627)
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = getelementptr inbounds i8, ptr %629, i64 56
  store <2 x float> %628, ptr %630, align 8
  %631 = getelementptr inbounds i8, ptr %629, i64 205
  %632 = load i8, ptr %631, align 1, !tbaa !200, !range !92, !noundef !93
  %633 = trunc nuw i8 %632 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #12
  %.not436 = xor i1 %633, true
  %brmerge437 = select i1 %.not436, i1 true, i1 %151
  br i1 %brmerge437, label %640, label %634

634:                                              ; preds = %625
  %635 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %629)
  %636 = extractvalue { <2 x float>, <2 x float> } %635, 0
  store <2 x float> %636, ptr %15, align 8
  %637 = getelementptr inbounds i8, ptr %15, i64 8
  %638 = extractvalue { <2 x float>, <2 x float> } %635, 1
  store <2 x float> %638, ptr %637, align 8
  %639 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %15)
  %.pre554 = load ptr, ptr %4, align 8, !tbaa !5
  br label %640

640:                                              ; preds = %625, %634
  %641 = phi ptr [ %.pre554, %634 ], [ %629, %625 ]
  %.sroa.044.0 = phi <2 x float> [ %639, %634 ], [ %628, %625 ]
  %642 = getelementptr inbounds i8, ptr %641, i64 48
  store <2 x float> %.sroa.044.0, ptr %642, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #12
  br i1 %.0330.in493, label %643, label %653

643:                                              ; preds = %640
  %644 = getelementptr inbounds i8, ptr %641, i64 232
  store i32 -1, ptr %644, align 8, !tbaa !207
  %645 = and i32 %.1, 201326592
  %or.cond439.not530 = icmp ne i32 %645, 67108864
  %brmerge440 = or i1 %or.cond439.not530, %.0331.shrunk
  br i1 %brmerge440, label %653, label %646

646:                                              ; preds = %643
  %647 = getelementptr inbounds i8, ptr %42, i64 7792
  %648 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %647)
  %649 = getelementptr inbounds i8, ptr %648, i64 36
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds i8, ptr %650, i64 40
  %652 = load i64, ptr %649, align 4
  store i64 %652, ptr %651, align 8
  br label %653

653:                                              ; preds = %643, %646, %640
  %654 = phi ptr [ %641, %643 ], [ %650, %646 ], [ %641, %640 ]
  br i1 %151, label %655, label %669

655:                                              ; preds = %653
  br i1 %149, label %.critedge2, label %656

656:                                              ; preds = %655
  %657 = getelementptr inbounds i8, ptr %148, i64 202
  %658 = load i8, ptr %657, align 2, !tbaa !165, !range !92, !noundef !93
  %659 = trunc nuw i8 %658 to i1
  br i1 %659, label %660, label %.critedge2

.critedge2:                                       ; preds = %655, %656
  call void @__assert_fail(ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.3, i32 noundef 7296, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

660:                                              ; preds = %656
  %661 = getelementptr inbounds i8, ptr %148, i64 424
  %662 = load i32, ptr %661, align 8, !tbaa !208
  %663 = trunc i32 %662 to i16
  %664 = getelementptr inbounds i8, ptr %654, i64 220
  store i16 %663, ptr %664, align 4, !tbaa !127
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %661, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %brmerge442 = or i1 %.0331.shrunk, %.not379.not499
  %brmerge443 = select i1 %brmerge442, i1 true, i1 %337
  %.pre555 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge443, label %669, label %665

665:                                              ; preds = %660
  %666 = getelementptr inbounds i8, ptr %148, i64 280
  %667 = getelementptr inbounds i8, ptr %.pre555, i64 40
  %668 = load i64, ptr %666, align 8
  store i64 %668, ptr %667, align 8
  br label %669

669:                                              ; preds = %660, %665, %653
  %670 = phi ptr [ %.pre555, %660 ], [ %.pre555, %665 ], [ %654, %653 ]
  %671 = getelementptr inbounds i8, ptr %670, i64 244
  %672 = load float, ptr %671, align 4, !tbaa !209
  %673 = fcmp une float %672, 0x47EFFFFFE0000000
  br i1 %673, label %674, label %.critedge445

674:                                              ; preds = %669
  %675 = getelementptr inbounds i8, ptr %670, i64 237
  %676 = load i8, ptr %675, align 1, !tbaa !164
  %677 = icmp eq i8 %676, 0
  br i1 %677, label %678, label %.critedge445

678:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %679 = getelementptr inbounds i8, ptr %670, i64 48
  %680 = getelementptr inbounds i8, ptr %670, i64 252
  %681 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %679, ptr noundef nonnull align 4 dereferenceable(8) %680)
  store <2 x float> %681, ptr %17, align 8
  %682 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %671, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %682, ptr %16, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %670, ptr noundef nonnull align 4 dereferenceable(8) %16, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  br label %697

.critedge445:                                     ; preds = %669, %674
  br i1 %.not377, label %687, label %683

683:                                              ; preds = %.critedge445
  %684 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %670)
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  %686 = getelementptr inbounds i8, ptr %685, i64 40
  store <2 x float> %684, ptr %686, align 8
  br label %697

687:                                              ; preds = %.critedge445
  %brmerge446 = or i1 %.not379, %.0331.shrunk
  %brmerge448 = select i1 %brmerge446, i1 true, i1 %340
  br i1 %brmerge448, label %692, label %688

688:                                              ; preds = %687
  %689 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %670)
  %690 = load ptr, ptr %4, align 8, !tbaa !5
  %691 = getelementptr inbounds i8, ptr %690, i64 40
  store <2 x float> %689, ptr %691, align 8
  br label %697

692:                                              ; preds = %687
  %brmerge449 = or i1 %.not390, %.0331.shrunk
  %brmerge450 = select i1 %brmerge449, i1 true, i1 %337
  br i1 %brmerge450, label %697, label %693

693:                                              ; preds = %692
  %694 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %670)
  %695 = load ptr, ptr %4, align 8, !tbaa !5
  %696 = getelementptr inbounds i8, ptr %695, i64 40
  store <2 x float> %694, ptr %696, align 8
  br label %697

697:                                              ; preds = %692, %683, %693, %688, %678
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #12
  %698 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208) %421)
  %699 = extractvalue { <2 x float>, <2 x float> } %698, 0
  store <2 x float> %699, ptr %18, align 8
  %700 = getelementptr inbounds i8, ptr %18, i64 8
  %701 = extractvalue { <2 x float>, <2 x float> } %698, 1
  store <2 x float> %701, ptr %700, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #12
  %702 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208) %421)
  %703 = extractvalue { <2 x float>, <2 x float> } %702, 0
  store <2 x float> %703, ptr %19, align 8
  %704 = getelementptr inbounds i8, ptr %19, i64 8
  %705 = extractvalue { <2 x float>, <2 x float> } %702, 1
  store <2 x float> %705, ptr %704, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  %706 = getelementptr inbounds i8, ptr %42, i64 3264
  %707 = getelementptr inbounds i8, ptr %42, i64 3272
  %708 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %706, ptr noundef nonnull align 4 dereferenceable(8) %707)
  store <2 x float> %708, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %709 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %709, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %710 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %704, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %710, ptr %23, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  %brmerge451 = select i1 %.0331.shrunk, i1 true, i1 %151
  br i1 %brmerge451, label %719, label %711

711:                                              ; preds = %697
  %712 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %18)
  %713 = fcmp ogt float %712, 0.000000e+00
  br i1 %713, label %714, label %719

714:                                              ; preds = %711
  %715 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %18)
  %716 = fcmp ogt float %715, 0.000000e+00
  br i1 %716, label %717, label %719

717:                                              ; preds = %714
  %718 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %718, ptr noundef nonnull align 4 dereferenceable(16) %21)
  br label %719

719:                                              ; preds = %697, %711, %714, %717
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 40
  %722 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %721)
  %723 = load ptr, ptr %4, align 8, !tbaa !5
  %724 = getelementptr inbounds i8, ptr %723, i64 40
  store <2 x float> %722, ptr %724, align 8
  %725 = and i32 %.1, 201326592
  %or.cond453.not.not = icmp eq i32 %725, 67108864
  %. = select i1 %or.cond453.not.not, i64 3108, i64 3072
  %.sink = select i1 %151, i64 3100, i64 %.
  %726 = getelementptr inbounds i8, ptr %42, i64 %.sink
  %727 = load float, ptr %726, align 4, !tbaa !137
  %728 = getelementptr inbounds i8, ptr %723, i64 96
  store float %727, ptr %728, align 8, !tbaa !210
  %729 = and i32 %.1, 4096
  %.not407 = icmp eq i32 %729, 0
  %or.cond454.not = select i1 %.0330.in493, i1 %.not407, i1 false
  %brmerge491.not = and i1 %.not379, %or.cond454.not
  %730 = icmp eq i32 %336, 0
  %spec.select524 = select i1 %brmerge491.not, i1 %730, i1 %or.cond454.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #12
  store i32 -1, ptr %24, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #12
  store i32 -1, ptr %25, align 4, !tbaa !136
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %26, i8 0, i64 16, i1 false)
  br i1 %brmerge433500, label %731, label %736

731:                                              ; preds = %719
  %732 = getelementptr inbounds i8, ptr %42, i64 101
  %733 = load i8, ptr %732, align 1, !tbaa !211, !range !92, !noundef !93
  %734 = trunc nuw i8 %733 to i1
  %735 = select i1 %734, i32 2, i32 1
  br label %736

736:                                              ; preds = %719, %731
  %737 = phi i32 [ %735, %731 ], [ 0, %719 ]
  %738 = getelementptr inbounds i8, ptr %42, i64 4224
  %739 = load float, ptr %738, align 8, !tbaa !188
  %740 = fmul float %739, 0x3FF19999A0000000
  %741 = fadd float %727, 1.000000e+00
  %742 = call float @llvm.fmuladd.f32(float %739, float 0x3FC99999A0000000, float %741)
  %743 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %740, float noundef %742)
  %744 = fptosi float %743 to i32
  %745 = sitofp i32 %744 to float
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds i8, ptr %746, i64 205
  %748 = load i8, ptr %747, align 1, !tbaa !200, !range !92, !noundef !93
  %749 = trunc nuw i8 %748 to i1
  br i1 %749, label %755, label %750

750:                                              ; preds = %736
  %751 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %746, ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull %24, ptr noundef nonnull %25, i32 noundef %737, ptr noundef nonnull %26, ptr noundef nonnull align 4 dereferenceable(16) %21)
  %.not408 = icmp eq i32 %751, 0
  br i1 %.not408, label %755, label %752

752:                                              ; preds = %750
  %753 = and i32 %751, 1
  %.not409 = icmp ne i32 %753, 0
  %spec.select459 = or i1 %.not409, %.3
  %754 = and i32 %751, 2
  %.not410 = icmp ne i32 %754, 0
  %spec.select492 = or i1 %.not410, %.5342
  br label %755

755:                                              ; preds = %752, %750, %736
  %.7 = phi i1 [ %.5342, %736 ], [ %.5342, %750 ], [ %spec.select492, %752 ]
  %.6 = phi i1 [ %.3, %736 ], [ %.3, %750 ], [ %spec.select459, %752 ]
  %756 = load i32, ptr %24, align 4, !tbaa !136
  %757 = trunc i32 %756 to i8
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds i8, ptr %758, i64 214
  store i8 %757, ptr %759, align 2, !tbaa !212
  %760 = load i32, ptr %25, align 4, !tbaa !136
  %761 = trunc i32 %760 to i8
  %762 = getelementptr inbounds i8, ptr %758, i64 215
  store i8 %761, ptr %762, align 1, !tbaa !213
  %763 = getelementptr inbounds i8, ptr %758, i64 205
  %764 = load i8, ptr %763, align 1, !tbaa !200, !range !92, !noundef !93
  %765 = trunc nuw i8 %764 to i1
  br i1 %765, label %870, label %766

766:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %767 = getelementptr inbounds i8, ptr %758, i64 56
  %768 = load float, ptr %767, align 8, !tbaa !152
  %769 = getelementptr inbounds i8, ptr %758, i64 60
  %770 = load float, ptr %769, align 4, !tbaa !153
  %771 = getelementptr inbounds i8, ptr %758, i64 116
  %772 = load float, ptr %771, align 4, !tbaa !202
  %773 = getelementptr inbounds i8, ptr %758, i64 124
  %774 = load float, ptr %773, align 4, !tbaa !214
  %775 = fadd float %772, %774
  %776 = fsub float %770, %775
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %768, float noundef %776)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds i8, ptr %777, i64 528
  %779 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %778)
  store <2 x float> %779, ptr %28, align 8
  %780 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #12
  br i1 %59, label %781, label %782

781:                                              ; preds = %766
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %788

782:                                              ; preds = %766
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = getelementptr inbounds i8, ptr %783, i64 64
  %785 = getelementptr inbounds i8, ptr %783, i64 88
  %786 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %785, float noundef 2.000000e+00)
  store <2 x float> %786, ptr %30, align 8
  %787 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %784, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %787, ptr %29, align 8
  br label %788

788:                                              ; preds = %782, %781
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #12
  %789 = load float, ptr %27, align 4
  %.sroa.029.0.vec.extract = extractelement <2 x float> %780, i64 0
  %790 = select i1 %.6, float %789, float %.sroa.029.0.vec.extract
  %791 = getelementptr inbounds i8, ptr %27, i64 4
  %792 = load float, ptr %791, align 4
  %.sroa.029.4.vec.extract = extractelement <2 x float> %780, i64 1
  %793 = select i1 %.7, float %792, float %.sroa.029.4.vec.extract
  %794 = and i32 %.1, 16384
  %.not411 = icmp eq i32 %794, 0
  br i1 %.not411, label %795, label %.thread503

795:                                              ; preds = %788
  %796 = getelementptr inbounds i8, ptr %29, i64 4
  %797 = load float, ptr %796, align 4, !tbaa !206
  %798 = fcmp ogt float %797, %793
  %799 = and i32 %.1, 8
  %.not412 = icmp eq i32 %799, 0
  %800 = select i1 %798, i1 %.not412, i1 false
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds i8, ptr %801, i64 201
  %803 = zext i1 %800 to i8
  store i8 %803, ptr %802, align 1, !tbaa !215
  %804 = and i32 %.1, 32768
  %.not413 = icmp eq i32 %804, 0
  br i1 %.not413, label %810, label %.thread508

.thread503:                                       ; preds = %788
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds i8, ptr %805, i64 201
  store i8 1, ptr %806, align 1, !tbaa !215
  %807 = and i32 %.1, 32768
  %.not413504 = icmp eq i32 %807, 0
  br i1 %.not413504, label %.thread505, label %.thread508.thread

.thread508.thread:                                ; preds = %.thread503
  %808 = getelementptr inbounds i8, ptr %805, i64 200
  store i8 1, ptr %808, align 8, !tbaa !216
  br label %.thread592

.thread505:                                       ; preds = %.thread503
  %809 = load float, ptr %29, align 8, !tbaa !217
  %.pre585 = and i32 %.1, 8
  br label %812

810:                                              ; preds = %795
  %811 = load float, ptr %29, align 8, !tbaa !217
  br i1 %800, label %812, label %818

812:                                              ; preds = %.thread505, %810
  %.pre583.pre-phi = phi i32 [ %.pre585, %.thread505 ], [ 0, %810 ]
  %813 = phi float [ %809, %.thread505 ], [ %811, %810 ]
  %814 = phi ptr [ %805, %.thread505 ], [ %801, %810 ]
  %815 = phi ptr [ %806, %.thread505 ], [ %802, %810 ]
  %816 = getelementptr inbounds i8, ptr %42, i64 3172
  %817 = load float, ptr %816, align 4, !tbaa !218
  br label %818

818:                                              ; preds = %810, %812
  %.pre-phi = phi i32 [ %799, %810 ], [ %.pre583.pre-phi, %812 ]
  %819 = phi i8 [ 0, %810 ], [ 1, %812 ]
  %820 = phi float [ %811, %810 ], [ %813, %812 ]
  %821 = phi i1 [ false, %810 ], [ true, %812 ]
  %822 = phi ptr [ %801, %810 ], [ %814, %812 ]
  %823 = phi ptr [ %802, %810 ], [ %815, %812 ]
  %824 = phi float [ 0.000000e+00, %810 ], [ %817, %812 ]
  %825 = fsub float %790, %824
  %826 = fcmp ogt float %820, %825
  %.not414 = icmp eq i32 %.pre-phi, 0
  %or.cond460 = select i1 %826, i1 %.not414, i1 false
  br i1 %or.cond460, label %829, label %.thread509

.thread509:                                       ; preds = %818
  %827 = getelementptr inbounds i8, ptr %822, i64 200
  store i8 0, ptr %827, align 8, !tbaa !216
  br label %844

.thread508:                                       ; preds = %795
  %828 = getelementptr inbounds i8, ptr %801, i64 200
  store i8 1, ptr %828, align 8, !tbaa !216
  br i1 %800, label %.thread592, label %833

829:                                              ; preds = %818
  %830 = and i32 %.1, 2048
  %.not531 = icmp eq i32 %830, 0
  %831 = getelementptr inbounds i8, ptr %822, i64 200
  %.lobit = lshr exact i32 %830, 11
  %832 = trunc nuw nsw i32 %.lobit to i8
  store i8 %832, ptr %831, align 8, !tbaa !216
  %brmerge526 = or i1 %.not531, %821
  %not..not531 = xor i1 %.not531, true
  br i1 %brmerge526, label %844, label %._crit_edge556

._crit_edge556:                                   ; preds = %829
  %.phi.trans.insert557 = getelementptr inbounds i8, ptr %29, i64 4
  %.pre558 = load float, ptr %.phi.trans.insert557, align 4, !tbaa !206
  br label %833

833:                                              ; preds = %._crit_edge556, %.thread508
  %.pre-phi584 = phi i32 [ 0, %._crit_edge556 ], [ %799, %.thread508 ]
  %834 = phi float [ %.pre558, %._crit_edge556 ], [ %797, %.thread508 ]
  %835 = phi ptr [ %823, %._crit_edge556 ], [ %802, %.thread508 ]
  %836 = getelementptr inbounds i8, ptr %42, i64 3172
  %837 = load float, ptr %836, align 4, !tbaa !218
  %838 = fsub float %793, %837
  %839 = fcmp ogt float %834, %838
  %.not415 = icmp eq i32 %.pre-phi584, 0
  %840 = select i1 %839, i1 %.not415, i1 false
  %841 = zext i1 %840 to i8
  store i8 %841, ptr %835, align 1, !tbaa !215
  br label %844

.thread592:                                       ; preds = %.thread508.thread, %.thread508
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  %842 = getelementptr inbounds i8, ptr %42, i64 3172
  %843 = load float, ptr %842, align 4, !tbaa !218
  br label %852

844:                                              ; preds = %829, %.thread509, %833
  %845 = phi i8 [ %841, %833 ], [ %819, %829 ], [ %819, %.thread509 ]
  %846 = phi i1 [ true, %833 ], [ %not..not531, %829 ], [ false, %.thread509 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  %847 = trunc nuw i8 %845 to i1
  br i1 %847, label %848, label %851

848:                                              ; preds = %844
  %849 = getelementptr inbounds i8, ptr %42, i64 3172
  %850 = load float, ptr %849, align 4, !tbaa !218
  br i1 %846, label %852, label %856

851:                                              ; preds = %844
  br i1 %846, label %852, label %856

852:                                              ; preds = %.thread592, %848, %851
  %853 = phi float [ %850, %848 ], [ 0.000000e+00, %851 ], [ %843, %.thread592 ]
  %854 = getelementptr inbounds i8, ptr %42, i64 3172
  %855 = load float, ptr %854, align 4, !tbaa !218
  br label %856

856:                                              ; preds = %848, %851, %852
  %857 = phi float [ %853, %852 ], [ 0.000000e+00, %851 ], [ %850, %848 ]
  %858 = phi float [ %855, %852 ], [ 0.000000e+00, %851 ], [ 0.000000e+00, %848 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %857, float noundef %858)
  %859 = load ptr, ptr %4, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i64 192
  %861 = load i64, ptr %31, align 8
  store i64 %861, ptr %860, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  %862 = getelementptr inbounds i8, ptr %859, i64 120
  %863 = lshr i64 %861, 32
  %864 = insertelement <2 x i64> poison, i64 %861, i64 0
  %865 = insertelement <2 x i64> %864, i64 %863, i64 1
  %866 = trunc <2 x i64> %865 to <2 x i32>
  %867 = bitcast <2 x i32> %866 to <2 x float>
  %868 = load <2 x float>, ptr %862, align 8, !tbaa !137
  %869 = fadd <2 x float> %868, %867
  store <2 x float> %869, ptr %862, align 8, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %870

870:                                              ; preds = %856, %755
  %871 = phi ptr [ %859, %856 ], [ %758, %755 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #12
  %872 = getelementptr inbounds i8, ptr %148, i64 592
  %873 = select i1 %brmerge433500, i1 true, i1 %337
  %874 = select i1 %873, ptr %18, ptr %872
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %874, i64 16, i1 false), !tbaa.struct !167
  %875 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %871)
  %876 = extractvalue { <2 x float>, <2 x float> } %875, 0
  %877 = extractvalue { <2 x float>, <2 x float> } %875, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #12
  %878 = load ptr, ptr %4, align 8, !tbaa !5
  %879 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %878)
  %880 = extractvalue { <2 x float>, <2 x float> } %879, 0
  store <2 x float> %880, ptr %33, align 8
  %881 = getelementptr inbounds i8, ptr %33, i64 8
  %882 = extractvalue { <2 x float>, <2 x float> } %879, 1
  store <2 x float> %882, ptr %881, align 8
  %883 = load ptr, ptr %4, align 8, !tbaa !5
  %884 = getelementptr inbounds i8, ptr %883, i64 512
  store <2 x float> %876, ptr %884, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %883, i64 520
  store <2 x float> %877, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %884, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %885 = load ptr, ptr %4, align 8
  %886 = getelementptr inbounds i8, ptr %885, i64 40
  %887 = getelementptr inbounds i8, ptr %885, i64 112
  %888 = getelementptr inbounds i8, ptr %885, i64 528
  %889 = getelementptr inbounds i8, ptr %885, i64 48
  %890 = load <2 x float>, ptr %886, align 8, !tbaa !137
  %891 = load <2 x float>, ptr %889, align 8, !tbaa !137
  %892 = fadd <2 x float> %890, %891
  %893 = load <4 x float>, ptr %887, align 8, !tbaa !137
  %894 = shufflevector <2 x float> %890, <2 x float> %892, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %895 = fadd <4 x float> %894, %893
  %896 = fsub <4 x float> %894, %893
  %897 = shufflevector <4 x float> %895, <4 x float> %896, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %897, ptr %888, align 8, !tbaa !137
  %898 = and i32 %.1, 1025
  %brmerge465.not = icmp eq i32 %898, 1
  %899 = getelementptr inbounds i8, ptr %42, i64 3128
  %900 = getelementptr inbounds i8, ptr %885, i64 100
  %.in416 = select i1 %brmerge465.not, ptr %900, ptr %899
  %901 = load float, ptr %.in416, align 4, !tbaa !137
  %902 = extractelement <4 x float> %895, i64 0
  %903 = fadd float %902, 5.000000e-01
  %904 = load float, ptr %900, align 4, !tbaa !180
  %905 = call float @llvm.fmuladd.f32(float %904, float 5.000000e-01, float %903)
  %906 = call noundef float @_ZL7ImFloorf(float noundef %905)
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds i8, ptr %907, i64 544
  store float %906, ptr %908, align 8, !tbaa !219
  %909 = getelementptr inbounds i8, ptr %907, i64 532
  %910 = load float, ptr %909, align 4, !tbaa !220
  %911 = fadd float %910, 5.000000e-01
  %912 = call float @llvm.fmuladd.f32(float %901, float 5.000000e-01, float %911)
  %913 = call noundef float @_ZL7ImFloorf(float noundef %912)
  %914 = load ptr, ptr %4, align 8, !tbaa !5
  %915 = getelementptr inbounds i8, ptr %914, i64 548
  store float %913, ptr %915, align 4, !tbaa !221
  %916 = getelementptr inbounds i8, ptr %914, i64 536
  %917 = load float, ptr %916, align 8, !tbaa !222
  %918 = getelementptr inbounds i8, ptr %914, i64 100
  %919 = load float, ptr %918, align 4, !tbaa !180
  %920 = fneg float %919
  %921 = call float @llvm.fmuladd.f32(float %920, float 5.000000e-01, float %917)
  %922 = call noundef float @_ZL7ImFloorf(float noundef %921)
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds i8, ptr %923, i64 552
  store float %922, ptr %924, align 8, !tbaa !223
  %925 = getelementptr inbounds i8, ptr %923, i64 540
  %926 = load float, ptr %925, align 4, !tbaa !224
  %927 = getelementptr inbounds i8, ptr %923, i64 100
  %928 = load float, ptr %927, align 4, !tbaa !180
  %929 = fneg float %928
  %930 = call float @llvm.fmuladd.f32(float %929, float 5.000000e-01, float %926)
  %931 = call noundef float @_ZL7ImFloorf(float noundef %930)
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = getelementptr inbounds i8, ptr %932, i64 556
  store float %931, ptr %933, align 4, !tbaa !225
  %934 = getelementptr inbounds i8, ptr %932, i64 544
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %934, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %935 = load ptr, ptr %4, align 8, !tbaa !5
  %936 = getelementptr inbounds i8, ptr %935, i64 48
  %937 = load float, ptr %936, align 8, !tbaa !178
  %938 = fcmp ule float %937, 0.000000e+00
  %.not390.not = xor i1 %.not390, true
  %brmerge467 = or i1 %938, %.not390.not
  %brmerge468 = or i1 %.not403, %brmerge467
  br i1 %brmerge468, label %941, label %939

939:                                              ; preds = %870
  %940 = fmul float %937, 0x3FE4CCCCC0000000
  br label %944

941:                                              ; preds = %870
  %942 = load float, ptr %738, align 8, !tbaa !188
  %943 = fmul float %942, 1.600000e+01
  br label %944

944:                                              ; preds = %941, %939
  %.sink599 = phi float [ %943, %941 ], [ %940, %939 ]
  %945 = call noundef float @_ZL7ImTruncf(float noundef %.sink599)
  %.sink596 = load ptr, ptr %4, align 8, !tbaa !5
  %946 = getelementptr inbounds i8, ptr %.sink596, i64 640
  store float %945, ptr %946, align 8, !tbaa !226
  %947 = getelementptr inbounds i8, ptr %.sink596, i64 64
  %948 = load float, ptr %947, align 8, !tbaa !227
  %949 = getelementptr inbounds i8, ptr %.sink596, i64 88
  %950 = load float, ptr %949, align 8, !tbaa !228
  %951 = call float @llvm.fmuladd.f32(float %950, float 2.000000e+00, float %948)
  %952 = getelementptr inbounds i8, ptr %.sink596, i64 528
  %953 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %952)
  %954 = fsub float %951, %953
  %955 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %954)
  %956 = load ptr, ptr %4, align 8, !tbaa !5
  %957 = getelementptr inbounds i8, ptr %956, i64 160
  store float %955, ptr %957, align 8, !tbaa !229
  %958 = getelementptr inbounds i8, ptr %956, i64 68
  %959 = load float, ptr %958, align 4, !tbaa !230
  %960 = getelementptr inbounds i8, ptr %956, i64 92
  %961 = load float, ptr %960, align 4, !tbaa !231
  %962 = call float @llvm.fmuladd.f32(float %961, float 2.000000e+00, float %959)
  %963 = getelementptr inbounds i8, ptr %956, i64 528
  %964 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %963)
  %965 = fsub float %962, %964
  %966 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %965)
  %967 = load ptr, ptr %4, align 8, !tbaa !5
  %968 = getelementptr inbounds i8, ptr %967, i64 164
  store float %966, ptr %968, align 4, !tbaa !232
  %969 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %967)
  %970 = load ptr, ptr %4, align 8, !tbaa !5
  %971 = getelementptr inbounds i8, ptr %970, i64 152
  store <2 x float> %969, ptr %971, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %972 = load ptr, ptr %4, align 8, !tbaa !5
  %973 = getelementptr inbounds i8, ptr %972, i64 168
  %974 = load i64, ptr %34, align 8
  store i64 %974, ptr %973, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #12
  %975 = getelementptr inbounds i8, ptr %972, i64 128
  store <2 x float> zeroinitializer, ptr %975, align 8, !tbaa !137
  %976 = getelementptr inbounds i8, ptr %972, i64 688
  %977 = load ptr, ptr %976, align 8, !tbaa !168
  %978 = load i32, ptr %977, align 8, !tbaa !233
  %979 = icmp eq i32 %978, 1
  br i1 %979, label %980, label %.critedge4

980:                                              ; preds = %944
  %981 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %977, i32 noundef 0)
  %982 = getelementptr inbounds i8, ptr %981, i64 32
  %983 = load i32, ptr %982, align 8, !tbaa !234
  %984 = icmp eq i32 %983, 0
  br i1 %984, label %985, label %.critedge4

.critedge4:                                       ; preds = %944, %980
  call void @__assert_fail(ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.3, i32 noundef 7469, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

985:                                              ; preds = %980
  %986 = load ptr, ptr %4, align 8, !tbaa !5
  %987 = getelementptr inbounds i8, ptr %986, i64 688
  %988 = load ptr, ptr %987, align 8, !tbaa !168
  %989 = getelementptr inbounds i8, ptr %42, i64 4216
  %990 = load ptr, ptr %989, align 8, !tbaa !236
  %991 = getelementptr inbounds i8, ptr %990, i64 64
  %992 = load ptr, ptr %991, align 8, !tbaa !237
  %993 = getelementptr inbounds i8, ptr %992, i64 8
  %994 = load i64, ptr %993, align 8, !tbaa !238
  call void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216) %988, i64 noundef %994)
  %995 = getelementptr inbounds i8, ptr %32, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %995, i1 noundef zeroext false)
  br i1 %873, label %.thread513, label %996

996:                                              ; preds = %985
  %997 = getelementptr inbounds i8, ptr %148, i64 424
  %998 = load i32, ptr %997, align 8, !tbaa !208
  %999 = icmp sgt i32 %998, 1
  br i1 %999, label %1000, label %.thread510

.thread510:                                       ; preds = %996
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #12
  br label %1015

1000:                                             ; preds = %996
  %1001 = add nsw i32 %998, -2
  %1002 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %997, i32 noundef %1001)
  %1003 = load ptr, ptr %1002, align 8, !tbaa !5
  %.not417 = icmp eq ptr %1003, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #12
  br i1 %.not417, label %1015, label %1004

1004:                                             ; preds = %1000
  %1005 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1003)
  %1006 = extractvalue { <2 x float>, <2 x float> } %1005, 0
  store <2 x float> %1006, ptr %35, align 8
  %1007 = getelementptr inbounds i8, ptr %35, i64 8
  %1008 = extractvalue { <2 x float>, <2 x float> } %1005, 1
  store <2 x float> %1008, ptr %1007, align 8
  %1009 = load ptr, ptr %4, align 8, !tbaa !5
  %1010 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1009)
  %1011 = extractvalue { <2 x float>, <2 x float> } %1010, 0
  store <2 x float> %1011, ptr %36, align 8
  %1012 = getelementptr inbounds i8, ptr %36, i64 8
  %1013 = extractvalue { <2 x float>, <2 x float> } %1010, 1
  store <2 x float> %1013, ptr %1012, align 8
  %1014 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(16) %36)
  br label %1015

1015:                                             ; preds = %.thread510, %1000, %1004
  %1016 = phi i1 [ %1014, %1004 ], [ false, %1000 ], [ false, %.thread510 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #12
  %1017 = getelementptr inbounds i8, ptr %148, i64 688
  %1018 = load ptr, ptr %1017, align 8, !tbaa !168
  %1019 = getelementptr inbounds i8, ptr %1018, i64 32
  %1020 = load i32, ptr %1019, align 8, !tbaa !242
  %1021 = load ptr, ptr %4, align 8, !tbaa !5
  %1022 = getelementptr inbounds i8, ptr %1021, i64 688
  %1023 = load ptr, ptr %1022, align 8, !tbaa !168
  %1024 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1023)
  %1025 = getelementptr inbounds i8, ptr %1024, i64 32
  %1026 = load i32, ptr %1025, align 8, !tbaa !234
  %1027 = icmp ne i32 %1026, 0
  %1028 = icmp eq i32 %1020, 0
  %or.cond473.not534.not537 = select i1 %1027, i1 true, i1 %1028
  %or.cond528.not = or i1 %1016, %or.cond473.not534.not537
  br i1 %or.cond528.not, label %.thread513, label %1029

1029:                                             ; preds = %1015
  %1030 = load ptr, ptr %1017, align 8, !tbaa !168
  %1031 = load ptr, ptr %4, align 8, !tbaa !5
  %1032 = getelementptr inbounds i8, ptr %1031, i64 688
  store ptr %1030, ptr %1032, align 8, !tbaa !168
  br label %.thread513

.thread513:                                       ; preds = %1015, %985, %1029
  %.1346515 = phi i1 [ true, %1029 ], [ false, %985 ], [ false, %1015 ]
  %1033 = getelementptr inbounds i8, ptr %42, i64 8320
  %1034 = load ptr, ptr %1033, align 8, !tbaa !243
  %.not418 = icmp eq ptr %1034, null
  br i1 %.not418, label %1035, label %1038

1035:                                             ; preds = %.thread513
  %1036 = getelementptr inbounds i8, ptr %42, i64 7848
  %1037 = load ptr, ptr %1036, align 8, !tbaa !244
  br label %1038

1038:                                             ; preds = %.thread513, %1035
  %1039 = phi ptr [ %1037, %1035 ], [ %1034, %.thread513 ]
  br i1 %spec.select524, label %._crit_edge559, label %1040

._crit_edge559:                                   ; preds = %1038
  %.pre560 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1047

1040:                                             ; preds = %1038
  %.not419 = icmp eq ptr %1039, null
  %.pre561 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not419, label %1047, label %1041

1041:                                             ; preds = %1040
  %1042 = getelementptr inbounds i8, ptr %.pre561, i64 944
  %1043 = load ptr, ptr %1042, align 8, !tbaa !245
  %1044 = getelementptr inbounds i8, ptr %1039, i64 944
  %1045 = load ptr, ptr %1044, align 8, !tbaa !245
  %1046 = icmp eq ptr %1043, %1045
  br label %1047

1047:                                             ; preds = %._crit_edge559, %1040, %1041
  %1048 = phi ptr [ %.pre560, %._crit_edge559 ], [ %.pre561, %1040 ], [ %.pre561, %1041 ]
  %1049 = phi i1 [ true, %._crit_edge559 ], [ false, %1040 ], [ %1046, %1041 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1048, ptr noundef nonnull align 4 dereferenceable(16) %33, i1 noundef zeroext %1049, i1 noundef zeroext true, i32 noundef %737, ptr noundef nonnull %26, float noundef %745)
  %.pre562 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1346515, label %1050, label %1053

1050:                                             ; preds = %1047
  %1051 = getelementptr inbounds i8, ptr %.pre562, i64 696
  %1052 = getelementptr inbounds i8, ptr %.pre562, i64 688
  store ptr %1051, ptr %1052, align 8, !tbaa !168
  br label %1053

1053:                                             ; preds = %1050, %1047
  %1054 = and i32 %.1, 8
  %.not420 = icmp eq i32 %1054, 0
  %1055 = getelementptr inbounds i8, ptr %.pre562, i64 80
  %1056 = load float, ptr %1055, align 8, !tbaa !192
  %1057 = fcmp une float %1056, 0.000000e+00
  br i1 %1057, label %1079, label %1058

1058:                                             ; preds = %1053
  %1059 = and i32 %.1, 2056
  %1060 = icmp eq i32 %1059, 2048
  br i1 %1060, label %1061, label %1064

1061:                                             ; preds = %1058
  %1062 = getelementptr inbounds i8, ptr %.pre562, i64 64
  %1063 = load float, ptr %1062, align 8, !tbaa !227
  br label %1064

1064:                                             ; preds = %1058, %1061
  %1065 = phi float [ %1063, %1061 ], [ 0.000000e+00, %1058 ]
  %1066 = getelementptr inbounds i8, ptr %.pre562, i64 48
  %1067 = load float, ptr %1066, align 8, !tbaa !178
  %1068 = getelementptr inbounds i8, ptr %.pre562, i64 88
  %1069 = load float, ptr %1068, align 8, !tbaa !228
  %1070 = fneg float %1069
  %1071 = call float @llvm.fmuladd.f32(float %1070, float 2.000000e+00, float %1067)
  %1072 = getelementptr inbounds i8, ptr %.pre562, i64 112
  %1073 = load float, ptr %1072, align 8, !tbaa !201
  %1074 = getelementptr inbounds i8, ptr %.pre562, i64 120
  %1075 = load float, ptr %1074, align 8, !tbaa !246
  %1076 = fadd float %1073, %1075
  %1077 = fsub float %1071, %1076
  %1078 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1065, float noundef %1077)
  %.pre563 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1079

1079:                                             ; preds = %1053, %1064
  %1080 = phi ptr [ %.pre563, %1064 ], [ %.pre562, %1053 ]
  %1081 = phi float [ %1078, %1064 ], [ %1056, %1053 ]
  %1082 = getelementptr inbounds i8, ptr %1080, i64 84
  %1083 = load float, ptr %1082, align 4, !tbaa !193
  %1084 = fcmp une float %1083, 0.000000e+00
  br i1 %1084, label %1104, label %1085

1085:                                             ; preds = %1079
  br i1 %.not420, label %1086, label %1089

1086:                                             ; preds = %1085
  %1087 = getelementptr inbounds i8, ptr %1080, i64 68
  %1088 = load float, ptr %1087, align 4, !tbaa !230
  br label %1089

1089:                                             ; preds = %1085, %1086
  %1090 = phi float [ %1088, %1086 ], [ 0.000000e+00, %1085 ]
  %1091 = getelementptr inbounds i8, ptr %1080, i64 52
  %1092 = load float, ptr %1091, align 4, !tbaa !179
  %1093 = getelementptr inbounds i8, ptr %1080, i64 92
  %1094 = load float, ptr %1093, align 4, !tbaa !231
  %1095 = fneg float %1094
  %1096 = call float @llvm.fmuladd.f32(float %1095, float 2.000000e+00, float %1092)
  %1097 = getelementptr inbounds i8, ptr %1080, i64 116
  %1098 = load float, ptr %1097, align 4, !tbaa !202
  %1099 = getelementptr inbounds i8, ptr %1080, i64 124
  %1100 = load float, ptr %1099, align 4, !tbaa !214
  %1101 = fadd float %1098, %1100
  %1102 = fsub float %1096, %1101
  %1103 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1090, float noundef %1102)
  %.pre564 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1104

1104:                                             ; preds = %1079, %1089
  %1105 = phi ptr [ %.pre564, %1089 ], [ %1080, %1079 ]
  %1106 = phi float [ %1103, %1089 ], [ %1083, %1079 ]
  %1107 = getelementptr inbounds i8, ptr %1105, i64 528
  %1108 = load float, ptr %1107, align 8, !tbaa !247
  %1109 = getelementptr inbounds i8, ptr %1105, i64 152
  %1110 = load float, ptr %1109, align 8, !tbaa !248
  %1111 = fsub float %1108, %1110
  %1112 = getelementptr inbounds i8, ptr %1105, i64 88
  %1113 = load float, ptr %1112, align 8, !tbaa !228
  %1114 = getelementptr inbounds i8, ptr %1105, i64 100
  %1115 = load float, ptr %1114, align 4, !tbaa !180
  %1116 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1113, float noundef %1115)
  %1117 = fadd float %1111, %1116
  %1118 = call noundef float @_ZL7ImTruncf(float noundef %1117)
  %1119 = load ptr, ptr %4, align 8, !tbaa !5
  %1120 = getelementptr inbounds i8, ptr %1119, i64 560
  store float %1118, ptr %1120, align 8, !tbaa !249
  %1121 = getelementptr inbounds i8, ptr %1119, i64 532
  %1122 = load float, ptr %1121, align 4, !tbaa !220
  %1123 = getelementptr inbounds i8, ptr %1119, i64 156
  %1124 = load float, ptr %1123, align 4, !tbaa !250
  %1125 = fsub float %1122, %1124
  %1126 = getelementptr inbounds i8, ptr %1119, i64 92
  %1127 = load float, ptr %1126, align 4, !tbaa !231
  %1128 = getelementptr inbounds i8, ptr %1119, i64 100
  %1129 = load float, ptr %1128, align 4, !tbaa !180
  %1130 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1127, float noundef %1129)
  %1131 = fadd float %1125, %1130
  %1132 = call noundef float @_ZL7ImTruncf(float noundef %1131)
  %1133 = load ptr, ptr %4, align 8, !tbaa !5
  %1134 = getelementptr inbounds i8, ptr %1133, i64 564
  store float %1132, ptr %1134, align 4, !tbaa !251
  %1135 = getelementptr inbounds i8, ptr %1133, i64 560
  %1136 = load float, ptr %1135, align 8, !tbaa !249
  %1137 = getelementptr inbounds i8, ptr %1133, i64 568
  %1138 = insertelement <2 x float> poison, float %1081, i64 0
  %1139 = insertelement <2 x float> %1138, float %1106, i64 1
  %1140 = insertelement <2 x float> poison, float %1136, i64 0
  %1141 = insertelement <2 x float> %1140, float %1132, i64 1
  %1142 = fadd <2 x float> %1139, %1141
  store <2 x float> %1142, ptr %1137, align 8, !tbaa !137
  %1143 = getelementptr inbounds i8, ptr %1133, i64 576
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1143, ptr noundef nonnull align 8 dereferenceable(16) %1135, i64 16, i1 false), !tbaa.struct !167
  %1144 = getelementptr inbounds i8, ptr %1133, i64 40
  %1145 = getelementptr inbounds i8, ptr %1133, i64 152
  %1146 = getelementptr inbounds i8, ptr %1133, i64 88
  %1147 = getelementptr inbounds i8, ptr %1133, i64 112
  %1148 = getelementptr inbounds i8, ptr %1133, i64 608
  %1149 = load <2 x float>, ptr %1144, align 8, !tbaa !137
  %1150 = load <2 x float>, ptr %1145, align 8, !tbaa !137
  %1151 = fsub <2 x float> %1149, %1150
  %1152 = load <2 x float>, ptr %1146, align 8, !tbaa !137
  %1153 = fadd <2 x float> %1151, %1152
  %1154 = load <2 x float>, ptr %1147, align 8, !tbaa !137
  %1155 = fadd <2 x float> %1153, %1154
  store <2 x float> %1155, ptr %1148, align 8, !tbaa !137
  %1156 = getelementptr inbounds i8, ptr %1133, i64 80
  %1157 = load float, ptr %1156, align 8, !tbaa !192
  %1158 = fcmp une float %1157, 0.000000e+00
  br i1 %1158, label %1170, label %1159

1159:                                             ; preds = %1104
  %1160 = getelementptr inbounds i8, ptr %1133, i64 48
  %1161 = load float, ptr %1160, align 8, !tbaa !178
  %1162 = extractelement <2 x float> %1152, i64 0
  %1163 = fneg float %1162
  %1164 = call float @llvm.fmuladd.f32(float %1163, float 2.000000e+00, float %1161)
  %1165 = getelementptr inbounds i8, ptr %1133, i64 120
  %1166 = load float, ptr %1165, align 8, !tbaa !246
  %1167 = extractelement <2 x float> %1154, i64 0
  %1168 = fadd float %1167, %1166
  %1169 = fsub float %1164, %1168
  br label %1170

1170:                                             ; preds = %1104, %1159
  %1171 = phi float [ %1169, %1159 ], [ %1157, %1104 ]
  %1172 = extractelement <2 x float> %1155, i64 0
  %1173 = fadd float %1172, %1171
  %1174 = getelementptr inbounds i8, ptr %1133, i64 616
  store float %1173, ptr %1174, align 8, !tbaa !252
  %1175 = getelementptr inbounds i8, ptr %1133, i64 84
  %1176 = load float, ptr %1175, align 4, !tbaa !193
  %1177 = fcmp une float %1176, 0.000000e+00
  br i1 %1177, label %1189, label %1178

1178:                                             ; preds = %1170
  %1179 = getelementptr inbounds i8, ptr %1133, i64 52
  %1180 = load float, ptr %1179, align 4, !tbaa !179
  %1181 = extractelement <2 x float> %1152, i64 1
  %1182 = fneg float %1181
  %1183 = call float @llvm.fmuladd.f32(float %1182, float 2.000000e+00, float %1180)
  %1184 = getelementptr inbounds i8, ptr %1133, i64 124
  %1185 = load float, ptr %1184, align 4, !tbaa !214
  %1186 = extractelement <2 x float> %1154, i64 1
  %1187 = fadd float %1186, %1185
  %1188 = fsub float %1183, %1187
  br label %1189

1189:                                             ; preds = %1170, %1178
  %1190 = phi float [ %1188, %1178 ], [ %1176, %1170 ]
  %1191 = extractelement <2 x float> %1155, i64 1
  %1192 = fadd float %1191, %1190
  %1193 = getelementptr inbounds i8, ptr %1133, i64 620
  store float %1192, ptr %1193, align 4, !tbaa !253
  %1194 = extractelement <2 x float> %1152, i64 0
  %1195 = extractelement <2 x float> %1154, i64 0
  %1196 = fadd <2 x float> %1152, %1154
  %1197 = extractelement <2 x float> %1150, i64 0
  %1198 = fsub <2 x float> %1196, %1150
  %1199 = extractelement <2 x float> %1198, i64 0
  %1200 = getelementptr inbounds i8, ptr %1133, i64 348
  store float %1199, ptr %1200, align 4, !tbaa !254
  %1201 = getelementptr inbounds i8, ptr %1133, i64 352
  store <2 x float> zeroinitializer, ptr %1201, align 8, !tbaa !137
  %1202 = extractelement <2 x float> %1149, i64 0
  %1203 = fpext float %1202 to double
  %1204 = fpext float %1194 to double
  %1205 = fadd double %1203, %1204
  %1206 = fpext float %1197 to double
  %1207 = fsub double %1205, %1206
  %1208 = fpext float %1195 to double
  %1209 = fadd double %1207, %1208
  %1210 = fadd double %1209, 0.000000e+00
  %1211 = extractelement <2 x float> %1149, i64 1
  %1212 = fpext float %1211 to double
  %1213 = extractelement <2 x float> %1152, i64 1
  %1214 = fpext float %1213 to double
  %1215 = fadd double %1212, %1214
  %1216 = extractelement <2 x float> %1150, i64 1
  %1217 = fpext float %1216 to double
  %1218 = fsub double %1215, %1217
  %1219 = extractelement <2 x float> %1154, i64 1
  %1220 = fpext float %1219 to double
  %1221 = fadd double %1218, %1220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #12
  %1222 = fptrunc double %1210 to float
  %1223 = fptrunc double %1221 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef %1222, float noundef %1223)
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = getelementptr inbounds i8, ptr %1224, i64 296
  %1226 = load i64, ptr %37, align 8
  store i64 %1226, ptr %1225, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  %1227 = trunc i64 %1226 to i32
  %1228 = bitcast i32 %1227 to float
  %1229 = fpext float %1228 to double
  %1230 = fsub double %1210, %1229
  %1231 = fptrunc double %1230 to float
  %1232 = lshr i64 %1226, 32
  %1233 = trunc nuw i64 %1232 to i32
  %1234 = bitcast i32 %1233 to float
  %1235 = fpext float %1234 to double
  %1236 = fsub double %1221, %1235
  %1237 = fptrunc double %1236 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %1231, float noundef %1237)
  %1238 = load ptr, ptr %4, align 8, !tbaa !5
  %1239 = getelementptr inbounds i8, ptr %1238, i64 360
  %1240 = load i64, ptr %38, align 8
  store i64 %1240, ptr %1239, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  %1241 = getelementptr inbounds i8, ptr %1238, i64 280
  %1242 = getelementptr inbounds i8, ptr %1238, i64 296
  %1243 = load i64, ptr %1242, align 8
  store i64 %1243, ptr %1241, align 8
  %1244 = getelementptr inbounds i8, ptr %1238, i64 288
  store i64 %1243, ptr %1244, align 8
  %1245 = getelementptr inbounds i8, ptr %1238, i64 304
  store i64 %1243, ptr %1245, align 8
  %1246 = getelementptr inbounds i8, ptr %1238, i64 312
  store i64 %1243, ptr %1246, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = getelementptr inbounds i8, ptr %1247, i64 328
  %1249 = load i64, ptr %39, align 8
  store i64 %1249, ptr %1248, align 8
  %1250 = getelementptr inbounds i8, ptr %1247, i64 320
  store i64 %1249, ptr %1250, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  %1251 = getelementptr inbounds i8, ptr %1247, i64 336
  %1252 = getelementptr inbounds i8, ptr %1247, i64 368
  store i32 0, ptr %1252, align 8, !tbaa !146
  %1253 = getelementptr inbounds i8, ptr %1247, i64 374
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1251, i8 0, i64 10, i1 false)
  %1254 = load i16, ptr %1253, align 2, !tbaa !255
  %1255 = getelementptr inbounds i8, ptr %1247, i64 372
  store i16 %1254, ptr %1255, align 4, !tbaa !256
  store i16 0, ptr %1253, align 2, !tbaa !255
  %1256 = getelementptr inbounds i8, ptr %1247, i64 376
  store i8 1, ptr %1256, align 8, !tbaa !257
  %1257 = getelementptr inbounds i8, ptr %1247, i64 377
  store i8 0, ptr %1257, align 1, !tbaa !258
  %1258 = getelementptr inbounds i8, ptr %1247, i64 164
  %1259 = load float, ptr %1258, align 4, !tbaa !232
  %1260 = fcmp ogt float %1259, 0.000000e+00
  %1261 = getelementptr inbounds i8, ptr %1247, i64 378
  %1262 = zext i1 %1260 to i8
  store i8 %1262, ptr %1261, align 2, !tbaa !259
  %1263 = getelementptr inbounds i8, ptr %1247, i64 379
  store i8 0, ptr %1263, align 1, !tbaa !260
  %1264 = getelementptr inbounds i8, ptr %1247, i64 388
  %1265 = load float, ptr %457, align 4, !tbaa !183
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1264, float noundef %1265, i1 noundef zeroext %.0330.in493)
  %1266 = load ptr, ptr %4, align 8, !tbaa !5
  %1267 = getelementptr inbounds i8, ptr %1266, i64 416
  store i32 0, ptr %1267, align 8, !tbaa !261
  %1268 = getelementptr inbounds i8, ptr %1266, i64 420
  store i32 0, ptr %1268, align 4, !tbaa !262
  %1269 = getelementptr inbounds i8, ptr %1266, i64 424
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1269, i32 noundef 0)
  %1270 = load ptr, ptr %4, align 8, !tbaa !5
  %1271 = getelementptr inbounds i8, ptr %1270, i64 648
  %1272 = getelementptr inbounds i8, ptr %1270, i64 440
  store ptr %1271, ptr %1272, align 8, !tbaa !263
  %1273 = getelementptr inbounds i8, ptr %1270, i64 448
  store ptr null, ptr %1273, align 8, !tbaa !264
  %1274 = getelementptr inbounds i8, ptr %1270, i64 460
  store i32 1, ptr %1274, align 4, !tbaa !265
  br i1 %149, label %1278, label %1275

1275:                                             ; preds = %1189
  %1276 = getelementptr inbounds i8, ptr %148, i64 460
  %1277 = load i32, ptr %1276, align 4, !tbaa !265
  br label %1278

1278:                                             ; preds = %1189, %1275
  %1279 = phi i32 [ %1277, %1275 ], [ 1, %1189 ]
  %1280 = getelementptr inbounds i8, ptr %1270, i64 464
  store i32 %1279, ptr %1280, align 8, !tbaa !266
  %1281 = getelementptr inbounds i8, ptr %1270, i64 640
  %1282 = load float, ptr %1281, align 8, !tbaa !226
  %1283 = getelementptr inbounds i8, ptr %1270, i64 472
  store float %1282, ptr %1283, align 8, !tbaa !267
  %1284 = getelementptr inbounds i8, ptr %1270, i64 476
  store float -1.000000e+00, ptr %1284, align 4, !tbaa !268
  %1285 = getelementptr inbounds i8, ptr %1270, i64 480
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1285, i32 noundef 0)
  %1286 = load ptr, ptr %4, align 8, !tbaa !5
  %1287 = getelementptr inbounds i8, ptr %1286, i64 496
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1287, i32 noundef 0)
  %1288 = and i32 %.1, 134217728
  %.not421 = icmp eq i32 %1288, 0
  br i1 %.not421, label %._crit_edge565, label %1289

._crit_edge565:                                   ; preds = %1278
  %.pre566 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1294

1289:                                             ; preds = %1278
  %1290 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 55)
  %1291 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %1290)
  %1292 = load ptr, ptr %4, align 8, !tbaa !5
  %1293 = getelementptr inbounds i8, ptr %1292, i64 468
  store i32 %1291, ptr %1293, align 4, !tbaa !269
  br label %1294

1294:                                             ; preds = %._crit_edge565, %1289
  %1295 = phi ptr [ %.pre566, %._crit_edge565 ], [ %1292, %1289 ]
  %1296 = getelementptr inbounds i8, ptr %1295, i64 226
  %1297 = load i8, ptr %1296, align 2, !tbaa !203
  %1298 = icmp sgt i8 %1297, 0
  br i1 %1298, label %1299, label %1301

1299:                                             ; preds = %1294
  %1300 = add nsw i8 %1297, -1
  store i8 %1300, ptr %1296, align 2, !tbaa !203
  br label %1301

1301:                                             ; preds = %1299, %1294
  %1302 = getelementptr inbounds i8, ptr %1295, i64 227
  %1303 = load i8, ptr %1302, align 1, !tbaa !204
  %1304 = icmp sgt i8 %1303, 0
  br i1 %1304, label %1305, label %1307

1305:                                             ; preds = %1301
  %1306 = add nsw i8 %1303, -1
  store i8 %1306, ptr %1302, align 1, !tbaa !204
  br label %1307

1307:                                             ; preds = %1305, %1301
  br i1 %spec.select524, label %1308, label %.critedge476

1308:                                             ; preds = %1307
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1295, i32 noundef 2)
  %1309 = load ptr, ptr %4, align 8, !tbaa !5
  %1310 = getelementptr inbounds i8, ptr %42, i64 7848
  %1311 = load ptr, ptr %1310, align 8, !tbaa !244
  %1312 = icmp eq ptr %1309, %1311
  br i1 %1312, label %1313, label %.critedge476

1313:                                             ; preds = %1308
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1309, i1 noundef zeroext false)
  br label %.critedge476

.critedge476:                                     ; preds = %1307, %1313, %1308
  %1314 = getelementptr inbounds i8, ptr %42, i64 103
  %1315 = load i8, ptr %1314, align 1, !tbaa !270, !range !92, !noundef !93
  %1316 = trunc nuw i8 %1315 to i1
  br i1 %1316, label %1317, label %1332

1317:                                             ; preds = %.critedge476
  %1318 = getelementptr inbounds i8, ptr %42, i64 7848
  %1319 = load ptr, ptr %1318, align 8, !tbaa !244
  %.not422 = icmp eq ptr %1319, null
  br i1 %.not422, label %1332, label %1320

1320:                                             ; preds = %1317
  %1321 = getelementptr inbounds i8, ptr %1319, i64 928
  %1322 = load ptr, ptr %1321, align 8, !tbaa !162
  %1323 = load ptr, ptr %4, align 8, !tbaa !5
  %1324 = icmp eq ptr %1322, %1323
  br i1 %1324, label %1325, label %1332

1325:                                             ; preds = %1320
  %1326 = getelementptr inbounds i8, ptr %42, i64 5084
  %1327 = load i32, ptr %1326, align 4, !tbaa !197
  %1328 = icmp eq i32 %1327, 0
  br i1 %1328, label %1329, label %1332

1329:                                             ; preds = %1325
  %1330 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef 4644, i32 noundef 0)
  br i1 %1330, label %1331, label %1332

1331:                                             ; preds = %1329
  call void @_ZN5ImGui14LogToClipboardEi(i32 noundef 0)
  br label %1332

1332:                                             ; preds = %1317, %1320, %1325, %1329, %1331, %.critedge476
  %.pre568 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not400, label %1333, label %1344

1333:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #12
  %1334 = load float, ptr %33, align 8, !tbaa !271
  %1335 = getelementptr inbounds i8, ptr %.pre568, i64 100
  %1336 = load float, ptr %1335, align 4, !tbaa !180
  %1337 = fadd float %1334, %1336
  %1338 = getelementptr inbounds i8, ptr %33, i64 4
  %1339 = load float, ptr %1338, align 4, !tbaa !272
  %1340 = load float, ptr %881, align 8, !tbaa !273
  %1341 = fsub float %1340, %1336
  %1342 = getelementptr inbounds i8, ptr %33, i64 12
  %1343 = load float, ptr %1342, align 4, !tbaa !274
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %40, float noundef %1337, float noundef %1339, float noundef %1341, float noundef %1343)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre568, ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #12
  %.pre567 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1344

1344:                                             ; preds = %1333, %1332
  %1345 = phi ptr [ %.pre567, %1333 ], [ %.pre568, %1332 ]
  %1346 = getelementptr inbounds i8, ptr %1345, i64 626
  store i16 0, ptr %1346, align 2, !tbaa !275
  %1347 = getelementptr inbounds i8, ptr %1345, i64 624
  store i16 0, ptr %1347, align 8, !tbaa !276
  br i1 %.not390, label %1350, label %1348

1348:                                             ; preds = %1344
  %1349 = getelementptr inbounds i8, ptr %42, i64 9408
  store ptr %1345, ptr %1349, align 8, !tbaa !277
  br label %1350

1350:                                             ; preds = %1348, %1344
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef nonnull %1345, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %1351 = getelementptr inbounds i8, ptr %42, i64 7420
  %1352 = load i32, ptr %1351, align 4, !tbaa !278
  %.not423 = icmp eq i32 %1352, 0
  br i1 %.not423, label %1363, label %1353

1353:                                             ; preds = %1350
  %1354 = load ptr, ptr %4, align 8, !tbaa !5
  %1355 = getelementptr inbounds i8, ptr %1354, i64 16
  %1356 = load i32, ptr %1355, align 8, !tbaa !97
  %1357 = icmp eq i32 %1356, %1352
  br i1 %1357, label %1362, label %1358

1358:                                             ; preds = %1353
  %1359 = getelementptr inbounds i8, ptr %1354, i64 140
  %1360 = load i32, ptr %1359, align 4, !tbaa !279
  %1361 = icmp eq i32 %1360, %1352
  br i1 %1361, label %1362, label %1363

1362:                                             ; preds = %1358, %1353
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1363

1363:                                             ; preds = %1362, %1358, %1350
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br label %1373

._crit_edge570:                                   ; preds = %332, %333
  %1364 = trunc nuw i8 %.pre572 to i1
  br i1 %1364, label %1365, label %1366

1365:                                             ; preds = %._crit_edge570
  call void @_ZL29SetWindowActiveForSkipRefreshP11ImGuiWindow(ptr noundef nonnull %.pre569)
  %.pre573 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1366

1366:                                             ; preds = %1365, %._crit_edge570
  %1367 = phi ptr [ %.pre573, %1365 ], [ %.pre569, %._crit_edge570 ]
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1367)
  %1368 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #12
  %1369 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1045) %1368)
  %1370 = extractvalue { <2 x float>, <2 x float> } %1369, 0
  store <2 x float> %1370, ptr %41, align 8
  %1371 = getelementptr inbounds i8, ptr %41, i64 8
  %1372 = extractvalue { <2 x float>, <2 x float> } %1369, 1
  store <2 x float> %1372, ptr %1371, align 8
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef nonnull %1368, ptr noundef nonnull align 4 dereferenceable(16) %41)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #12
  br label %1373

1373:                                             ; preds = %1366, %1363
  %1374 = load ptr, ptr %4, align 8, !tbaa !5
  %1375 = getelementptr inbounds i8, ptr %1374, i64 208
  %1376 = load i8, ptr %1375, align 8, !tbaa !163, !range !92, !noundef !93
  %1377 = trunc nuw i8 %1376 to i1
  br i1 %1377, label %1381, label %1378

1378:                                             ; preds = %1373
  %1379 = getelementptr inbounds i8, ptr %1374, i64 544
  %1380 = getelementptr inbounds i8, ptr %1374, i64 552
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1379, ptr noundef nonnull align 4 dereferenceable(8) %1380, i1 noundef zeroext true)
  %.pre574 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1381

1381:                                             ; preds = %1378, %1373
  %1382 = phi ptr [ %.pre574, %1378 ], [ %1374, %1373 ]
  %1383 = getelementptr inbounds i8, ptr %1382, i64 204
  store i8 0, ptr %1383, align 4, !tbaa !280
  %1384 = getelementptr inbounds i8, ptr %1382, i64 216
  %1385 = load i16, ptr %1384, align 8, !tbaa !281
  %1386 = add i16 %1385, 1
  store i16 %1386, ptr %1384, align 8, !tbaa !281
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112) %208)
  %.pre577 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not371, label %.critedge486, label %1387

1387:                                             ; preds = %1381
  %1388 = getelementptr inbounds i8, ptr %.pre577, i64 208
  %1389 = load i8, ptr %1388, align 8, !tbaa !163, !range !92, !noundef !93
  %1390 = trunc nuw i8 %1389 to i1
  br i1 %1390, label %.critedge486.sink.split, label %1391

1391:                                             ; preds = %1387
  %1392 = and i32 %.1, 285212672
  %brmerge478.not = icmp eq i32 %1392, 16777216
  br i1 %brmerge478.not, label %1393, label %.critedge481

1393:                                             ; preds = %1391
  %1394 = and i32 %.1, 1
  %.not424 = icmp eq i32 %1394, 0
  br i1 %.not424, label %1395, label %1396

1395:                                             ; preds = %1393
  call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.3, i32 noundef 7649, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1396:                                             ; preds = %1393
  %1397 = getelementptr inbounds i8, ptr %.pre577, i64 24
  %1398 = load i32, ptr %1397, align 8, !tbaa !124
  %1399 = and i32 %1398, 256
  %.not425 = icmp eq i32 %1399, 0
  br i1 %.not425, label %1413, label %1400

1400:                                             ; preds = %1396
  %1401 = getelementptr inbounds i8, ptr %42, i64 7929
  %1402 = load i8, ptr %1401, align 1, !tbaa !282, !range !92, !noundef !93
  %1403 = trunc nuw i8 %1402 to i1
  br i1 %1403, label %1404, label %1413

1404:                                             ; preds = %1400
  %1405 = getelementptr inbounds i8, ptr %42, i64 7848
  %1406 = load ptr, ptr %1405, align 8, !tbaa !244
  %.not426 = icmp eq ptr %1406, null
  br i1 %.not426, label %1413, label %1407

1407:                                             ; preds = %1404
  %1408 = getelementptr inbounds i8, ptr %1406, i64 952
  %1409 = load ptr, ptr %1408, align 8, !tbaa !283
  %1410 = getelementptr inbounds i8, ptr %.pre577, i64 952
  %1411 = load ptr, ptr %1410, align 8, !tbaa !283
  %1412 = icmp eq ptr %1409, %1411
  br label %1413

1413:                                             ; preds = %1400, %1404, %1407, %1396
  %1414 = phi i1 [ false, %1396 ], [ false, %1404 ], [ false, %1400 ], [ %1412, %1407 ]
  %1415 = getelementptr inbounds i8, ptr %42, i64 9760
  %1416 = load i8, ptr %1415, align 8, !tbaa !284, !range !92, !noundef !93
  %1417 = trunc nuw i8 %1416 to i1
  %brmerge479 = select i1 %1417, i1 true, i1 %1414
  br i1 %brmerge479, label %1442, label %1418

1418:                                             ; preds = %1413
  %1419 = getelementptr inbounds i8, ptr %.pre577, i64 512
  %1420 = load float, ptr %1419, align 8, !tbaa !285
  %1421 = getelementptr inbounds i8, ptr %.pre577, i64 520
  %1422 = load float, ptr %1421, align 8, !tbaa !286
  %1423 = fcmp ult float %1420, %1422
  br i1 %1423, label %1424, label %1430

1424:                                             ; preds = %1418
  %1425 = getelementptr inbounds i8, ptr %.pre577, i64 516
  %1426 = load float, ptr %1425, align 4, !tbaa !287
  %1427 = getelementptr inbounds i8, ptr %.pre577, i64 524
  %1428 = load float, ptr %1427, align 4, !tbaa !288
  %1429 = fcmp ult float %1426, %1428
  br i1 %1429, label %1442, label %1430

1430:                                             ; preds = %1424, %1418
  %1431 = getelementptr inbounds i8, ptr %.pre577, i64 226
  %1432 = load i8, ptr %1431, align 2, !tbaa !203
  %1433 = icmp sgt i8 %1432, 0
  br i1 %1433, label %1438, label %1434

1434:                                             ; preds = %1430
  %1435 = getelementptr inbounds i8, ptr %.pre577, i64 227
  %1436 = load i8, ptr %1435, align 1, !tbaa !204
  %1437 = icmp sgt i8 %1436, 0
  br i1 %1437, label %1438, label %1440

1438:                                             ; preds = %1434, %1430
  %1439 = getelementptr inbounds i8, ptr %.pre577, i64 237
  store i8 1, ptr %1439, align 1, !tbaa !164
  br label %1442

1440:                                             ; preds = %1434
  %1441 = getelementptr inbounds i8, ptr %.pre577, i64 236
  store i8 1, ptr %1441, align 4, !tbaa !176
  br label %1442

1442:                                             ; preds = %1413, %1424, %1440, %1438
  br i1 %149, label %.critedge481, label %1443

1443:                                             ; preds = %1442
  %1444 = getelementptr inbounds i8, ptr %148, i64 205
  %1445 = load i8, ptr %1444, align 1, !tbaa !200, !range !92, !noundef !93
  %1446 = trunc nuw i8 %1445 to i1
  br i1 %1446, label %.thread517, label %1448

.thread517:                                       ; preds = %1443
  %1447 = getelementptr inbounds i8, ptr %.pre577, i64 236
  store i8 1, ptr %1447, align 4, !tbaa !176
  br label %1457

1448:                                             ; preds = %1443
  %1449 = getelementptr inbounds i8, ptr %148, i64 236
  %1450 = load i8, ptr %1449, align 4, !tbaa !176
  %1451 = icmp sgt i8 %1450, 0
  br i1 %1451, label %1452, label %.thread516

1452:                                             ; preds = %1448
  %1453 = getelementptr inbounds i8, ptr %.pre577, i64 236
  store i8 1, ptr %1453, align 4, !tbaa !176
  br label %.thread516

.thread516:                                       ; preds = %1448, %1452
  %1454 = getelementptr inbounds i8, ptr %148, i64 237
  %1455 = load i8, ptr %1454, align 1, !tbaa !164
  %1456 = icmp sgt i8 %1455, 0
  br i1 %1456, label %1457, label %.critedge481

1457:                                             ; preds = %.thread517, %.thread516
  %1458 = getelementptr inbounds i8, ptr %.pre577, i64 237
  store i8 1, ptr %1458, align 1, !tbaa !164
  br label %.critedge481

.critedge481:                                     ; preds = %.thread516, %1457, %1442, %1391
  %1459 = load float, ptr %43, align 4, !tbaa !289
  %1460 = fcmp ugt float %1459, 0.000000e+00
  %.phi.trans.insert575 = getelementptr inbounds i8, ptr %.pre577, i64 236
  br i1 %1460, label %1461, label %.thread591

.thread591:                                       ; preds = %.critedge481
  store i8 1, ptr %.phi.trans.insert575, align 4, !tbaa !176
  br label %.thread518

1461:                                             ; preds = %.critedge481
  %.pre576 = load i8, ptr %.phi.trans.insert575, align 4, !tbaa !176
  %1462 = icmp sgt i8 %.pre576, 0
  br i1 %1462, label %.thread518, label %1463

1463:                                             ; preds = %1461
  %1464 = getelementptr inbounds i8, ptr %.pre577, i64 237
  %1465 = load i8, ptr %1464, align 1, !tbaa !164
  %1466 = icmp sgt i8 %1465, 0
  br i1 %1466, label %.thread518, label %1467

1467:                                             ; preds = %1463
  %1468 = getelementptr inbounds i8, ptr %.pre577, i64 238
  %1469 = load i8, ptr %1468, align 2, !tbaa !177
  %1470 = icmp sgt i8 %1469, 0
  %1471 = zext i1 %1470 to i8
  br label %.thread518

.thread518:                                       ; preds = %.thread591, %1461, %1467, %1463
  %.not538 = phi i1 [ false, %1463 ], [ true, %1467 ], [ false, %1461 ], [ false, %.thread591 ]
  %1472 = phi i8 [ 1, %1463 ], [ %1471, %1467 ], [ 1, %1461 ], [ 1, %.thread591 ]
  %1473 = getelementptr inbounds i8, ptr %.pre577, i64 210
  store i8 %1472, ptr %1473, align 2, !tbaa !290
  %1474 = getelementptr inbounds i8, ptr %.pre577, i64 239
  %1475 = load i8, ptr %1474, align 1, !tbaa !291
  %1476 = icmp sgt i8 %1475, 0
  br i1 %1476, label %1477, label %1482

1477:                                             ; preds = %.thread518
  %1478 = add nsw i8 %1475, -1
  store i8 %1478, ptr %1474, align 1, !tbaa !291
  %1479 = getelementptr inbounds i8, ptr %.pre577, i64 20
  %1480 = load i32, ptr %1479, align 4, !tbaa !121
  %1481 = or i32 %1480, 197120
  store i32 %1481, ptr %1479, align 4, !tbaa !121
  br label %1482

1482:                                             ; preds = %1477, %.thread518
  %1483 = getelementptr inbounds i8, ptr %.pre577, i64 205
  %1484 = load i8, ptr %1483, align 1, !tbaa !200, !range !92, !noundef !93
  %1485 = trunc nuw i8 %1484 to i1
  br i1 %1485, label %1490, label %1486

1486:                                             ; preds = %1482
  %1487 = getelementptr inbounds i8, ptr %.pre577, i64 202
  %1488 = load i8, ptr %1487, align 2, !tbaa !165, !range !92, !noundef !93
  %1489 = trunc nuw i8 %1488 to i1
  %brmerge483.not = and i1 %.not538, %1489
  br i1 %brmerge483.not, label %.critedge486.sink.split, label %1490

1490:                                             ; preds = %1486, %1482
  %1491 = getelementptr inbounds i8, ptr %.pre577, i64 226
  %1492 = load i8, ptr %1491, align 2, !tbaa !203
  %1493 = icmp slt i8 %1492, 1
  br i1 %1493, label %1494, label %.critedge486.sink.split

1494:                                             ; preds = %1490
  %1495 = getelementptr inbounds i8, ptr %.pre577, i64 227
  %1496 = load i8, ptr %1495, align 1, !tbaa !204
  %1497 = icmp slt i8 %1496, 1
  br i1 %1497, label %1498, label %.critedge486.sink.split

1498:                                             ; preds = %1494
  %1499 = getelementptr inbounds i8, ptr %.pre577, i64 237
  %1500 = load i8, ptr %1499, align 1, !tbaa !164
  %1501 = icmp slt i8 %1500, 1
  %spec.select484 = zext i1 %1501 to i8
  br label %.critedge486.sink.split

.critedge486.sink.split:                          ; preds = %1387, %1494, %1490, %1486, %1498
  %.sink597 = phi i8 [ 0, %1494 ], [ 0, %1490 ], [ 0, %1486 ], [ %spec.select484, %1498 ], [ 1, %1387 ]
  %1502 = getelementptr inbounds i8, ptr %.pre577, i64 207
  store i8 %.sink597, ptr %1502, align 1, !tbaa !292
  br label %.critedge486

.critedge486:                                     ; preds = %.critedge486.sink.split, %1381
  %1503 = getelementptr inbounds i8, ptr %.pre577, i64 211
  %1504 = load i8, ptr %1503, align 1, !tbaa !114, !range !92, !noundef !93
  %1505 = trunc nuw i8 %1504 to i1
  br i1 %1505, label %1532, label %1506

1506:                                             ; preds = %.critedge486
  %1507 = getelementptr inbounds i8, ptr %42, i64 138
  %1508 = load i8, ptr %1507, align 2, !tbaa !293, !range !92, !noundef !93
  %1509 = trunc nuw i8 %1508 to i1
  %brmerge489.demorgan = and i1 %59, %1509
  br i1 %brmerge489.demorgan, label %1520, label %1510

1510:                                             ; preds = %1506
  %1511 = getelementptr inbounds i8, ptr %42, i64 139
  %1512 = load i8, ptr %1511, align 1, !tbaa !294, !range !92, !noundef !93
  %1513 = trunc nuw i8 %1512 to i1
  br i1 %1513, label %1514, label %1532

1514:                                             ; preds = %1510
  %1515 = getelementptr inbounds i8, ptr %42, i64 9968
  %1516 = load i8, ptr %1515, align 8, !tbaa !295
  %1517 = sext i8 %1516 to i32
  %1518 = load i32, ptr %77, align 8, !tbaa !112
  %1519 = icmp eq i32 %1518, %1517
  br i1 %1519, label %1520, label %1532

1520:                                             ; preds = %1506, %1514
  %1521 = getelementptr inbounds i8, ptr %.pre577, i64 226
  %1522 = load i8, ptr %1521, align 2, !tbaa !203
  %1523 = icmp sgt i8 %1522, 0
  br i1 %1523, label %1524, label %1526

1524:                                             ; preds = %1520
  %1525 = add nuw i8 %1522, 1
  store i8 %1525, ptr %1521, align 2, !tbaa !203
  br label %1526

1526:                                             ; preds = %1524, %1520
  %1527 = getelementptr inbounds i8, ptr %.pre577, i64 227
  %1528 = load i8, ptr %1527, align 1, !tbaa !204
  %1529 = icmp sgt i8 %1528, 0
  br i1 %1529, label %1530, label %1537

1530:                                             ; preds = %1526
  %1531 = add nuw i8 %1528, 1
  store i8 %1531, ptr %1527, align 1, !tbaa !204
  br label %1537

1532:                                             ; preds = %1510, %1514, %.critedge486
  %1533 = getelementptr inbounds i8, ptr %.pre577, i64 207
  %1534 = load i8, ptr %1533, align 1, !tbaa !292, !range !92, !noundef !93
  %1535 = trunc nuw i8 %1534 to i1
  %1536 = xor i1 %1535, true
  br label %1537

1537:                                             ; preds = %1526, %1530, %1532
  %.0328 = phi i1 [ %1536, %1532 ], [ false, %1530 ], [ false, %1526 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  ret i1 %.0328
}

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

; 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: 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 nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef) local_unnamed_addr #1

; 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 dso_local void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef) local_unnamed_addr #8

; 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 nounwind uwtable
declare hidden void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 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(111) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 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

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

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

; 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 nounwind uwtable
declare dso_local void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef) local_unnamed_addr #8

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

; 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> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208)) 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 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 { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1045)) local_unnamed_addr #8 align 2

; 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(64) 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(64) 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 dso_local noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef, i32 noundef) local_unnamed_addr #8

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

; 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 @_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
declare hidden void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #8

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112)) 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 4800}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 2984, !21, i64 3056, !6, i64 4216, !16, i64 4224, !16, i64 4228, !16, i64 4232, !16, i64 4236, !23, i64 4240, !26, i64 4776, !14, i64 4784, !14, i64 4788, !14, i64 4792, !14, i64 4796, !12, i64 4800, !12, i64 4801, !12, i64 4802, !12, i64 4803, !6, i64 4808, !7, i64 4816, !27, i64 4832, !27, i64 4848, !17, i64 4864, !14, i64 4868, !28, i64 4872, !28, i64 4888, !28, i64 4904, !29, i64 4920, !30, i64 4936, !14, i64 4952, !15, i64 4956, !14, i64 4964, !6, i64 4968, !6, i64 4976, !6, i64 4984, !6, i64 4992, !6, i64 5000, !6, i64 5008, !15, i64 5016, !14, i64 5024, !14, i64 5028, !16, i64 5032, !15, i64 5036, !15, i64 5044, !14, i64 5052, !14, i64 5056, !14, i64 5060, !14, i64 5064, !14, i64 5068, !16, i64 5072, !16, i64 5076, !12, i64 5080, !12, i64 5081, !12, i64 5082, !14, i64 5084, !14, i64 5088, !16, i64 5092, !12, i64 5096, !12, i64 5097, !12, i64 5098, !12, i64 5099, !12, i64 5100, !12, i64 5101, !12, i64 5102, !14, i64 5103, !15, i64 5104, !6, i64 5112, !32, i64 5120, !14, i64 5124, !33, i64 5128, !34, i64 5140, !14, i64 5148, !16, i64 5152, !26, i64 5160, !26, i64 5168, !26, i64 5176, !35, i64 5184, !7, i64 5204, !36, i64 7056, !14, i64 7400, !12, i64 7404, !14, i64 7408, !14, i64 7412, !14, i64 7416, !14, i64 7420, !38, i64 7424, !40, i64 7480, !42, i64 7560, !12, i64 7672, !14, i64 7676, !43, i64 7680, !44, i64 7696, !45, i64 7712, !46, i64 7728, !47, i64 7744, !48, i64 7760, !49, i64 7776, !49, i64 7792, !50, i64 7808, !51, i64 7824, !12, i64 7840, !12, i64 7841, !12, i64 7842, !12, i64 7843, !14, i64 7844, !6, i64 7848, !14, i64 7856, !52, i64 7860, !14, i64 7864, !14, i64 7868, !14, i64 7872, !14, i64 7876, !46, i64 7880, !14, i64 7896, !16, i64 7900, !14, i64 7904, !14, i64 7908, !32, i64 7912, !39, i64 7920, !7, i64 7928, !12, i64 7929, !12, i64 7930, !12, i64 7931, !53, i64 7936, !12, i64 7992, !12, i64 7993, !12, i64 7994, !14, i64 7996, !14, i64 8000, !14, i64 8004, !22, i64 8008, !22, i64 8012, !22, i64 8016, !41, i64 8020, !41, i64 8036, !14, i64 8052, !14, i64 8056, !14, i64 8060, !53, i64 8064, !53, i64 8120, !53, i64 8176, !53, i64 8232, !14, i64 8288, !14, i64 8292, !14, i64 8296, !14, i64 8300, !12, i64 8304, !12, i64 8305, !14, i64 8308, !14, i64 8312, !6, i64 8320, !6, i64 8328, !6, i64 8336, !16, i64 8344, !16, i64 8348, !12, i64 8352, !54, i64 8356, !15, i64 8360, !15, i64 8368, !16, i64 8376, !12, i64 8380, !12, i64 8381, !12, i64 8382, !14, i64 8384, !14, i64 8388, !14, i64 8392, !55, i64 8400, !41, i64 8464, !41, i64 8480, !14, i64 8496, !14, i64 8500, !16, i64 8504, !14, i64 8508, !14, i64 8512, !14, i64 8516, !14, i64 8520, !56, i64 8528, !7, i64 8544, !14, i64 8560, !57, i64 8568, !6, i64 8584, !14, i64 8592, !14, i64 8596, !58, i64 8600, !59, i64 8616, !61, i64 8656, !62, i64 8672, !6, i64 8688, !63, i64 8696, !65, i64 8736, !66, i64 8752, !67, i64 8768, !6, i64 8872, !14, i64 8880, !68, i64 8888, !69, i64 8904, !14, i64 8944, !14, i64 8948, !16, i64 8952, !16, i64 8956, !14, i64 8960, !14, i64 8964, !14, i64 8968, !16, i64 8972, !15, i64 8976, !71, i64 8984, !73, i64 9104, !74, i64 9128, !14, i64 9248, !34, i64 9252, !14, i64 9260, !14, i64 9264, !14, i64 9268, !14, i64 9272, !14, i64 9276, !16, i64 9280, !16, i64 9284, !14, i64 9288, !24, i64 9292, !76, i64 9308, !41, i64 9356, !12, i64 9372, !18, i64 9374, !16, i64 9376, !16, i64 9380, !16, i64 9384, !12, i64 9388, !12, i64 9389, !16, i64 9392, !16, i64 9396, !16, i64 9400, !18, i64 9404, !18, i64 9406, !6, i64 9408, !72, i64 9416, !77, i64 9432, !78, i64 9448, !80, i64 9552, !80, i64 9568, !12, i64 9584, !16, i64 9588, !81, i64 9592, !82, i64 9608, !83, i64 9624, !84, i64 9640, !85, i64 9656, !14, i64 9672, !7, i64 9680, !12, i64 9760, !14, i64 9764, !6, i64 9768, !6, i64 9776, !81, i64 9784, !6, i64 9800, !6, i64 9808, !16, i64 9816, !12, i64 9820, !14, i64 9824, !14, i64 9828, !14, i64 9832, !6, i64 9840, !6, i64 9848, !15, i64 9856, !12, i64 9864, !14, i64 9868, !86, i64 9872, !6, i64 9896, !14, i64 9904, !14, i64 9908, !81, i64 9912, !87, i64 9928, !14, i64 9952, !14, i64 9956, !7, i64 9960, !7, i64 9961, !12, i64 9962, !14, i64 9964, !7, i64 9968, !12, i64 9969, !7, i64 9970, !14, i64 9972, !16, i64 9976, !24, i64 9980, !88, i64 9996, !89, i64 10024, !91, i64 10064, !7, i64 10124, !14, i64 10364, !14, i64 10368, !16, i64 10372, !14, i64 10376, !14, i64 10380, !14, i64 10384, !72, i64 10392, !7, i64 10408}
!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, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !12, i64 124, !12, i64 125, !12, i64 126, !12, i64 127, !12, i64 128, !12, i64 129, !12, i64 130, !12, i64 131, !12, i64 132, !12, i64 133, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !12, i64 176, !12, i64 177, !12, i64 178, !12, i64 179, !12, i64 180, !12, i64 181, !12, i64 182, !16, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !15, i64 204, !6, i64 216, !15, i64 224, !7, i64 232, !16, i64 240, !16, i64 244, !17, i64 248, !12, i64 252, !12, i64 253, !12, i64 254, !12, i64 255, !14, i64 256, !7, i64 260, !12, i64 2724, !15, i64 2728, !7, i64 2736, !7, i64 2776, !7, i64 2816, !7, i64 2821, !7, i64 2826, !7, i64 2836, !7, i64 2846, !7, i64 2851, !7, i64 2856, !12, i64 2861, !12, i64 2862, !7, i64 2864, !7, i64 2884, !7, i64 2904, !16, i64 2924, !12, i64 2928, !12, i64 2929, !18, i64 2930, !19, i64 2936, !6, i64 2952, !6, i64 2960, !6, i64 2968}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !18, i64 56, !6, i64 64}
!21 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !22, 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, !16, i64 156, !15, i64 160, !22, i64 168, !15, i64 172, !15, i64 180, !16, i64 188, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !16, i64 224, !12, i64 228, !12, i64 229, !12, i64 230, !16, i64 232, !16, i64 236, !7, i64 240, !16, i64 1136, !16, i64 1140, !16, i64 1144, !14, i64 1148, !14, i64 1152}
!22 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!23 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !6, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !24, i64 40, !14, i64 56, !25, i64 64, !7, i64 80, !16, i64 464, !7, i64 468}
!24 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!25 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"double", !7, i64 0}
!27 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS12ImGuiStorage", !31, i64 0}
!31 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!33 = !{!"_ZTS24ImGuiDeactivatedItemData", !14, i64 0, !14, i64 4, !12, i64 8, !12, i64 9}
!34 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!35 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!36 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !37, i64 312, !37, i64 328}
!37 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!38 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !14, i64 8, !39, i64 16, !16, i64 24, !14, i64 28, !14, i64 32, !12, i64 36, !7, i64 37, !34, i64 38, !14, i64 48}
!39 = !{!"long long", !7, i64 0}
!40 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !41, i64 12, !41, i64 28, !41, i64 44, !41, i64 60, !14, i64 76}
!41 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!42 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !14, i64 56, !12, i64 60, !41, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100, !14, i64 108}
!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 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!53 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !41, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !39, i64 48}
!54 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!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, !30, 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, !30, 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 = !{!"_ZTS19ImGuiBoxSelectState", !14, i64 0, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 9, !15, i64 12, !15, i64 20, !15, i64 28, !6, i64 40, !12, i64 48, !41, i64 52, !41, i64 68, !41, i64 84}
!68 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!69 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !70, i64 0, !30, i64 16, !14, i64 32, !14, i64 36}
!70 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !14, i64 0, !14, i64 4, !6, i64 8}
!71 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !6, i64 32, !72, i64 40, !72, i64 56, !72, i64 72, !14, i64 88, !15, i64 92, !16, i64 100, !12, i64 104, !12, i64 105, !12, i64 106, !12, i64 107, !14, i64 108, !14, i64 112}
!72 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!73 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !72, i64 8}
!74 = !{!"_ZTS6ImFont", !61, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !75, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !16, i64 88, !16, i64 92, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !14, i64 112, !7, i64 116}
!75 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS21ImGuiComboPreviewData", !41, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!77 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{!"_ZTS22ImGuiTypingSelectState", !79, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!79 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!80 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!81 = !{!"_ZTS15ImGuiTextBuffer", !72, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !72, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !72, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!86 = !{!"_ZTS23ImGuiErrorRecoveryState", !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, !18, i64 18, !18, i64 20}
!87 = !{!"_ZTS14ImGuiTextIndex", !47, i64 0, !14, i64 16}
!88 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24}
!89 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !90, i64 16, !12, i64 32, !16, i64 36}
!90 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!91 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !18, i64 8, !7, i64 12}
!92 = !{i8 0, i8 2}
!93 = !{}
!94 = !{!11, !14, i64 4788}
!95 = !{!11, !14, i64 4784}
!96 = !{!11, !14, i64 4964}
!97 = !{!98, !14, i64 16}
!98 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !6, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !14, i64 148, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !12, i64 200, !12, i64 201, !12, i64 202, !12, i64 203, !12, i64 204, !12, i64 205, !12, i64 206, !12, i64 207, !12, i64 208, !12, i64 209, !12, i64 210, !12, i64 211, !12, i64 212, !12, i64 213, !7, i64 214, !7, i64 215, !18, i64 216, !18, i64 218, !18, i64 220, !18, i64 222, !18, i64 224, !7, i64 226, !7, i64 227, !12, i64 228, !22, i64 232, !7, i64 236, !7, i64 237, !7, i64 238, !7, i64 239, !14, i64 240, !14, i64 241, !14, i64 242, !15, i64 244, !15, i64 252, !77, i64 264, !99, i64 280, !41, i64 512, !41, i64 528, !41, i64 544, !41, i64 560, !41, i64 576, !41, i64 592, !41, i64 608, !102, i64 624, !102, i64 628, !14, i64 632, !16, i64 636, !16, i64 640, !30, i64 648, !103, i64 664, !16, i64 680, !14, i64 684, !6, i64 688, !104, i64 696, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !7, i64 976, !7, i64 984, !7, i64 1016, !14, i64 1032, !14, i64 1036, !14, i64 1040, !12, i64 1044}
!99 = !{!"_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, !100, i64 68, !100, i64 72, !100, i64 76, !15, i64 80, !52, i64 88, !18, i64 92, !18, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !101, i64 108, !14, i64 136, !14, i64 140, !28, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !16, i64 192, !16, i64 196, !61, i64 200, !61, i64 216}
!100 = !{!"_ZTS6ImVec1", !16, i64 0}
!101 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!102 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!103 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!104 = !{!"_ZTS10ImDrawList", !105, i64 0, !19, i64 16, !106, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !25, i64 80, !107, i64 96, !108, i64 128, !109, i64 152, !110, i64 168, !56, i64 184, !16, i64 200, !6, i64 208}
!105 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!106 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!107 = !{!"_ZTS15ImDrawCmdHeader", !24, i64 0, !39, i64 16, !14, i64 24}
!108 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !62, i64 8}
!109 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!110 = !{!"_ZTS8ImVectorIyE", !14, i64 0, !14, i64 4, !6, i64 8}
!111 = !{!98, !14, i64 632}
!112 = !{!11, !14, i64 4920}
!113 = !{!11, !12, i64 4801}
!114 = !{!98, !12, i64 211}
!115 = !{!11, !14, i64 7792}
!116 = !{!98, !14, i64 148}
!117 = !{!118, !14, i64 0}
!118 = !{!"_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}
!119 = !{!118, !6, i64 8}
!120 = !{!98, !12, i64 209}
!121 = !{!98, !14, i64 20}
!122 = !{!11, !14, i64 7560}
!123 = !{!11, !14, i64 7616}
!124 = !{!98, !14, i64 24}
!125 = !{!11, !26, i64 4776}
!126 = !{!98, !16, i64 636}
!127 = !{!98, !18, i64 220}
!128 = !{!11, !14, i64 4952}
!129 = !{!98, !18, i64 222}
!130 = !{!131, !6, i64 0}
!131 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !40, i64 8, !86, i64 88, !12, i64 110}
!132 = !{!98, !6, i64 912}
!133 = !{!98, !14, i64 264}
!134 = !{!11, !6, i64 4968}
!135 = !{i64 0, i64 4, !136, i64 4, i64 4, !136, i64 8, i64 4, !136, i64 12, i64 4, !137, i64 16, i64 4, !137, i64 20, i64 4, !137, i64 24, i64 4, !137, i64 28, i64 4, !137, i64 32, i64 4, !137, i64 36, i64 4, !137, i64 40, i64 4, !137, i64 44, i64 4, !137, i64 48, i64 4, !137, i64 52, i64 4, !137, i64 56, i64 4, !137, i64 60, i64 4, !137, i64 64, i64 4, !137, i64 68, i64 4, !137, i64 72, i64 4, !137, i64 76, i64 4, !136}
!136 = !{!14, !14, i64 0}
!137 = !{!16, !16, i64 0}
!138 = !{!11, !14, i64 7416}
!139 = !{!131, !12, i64 110}
!140 = !{!11, !6, i64 9896}
!141 = !{!11, !14, i64 9260}
!142 = !{!98, !6, i64 920}
!143 = !{!98, !6, i64 960}
!144 = !{!11, !14, i64 7412}
!145 = !{!98, !14, i64 1032}
!146 = !{!98, !52, i64 368}
!147 = !{!118, !14, i64 24}
!148 = !{!11, !14, i64 7564}
!149 = !{!11, !14, i64 7568}
!150 = !{!11, !16, i64 7592}
!151 = !{!11, !16, i64 7596}
!152 = !{!98, !16, i64 56}
!153 = !{!98, !16, i64 60}
!154 = !{!11, !16, i64 7608}
!155 = !{!98, !16, i64 168}
!156 = !{!98, !16, i64 176}
!157 = !{!11, !16, i64 7612}
!158 = !{!98, !16, i64 172}
!159 = !{!98, !16, i64 180}
!160 = !{!11, !12, i64 7620}
!161 = !{!11, !14, i64 7572}
!162 = !{!98, !6, i64 928}
!163 = !{!98, !12, i64 208}
!164 = !{!98, !7, i64 237}
!165 = !{!98, !12, i64 202}
!166 = !{!98, !12, i64 213}
!167 = !{i64 0, i64 4, !137, i64 4, i64 4, !137, i64 8, i64 4, !137, i64 12, i64 4, !137}
!168 = !{!98, !6, i64 688}
!169 = !{!98, !14, i64 456}
!170 = !{!98, !12, i64 1044}
!171 = !{!11, !6, i64 8336}
!172 = !{!98, !6, i64 8}
!173 = !{!98, !14, i64 136}
!174 = !{!175, !175, i64 0}
!175 = !{!"long", !7, i64 0}
!176 = !{!98, !7, i64 236}
!177 = !{!98, !7, i64 238}
!178 = !{!98, !16, i64 48}
!179 = !{!98, !16, i64 52}
!180 = !{!98, !16, i64 100}
!181 = !{!21, !16, i64 48}
!182 = !{!21, !16, i64 12}
!183 = !{!21, !16, i64 76}
!184 = !{!11, !16, i64 7660}
!185 = !{!98, !16, i64 380}
!186 = !{!11, !16, i64 7664}
!187 = !{!98, !16, i64 384}
!188 = !{!11, !16, i64 4224}
!189 = !{!11, !16, i64 3120}
!190 = !{!98, !16, i64 104}
!191 = !{!98, !16, i64 108}
!192 = !{!98, !16, i64 80}
!193 = !{!98, !16, i64 84}
!194 = !{!11, !6, i64 4976}
!195 = !{!11, !14, i64 5060}
!196 = !{!11, !14, i64 5064}
!197 = !{!11, !14, i64 5084}
!198 = !{!18, !18, i64 0}
!199 = !{!98, !12, i64 206}
!200 = !{!98, !12, i64 205}
!201 = !{!98, !16, i64 112}
!202 = !{!98, !16, i64 116}
!203 = !{!98, !7, i64 226}
!204 = !{!98, !7, i64 227}
!205 = !{!98, !12, i64 228}
!206 = !{!15, !16, i64 4}
!207 = !{!98, !22, i64 232}
!208 = !{!98, !14, i64 424}
!209 = !{!98, !16, i64 244}
!210 = !{!98, !16, i64 96}
!211 = !{!11, !12, i64 101}
!212 = !{!98, !7, i64 214}
!213 = !{!98, !7, i64 215}
!214 = !{!98, !16, i64 124}
!215 = !{!98, !12, i64 201}
!216 = !{!98, !12, i64 200}
!217 = !{!15, !16, i64 0}
!218 = !{!21, !16, i64 116}
!219 = !{!98, !16, i64 544}
!220 = !{!98, !16, i64 532}
!221 = !{!98, !16, i64 548}
!222 = !{!98, !16, i64 536}
!223 = !{!98, !16, i64 552}
!224 = !{!98, !16, i64 540}
!225 = !{!98, !16, i64 556}
!226 = !{!98, !16, i64 640}
!227 = !{!98, !16, i64 64}
!228 = !{!98, !16, i64 88}
!229 = !{!98, !16, i64 160}
!230 = !{!98, !16, i64 68}
!231 = !{!98, !16, i64 92}
!232 = !{!98, !16, i64 164}
!233 = !{!104, !14, i64 0}
!234 = !{!235, !14, i64 32}
!235 = !{!"_ZTS9ImDrawCmd", !24, i64 0, !39, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48, !14, i64 56, !14, i64 60}
!236 = !{!11, !6, i64 4216}
!237 = !{!74, !6, i64 64}
!238 = !{!239, !39, i64 8}
!239 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !39, 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, !240, i64 104, !241, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!240 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!241 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!242 = !{!104, !14, i64 32}
!243 = !{!11, !6, i64 8320}
!244 = !{!11, !6, i64 7848}
!245 = !{!98, !6, i64 944}
!246 = !{!98, !16, i64 120}
!247 = !{!98, !16, i64 528}
!248 = !{!98, !16, i64 152}
!249 = !{!98, !16, i64 560}
!250 = !{!98, !16, i64 156}
!251 = !{!98, !16, i64 564}
!252 = !{!98, !16, i64 616}
!253 = !{!98, !16, i64 620}
!254 = !{!98, !16, i64 348}
!255 = !{!98, !18, i64 374}
!256 = !{!98, !18, i64 372}
!257 = !{!98, !12, i64 376}
!258 = !{!98, !12, i64 377}
!259 = !{!98, !12, i64 378}
!260 = !{!98, !12, i64 379}
!261 = !{!98, !14, i64 416}
!262 = !{!98, !14, i64 420}
!263 = !{!98, !6, i64 440}
!264 = !{!98, !6, i64 448}
!265 = !{!98, !14, i64 460}
!266 = !{!98, !14, i64 464}
!267 = !{!98, !16, i64 472}
!268 = !{!98, !16, i64 476}
!269 = !{!98, !14, i64 468}
!270 = !{!11, !12, i64 103}
!271 = !{!41, !16, i64 0}
!272 = !{!41, !16, i64 4}
!273 = !{!41, !16, i64 8}
!274 = !{!41, !16, i64 12}
!275 = !{!98, !18, i64 626}
!276 = !{!98, !18, i64 624}
!277 = !{!11, !6, i64 9408}
!278 = !{!11, !14, i64 7420}
!279 = !{!98, !14, i64 140}
!280 = !{!98, !12, i64 204}
!281 = !{!98, !18, i64 216}
!282 = !{!11, !12, i64 7929}
!283 = !{!98, !6, i64 952}
!284 = !{!11, !12, i64 9760}
!285 = !{!98, !16, i64 512}
!286 = !{!98, !16, i64 520}
!287 = !{!98, !16, i64 516}
!288 = !{!98, !16, i64 524}
!289 = !{!21, !16, i64 0}
!290 = !{!98, !12, i64 210}
!291 = !{!98, !7, i64 239}
!292 = !{!98, !12, i64 207}
!293 = !{!11, !12, i64 138}
!294 = !{!11, !12, i64 139}
!295 = !{!11, !7, i64 9968}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass