; LLVM IR from khushmmehta/Scorch-V :: src/vendor/imgui/imgui.ll (ZN5ImGui5BeginEPKcPbi)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.3, %struct.ImVector.3, i32, i32, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.5, %struct.ImGuiStorage, i32, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, i8, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector.14, %struct.ImVector.15, i32, %struct.ImVector.16, float, ptr, ptr, ptr, i32, %struct.ImGuiPlatformMonitor, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImGuiNavItemData, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.17, [16 x i8], i32, %struct.ImVector.18, ptr, i32, %struct.ImVector.19, %struct.ImPool, %struct.ImVector.21, %struct.ImVector.22, ptr, %struct.ImPool.23, %struct.ImVector.25, %struct.ImVector.26, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, float, float, i8, i8, float, float, float, float, i16, i16, i16, %struct.ImVector.27, %struct.ImVector.11, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i32, [4 x i8], %struct.ImGuiDockContext, ptr, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.31, %struct.ImChunkStream, %struct.ImChunkStream.32, %struct.ImVector.33, i32, [11 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i8, i8, i8, i8, i8, i32, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, ptr, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.27 }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, [666 x i32], [666 x i8], [16 x float], ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i32, i8, i8, i8, i8, i32, [666 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], i8, [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVector.0, %struct.ImVector.1 }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, float, float, [55 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.2, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.6 }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.7, %struct.ImVector.7 }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, float, [4 x i8], i64, i32, i8, [3 x i8] }>
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2 }
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, ptr }
%struct.ImGuiNavItemData = type <{ ptr, i32, i32, %struct.ImRect, i32, [4 x i8], i64, float, float, float, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.20, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImPool.23 = type { %struct.ImVector.24, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.27, %struct.ImVector.27, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.27 }
%struct.ImFont = type <{ %struct.ImVector.21, float, float, %struct.ImVector, %struct.ImVector.28, ptr, ptr, ptr, i16, i16, i16, i16, float, float, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiTypingSelectState = type <{ %struct.ImGuiTypingSelectRequest, [64 x i8], i32, i32, float, i8, [3 x i8] }>
%struct.ImGuiTypingSelectRequest = type { i32, i32, ptr, i8, i8, i8 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.29, %struct.ImVector.30, i8, [7 x i8] }>
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.27 }
%struct.ImChunkStream.32 = type { %struct.ImVector.27 }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.27 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.12, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, 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.27 = type { i32, i32, ptr }
%struct.ImGuiWindow = type { ptr, ptr, i32, i32, i32, i32, %struct.ImGuiWindowClass, ptr, i32, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i32, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.11, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, i32, float, float, %struct.ImGuiStorage, %struct.ImVector.37, float, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, i8, i16, %struct.ImGuiWindowDockStyle, ptr, ptr, i32, i32, %struct.ImRect }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.4, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.21, %struct.ImVector.21 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.38, %struct.ImVector, %struct.ImVector.39, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.40, %struct.ImVector.41, %struct.ImVector.2, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImVector.41 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.22 }
%struct.ImGuiWindowDockStyle = type { [6 x i32] }
%struct.ImGuiPopupData = type <{ i32, [4 x i8], ptr, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiDockNode = type <{ i32, i32, i32, i32, i32, i32, ptr, [2 x ptr], %struct.ImVector.4, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, %struct.ImGuiWindowClass, i32, [4 x i8], ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i16, i8, [5 x i8] }>
%struct.ImGuiViewportP = type { %struct.ImGuiViewport.base, ptr, i32, i32, i32, i32, %struct.ImVec2, float, float, i8, i16, [2 x i32], [2 x ptr], %struct.ImDrawData, %struct.ImDrawDataBuilder, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiViewport.base = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8 }>
%struct.ImDrawData = type { i8, i32, i32, i32, %struct.ImVector.50, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImVector.50 = type { i32, i32, ptr }
%struct.ImDrawDataBuilder = type { [2 x ptr], %struct.ImVector.50 }
%struct.ImGuiViewport = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, [4 x i8] }>
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImFontAtlas = type <{ i32, [4 x i8], ptr, i32, i32, i8, [7 x i8], ptr, i8, i8, [6 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.10, %struct.ImVector.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 [81 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [27 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

124:                                              ; preds = %122
  br label %127

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

126:                                              ; No predecessors!
  br label %127

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

132:                                              ; preds = %127
  br label %135

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

134:                                              ; No predecessors!
  br label %135

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

143:                                              ; preds = %135
  br label %146

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

145:                                              ; No predecessors!
  br label %146

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

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

158:                                              ; preds = %154, %146
  %159 = load i32, ptr %7, align 4, !tbaa !9
  %160 = and i32 %159, 197120
  %161 = icmp eq i32 %160, 197120
  br i1 %161, label %162, label %165

162:                                              ; preds = %158
  %163 = load i32, ptr %7, align 4, !tbaa !9
  %164 = or i32 %163, 6
  store i32 %164, ptr %7, align 4, !tbaa !9
  br label %165

165:                                              ; preds = %162, %158
  %166 = load i32, ptr %7, align 4, !tbaa !9
  %167 = and i32 %166, 8388608
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %169, label %177

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

173:                                              ; preds = %169
  br label %176

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

175:                                              ; No predecessors!
  br label %176

176:                                              ; preds = %175, %173
  br label %177

177:                                              ; preds = %176, %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #13
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ImGuiContext, ptr %178, i32 0, i32 12
  %180 = load i32, ptr %179, align 8, !tbaa !95
  store i32 %180, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %181 = load ptr, ptr %10, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.ImGuiWindow, ptr %181, i32 0, i32 80
  %183 = load i32, ptr %182, align 8, !tbaa !97
  %184 = load i32, ptr %12, align 4, !tbaa !9
  %185 = icmp ne i32 %183, %184
  %186 = zext i1 %185 to i8
  store i8 %186, ptr %13, align 1, !tbaa !96
  %187 = load ptr, ptr %8, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.ImGuiContext, ptr %187, i32 0, i32 29
  %189 = getelementptr inbounds %struct.ImVector.5, ptr %188, i32 0, i32 0
  %190 = load i32, ptr %189, align 8, !tbaa !112
  %191 = icmp eq i32 %190, 0
  br i1 %191, label %192, label %197

192:                                              ; preds = %177
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.ImGuiContext, ptr %193, i32 0, i32 17
  %195 = load i8, ptr %194, align 1, !tbaa !113, !range !92, !noundef !93
  %196 = trunc i8 %195 to i1
  br label %197

197:                                              ; preds = %192, %177
  %198 = phi i1 [ false, %177 ], [ %196, %192 ]
  %199 = load ptr, ptr %10, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiWindow, ptr %199, i32 0, i32 47
  %201 = zext i1 %198 to i8
  store i8 %201, ptr %200, align 1, !tbaa !114
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %202 = load ptr, ptr %10, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiWindow, ptr %202, i32 0, i32 80
  %204 = load i32, ptr %203, align 8, !tbaa !97
  %205 = load i32, ptr %12, align 4, !tbaa !9
  %206 = sub nsw i32 %205, 1
  %207 = icmp slt i32 %204, %206
  %208 = zext i1 %207 to i8
  store i8 %208, ptr %14, align 1, !tbaa !96
  %209 = load i32, ptr %7, align 4, !tbaa !9
  %210 = and i32 %209, 67108864
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %246

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

246:                                              ; preds = %212, %197
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #13
  %247 = load ptr, ptr %10, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.ImGuiWindow, ptr %247, i32 0, i32 45
  %249 = load i8, ptr %248, align 1, !tbaa !120, !range !92, !noundef !93
  %250 = trunc i8 %249 to i1
  %251 = zext i1 %250 to i8
  store i8 %251, ptr %16, align 1, !tbaa !96
  %252 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %253 = trunc i8 %252 to i1
  br i1 %253, label %254, label %313

254:                                              ; preds = %246
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %257 = trunc i8 %256 to i1
  %258 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef %255, i1 noundef zeroext %257, i32 noundef %258)
  %259 = load i8, ptr %14, align 1, !tbaa !96, !range !92, !noundef !93
  %260 = trunc i8 %259 to i1
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.ImGuiWindow, ptr %261, i32 0, i32 45
  %263 = zext i1 %260 to i8
  store i8 %263, ptr %262, align 1, !tbaa !120
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiWindow, ptr %264, i32 0, i32 45
  %266 = load i8, ptr %265, align 1, !tbaa !120, !range !92, !noundef !93
  %267 = trunc i8 %266 to i1
  br i1 %267, label %268, label %270

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

270:                                              ; preds = %268, %254
  %271 = load ptr, ptr %10, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImGuiWindow, ptr %271, i32 0, i32 3
  %273 = load i32, ptr %272, align 4, !tbaa !121
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.ImGuiWindow, ptr %274, i32 0, i32 4
  store i32 %273, ptr %275, align 8, !tbaa !122
  %276 = load i32, ptr %7, align 4, !tbaa !9
  %277 = load ptr, ptr %10, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ImGuiWindow, ptr %277, i32 0, i32 3
  store i32 %276, ptr %278, align 4, !tbaa !121
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.ImGuiContext, ptr %279, i32 0, i32 80
  %281 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %280, i32 0, i32 0
  %282 = load i32, ptr %281, align 8, !tbaa !123
  %283 = and i32 %282, 256
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %285, label %290

285:                                              ; preds = %270
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiContext, ptr %286, i32 0, i32 80
  %288 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %287, i32 0, i32 10
  %289 = load i32, ptr %288, align 4, !tbaa !124
  br label %291

290:                                              ; preds = %270
  br label %291

291:                                              ; preds = %290, %285
  %292 = phi i32 [ %289, %285 ], [ 0, %290 ]
  %293 = load ptr, ptr %10, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.ImGuiWindow, ptr %293, i32 0, i32 5
  store i32 %292, ptr %294, align 4, !tbaa !125
  %295 = load i32, ptr %12, align 4, !tbaa !9
  %296 = load ptr, ptr %10, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.ImGuiWindow, ptr %296, i32 0, i32 80
  store i32 %295, ptr %297, align 8, !tbaa !97
  %298 = load ptr, ptr %8, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiContext, ptr %298, i32 0, i32 11
  %300 = load double, ptr %299, align 8, !tbaa !126
  %301 = fptrunc double %300 to float
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ImGuiWindow, ptr %302, i32 0, i32 82
  store float %301, ptr %303, align 8, !tbaa !127
  %304 = load ptr, ptr %10, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiWindow, ptr %304, i32 0, i32 54
  store i16 0, ptr %305, align 4, !tbaa !128
  %306 = load ptr, ptr %8, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ImGuiContext, ptr %306, i32 0, i32 31
  %308 = load i32, ptr %307, align 8, !tbaa !129
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %307, align 8, !tbaa !129
  %310 = trunc i32 %308 to i16
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.ImGuiWindow, ptr %311, i32 0, i32 55
  store i16 %310, ptr %312, align 2, !tbaa !130
  br label %317

313:                                              ; preds = %246
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.ImGuiWindow, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 4, !tbaa !121
  store i32 %316, ptr %7, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %313, %291
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiWindow, ptr %318, i32 0, i32 109
  %320 = load ptr, ptr %319, align 8, !tbaa !131
  %321 = icmp eq ptr %320, null
  br i1 %321, label %327, label %322

322:                                              ; preds = %317
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiWindow, ptr %323, i32 0, i32 110
  %325 = load ptr, ptr %324, align 8, !tbaa !132
  %326 = icmp eq ptr %325, null
  br label %327

327:                                              ; preds = %322, %317
  %328 = phi i1 [ true, %317 ], [ %326, %322 ]
  br i1 %328, label %329, label %330

329:                                              ; preds = %327
  br label %332

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

331:                                              ; No predecessors!
  br label %332

332:                                              ; preds = %331, %329
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiContext, ptr %333, i32 0, i32 80
  %335 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %334, i32 0, i32 0
  %336 = load i32, ptr %335, align 8, !tbaa !123
  %337 = and i32 %336, 1024
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %349

339:                                              ; preds = %332
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  %341 = load ptr, ptr %8, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 80
  %343 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %342, i32 0, i32 18
  %344 = load i32, ptr %343, align 8, !tbaa !133
  %345 = load ptr, ptr %8, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ImGuiContext, ptr %345, i32 0, i32 80
  %347 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %346, i32 0, i32 4
  %348 = load i32, ptr %347, align 8, !tbaa !134
  call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef %340, i32 noundef %344, i32 noundef %348)
  br label %349

349:                                              ; preds = %339, %332
  %350 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %351 = trunc i8 %350 to i1
  br i1 %351, label %352, label %460

352:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #13
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.ImGuiWindow, ptr %353, i32 0, i32 111
  %355 = load i32, ptr %354, align 8, !tbaa !135
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %362, label %357

357:                                              ; preds = %352
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiWindow, ptr %358, i32 0, i32 109
  %360 = load ptr, ptr %359, align 8, !tbaa !131
  %361 = icmp ne ptr %360, null
  br label %362

362:                                              ; preds = %357, %352
  %363 = phi i1 [ true, %352 ], [ %361, %357 ]
  %364 = zext i1 %363 to i8
  store i8 %364, ptr %17, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #13
  %365 = load i8, ptr %17, align 1, !tbaa !96, !range !92, !noundef !93
  %366 = trunc i8 %365 to i1
  br i1 %366, label %370, label %367

367:                                              ; preds = %362
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef %368)
  br label %370

370:                                              ; preds = %367, %362
  %371 = phi i1 [ false, %362 ], [ %369, %367 ]
  %372 = zext i1 %371 to i8
  store i8 %372, ptr %18, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #13
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiWindow, ptr %373, i32 0, i32 106
  %375 = load i8, ptr %374, align 1
  %376 = lshr i8 %375, 1
  %377 = and i8 %376, 1
  %378 = trunc i8 %377 to i1
  %379 = zext i1 %378 to i8
  store i8 %379, ptr %19, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiWindow, ptr %380, i32 0, i32 106
  %382 = load i8, ptr %381, align 1
  %383 = lshr i8 %382, 2
  %384 = and i8 %383, 1
  %385 = trunc i8 %384 to i1
  %386 = zext i1 %385 to i8
  store i8 %386, ptr %20, align 1, !tbaa !96
  %387 = load i8, ptr %17, align 1, !tbaa !96, !range !92, !noundef !93
  %388 = trunc i8 %387 to i1
  br i1 %388, label %392, label %389

389:                                              ; preds = %370
  %390 = load i8, ptr %18, align 1, !tbaa !96, !range !92, !noundef !93
  %391 = trunc i8 %390 to i1
  br i1 %391, label %392, label %443

392:                                              ; preds = %389, %370
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef %393, ptr noundef %394)
  %395 = load ptr, ptr %10, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.ImGuiWindow, ptr %395, i32 0, i32 3
  %397 = load i32, ptr %396, align 4, !tbaa !121
  store i32 %397, ptr %7, align 4, !tbaa !9
  %398 = load ptr, ptr %10, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ImGuiWindow, ptr %398, i32 0, i32 106
  %400 = load i8, ptr %399, align 1
  %401 = and i8 %400, 1
  %402 = trunc i8 %401 to i1
  br i1 %402, label %403, label %417

403:                                              ; preds = %392
  %404 = load ptr, ptr %10, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiWindow, ptr %404, i32 0, i32 109
  %406 = load ptr, ptr %405, align 8, !tbaa !131
  %407 = icmp ne ptr %406, null
  br i1 %407, label %408, label %409

408:                                              ; preds = %403
  br label %411

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

410:                                              ; No predecessors!
  br label %411

411:                                              ; preds = %410, %408
  %412 = load ptr, ptr %8, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.ImGuiContext, ptr %412, i32 0, i32 80
  %414 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %413, i32 0, i32 0
  %415 = load i32, ptr %414, align 8, !tbaa !123
  %416 = and i32 %415, -17
  store i32 %416, ptr %414, align 8, !tbaa !123
  br label %417

417:                                              ; preds = %411, %392
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.ImGuiWindow, ptr %418, i32 0, i32 106
  %420 = load i8, ptr %419, align 1
  %421 = lshr i8 %420, 2
  %422 = and i8 %421, 1
  %423 = trunc i8 %422 to i1
  br i1 %423, label %424, label %442

424:                                              ; preds = %417
  %425 = load i8, ptr %20, align 1, !tbaa !96, !range !92, !noundef !93
  %426 = trunc i8 %425 to i1
  br i1 %426, label %442, label %427

427:                                              ; preds = %424
  %428 = load i8, ptr %19, align 1, !tbaa !96, !range !92, !noundef !93
  %429 = trunc i8 %428 to i1
  br i1 %429, label %430, label %442

430:                                              ; preds = %427
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiWindow, ptr %431, i32 0, i32 45
  %433 = load i8, ptr %432, align 1, !tbaa !120, !range !92, !noundef !93
  %434 = trunc i8 %433 to i1
  br i1 %434, label %442, label %435

435:                                              ; preds = %430
  %436 = load i8, ptr %16, align 1, !tbaa !96, !range !92, !noundef !93
  %437 = trunc i8 %436 to i1
  br i1 %437, label %442, label %438

438:                                              ; preds = %435
  %439 = load ptr, ptr %10, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiWindow, ptr %439, i32 0, i32 45
  store i8 1, ptr %440, align 1, !tbaa !120
  %441 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %441, i32 noundef 8, i1 noundef zeroext true)
  br label %442

442:                                              ; preds = %438, %435, %430, %427, %424, %417
  br label %459

443:                                              ; preds = %389
  %444 = load ptr, ptr %10, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiWindow, ptr %444, i32 0, i32 106
  %446 = load i8, ptr %445, align 1
  %447 = and i8 %446, -5
  %448 = or i8 %447, 0
  store i8 %448, ptr %445, align 1
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.ImGuiWindow, ptr %449, i32 0, i32 106
  %451 = load i8, ptr %450, align 1
  %452 = and i8 %451, -3
  %453 = or i8 %452, 0
  store i8 %453, ptr %450, align 1
  %454 = load ptr, ptr %10, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiWindow, ptr %454, i32 0, i32 106
  %456 = load i8, ptr %455, align 1
  %457 = and i8 %456, -2
  %458 = or i8 %457, 0
  store i8 %458, ptr %455, align 1
  br label %459

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

460:                                              ; preds = %459, %349
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #13
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.ImGuiWindow, ptr %461, i32 0, i32 106
  %463 = load i8, ptr %462, align 1
  %464 = and i8 %463, 1
  %465 = trunc i8 %464 to i1
  br i1 %465, label %466, label %479

466:                                              ; preds = %460
  %467 = load ptr, ptr %10, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiWindow, ptr %467, i32 0, i32 109
  %469 = load ptr, ptr %468, align 8, !tbaa !131
  %470 = getelementptr inbounds %struct.ImGuiDockNode, ptr %469, i32 0, i32 17
  %471 = load ptr, ptr %470, align 8, !tbaa !136
  %472 = icmp ne ptr %471, null
  br i1 %472, label %473, label %479

473:                                              ; preds = %466
  %474 = load ptr, ptr %10, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.ImGuiWindow, ptr %474, i32 0, i32 109
  %476 = load ptr, ptr %475, align 8, !tbaa !131
  %477 = getelementptr inbounds %struct.ImGuiDockNode, ptr %476, i32 0, i32 17
  %478 = load ptr, ptr %477, align 8, !tbaa !136
  br label %492

479:                                              ; preds = %466, %460
  %480 = load ptr, ptr %8, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.ImGuiContext, ptr %480, i32 0, i32 29
  %482 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %481)
  br i1 %482, label %483, label %484

483:                                              ; preds = %479
  br label %490

484:                                              ; preds = %479
  %485 = load ptr, ptr %8, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.ImGuiContext, ptr %485, i32 0, i32 29
  %487 = call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %486)
  %488 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %487, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !140
  br label %490

490:                                              ; preds = %484, %483
  %491 = phi ptr [ null, %483 ], [ %489, %484 ]
  br label %492

492:                                              ; preds = %490, %473
  %493 = phi ptr [ %478, %473 ], [ %491, %490 ]
  store ptr %493, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  %494 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %495 = trunc i8 %494 to i1
  br i1 %495, label %496, label %505

496:                                              ; preds = %492
  %497 = load i32, ptr %7, align 4, !tbaa !9
  %498 = and i32 %497, 83886080
  %499 = icmp ne i32 %498, 0
  br i1 %499, label %500, label %502

500:                                              ; preds = %496
  %501 = load ptr, ptr %21, align 8, !tbaa !5
  br label %503

502:                                              ; preds = %496
  br label %503

503:                                              ; preds = %502, %500
  %504 = phi ptr [ %501, %500 ], [ null, %502 ]
  br label %509

505:                                              ; preds = %492
  %506 = load ptr, ptr %10, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiWindow, ptr %506, i32 0, i32 91
  %508 = load ptr, ptr %507, align 8, !tbaa !143
  br label %509

509:                                              ; preds = %505, %503
  %510 = phi ptr [ %504, %503 ], [ %508, %505 ]
  store ptr %510, ptr %22, align 8, !tbaa !5
  %511 = load ptr, ptr %22, align 8, !tbaa !5
  %512 = icmp ne ptr %511, null
  br i1 %512, label %518, label %513

513:                                              ; preds = %509
  %514 = load i32, ptr %7, align 4, !tbaa !9
  %515 = and i32 %514, 16777216
  %516 = icmp ne i32 %515, 0
  %517 = xor i1 %516, true
  br label %518

518:                                              ; preds = %513, %509
  %519 = phi i1 [ true, %509 ], [ %517, %513 ]
  br i1 %519, label %520, label %521

520:                                              ; preds = %518
  br label %523

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

522:                                              ; No predecessors!
  br label %523

523:                                              ; preds = %522, %520
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.ImGuiWindow, ptr %524, i32 0, i32 69
  %526 = getelementptr inbounds %struct.ImVector.11, ptr %525, i32 0, i32 0
  %527 = load i32, ptr %526, align 8, !tbaa !144
  %528 = icmp eq i32 %527, 0
  br i1 %528, label %529, label %534

529:                                              ; preds = %523
  %530 = load ptr, ptr %10, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.ImGuiWindow, ptr %530, i32 0, i32 69
  %532 = load ptr, ptr %10, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiWindow, ptr %532, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %531, ptr noundef nonnull align 4 dereferenceable(4) %533)
  br label %534

534:                                              ; preds = %529, %523
  %535 = load ptr, ptr %10, align 8, !tbaa !5
  %536 = load ptr, ptr %8, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.ImGuiContext, ptr %536, i32 0, i32 33
  store ptr %535, ptr %537, align 8, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 88, ptr %23) #13
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %23)
  %538 = load ptr, ptr %10, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 0
  store ptr %538, ptr %539, align 8, !tbaa !140
  %540 = load ptr, ptr %8, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 79
  %542 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %542, ptr align 8 %541, i64 60, i1 false), !tbaa.struct !146
  %543 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %23, i32 0, i32 2
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %543, ptr noundef %544)
  %545 = load ptr, ptr %8, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 29
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %546, ptr noundef nonnull align 8 dereferenceable(86) %23)
  %547 = load i32, ptr %7, align 4, !tbaa !9
  %548 = and i32 %547, 268435456
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %555

550:                                              ; preds = %534
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiContext, ptr %551, i32 0, i32 91
  %553 = load i32, ptr %552, align 8, !tbaa !148
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %552, align 8, !tbaa !148
  br label %555

555:                                              ; preds = %550, %534
  %556 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %557 = trunc i8 %556 to i1
  br i1 %557, label %558, label %565

558:                                              ; preds = %555
  %559 = load ptr, ptr %10, align 8, !tbaa !5
  %560 = load i32, ptr %7, align 4, !tbaa !9
  %561 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %559, i32 noundef %560, ptr noundef %561)
  %562 = load ptr, ptr %21, align 8, !tbaa !5
  %563 = load ptr, ptr %10, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiWindow, ptr %563, i32 0, i32 92
  store ptr %562, ptr %564, align 8, !tbaa !149
  br label %565

565:                                              ; preds = %558, %555
  %566 = load ptr, ptr %10, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiWindow, ptr %566, i32 0, i32 2
  %568 = load i32, ptr %567, align 8, !tbaa !150
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %568)
  %569 = load ptr, ptr %8, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiContext, ptr %569, i32 0, i32 75
  %571 = load i32, ptr %570, align 4, !tbaa !151
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiWindow, ptr %572, i32 0, i32 102
  store i32 %571, ptr %573, align 8, !tbaa !152
  %574 = load ptr, ptr %8, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiContext, ptr %574, i32 0, i32 33
  store ptr null, ptr %575, align 8, !tbaa !145
  %576 = load i32, ptr %7, align 4, !tbaa !9
  %577 = and i32 %576, 67108864
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %604

579:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #13
  %580 = load ptr, ptr %8, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.ImGuiContext, ptr %580, i32 0, i32 88
  %582 = load ptr, ptr %8, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.ImGuiContext, ptr %582, i32 0, i32 89
  %584 = getelementptr inbounds %struct.ImVector.14, ptr %583, i32 0, i32 0
  %585 = load i32, ptr %584, align 8, !tbaa !115
  %586 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %581, i32 noundef %585)
  store ptr %586, ptr %24, align 8, !tbaa !5
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = load ptr, ptr %24, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.ImGuiPopupData, ptr %588, i32 0, i32 2
  store ptr %587, ptr %589, align 8, !tbaa !119
  %590 = load ptr, ptr %21, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.ImGuiWindow, ptr %590, i32 0, i32 70
  %592 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %591, i32 0, i32 15
  %593 = load i32, ptr %592, align 8, !tbaa !153
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.ImGuiPopupData, ptr %594, i32 0, i32 4
  store i32 %593, ptr %595, align 8, !tbaa !154
  %596 = load ptr, ptr %8, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ImGuiContext, ptr %596, i32 0, i32 89
  %598 = load ptr, ptr %24, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %597, ptr noundef nonnull align 8 dereferenceable(52) %598)
  %599 = load ptr, ptr %24, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiPopupData, ptr %599, i32 0, i32 0
  %601 = load i32, ptr %600, align 8, !tbaa !117
  %602 = load ptr, ptr %10, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiWindow, ptr %602, i32 0, i32 57
  store i32 %601, ptr %603, align 4, !tbaa !116
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %604

604:                                              ; preds = %579, %565
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  store i8 0, ptr %25, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #13
  store i8 0, ptr %26, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #13
  store i8 0, ptr %27, align 1, !tbaa !96
  %605 = load ptr, ptr %8, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImGuiContext, ptr %605, i32 0, i32 80
  %607 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %606, i32 0, i32 0
  %608 = load i32, ptr %607, align 8, !tbaa !123
  %609 = and i32 %608, 1
  %610 = icmp ne i32 %609, 0
  br i1 %610, label %611, label %665

611:                                              ; preds = %604
  %612 = load ptr, ptr %10, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImGuiWindow, ptr %612, i32 0, i32 66
  %614 = load i32, ptr %613, align 4
  %615 = shl i32 %614, 24
  %616 = ashr i32 %615, 24
  %617 = load ptr, ptr %8, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImGuiContext, ptr %617, i32 0, i32 80
  %619 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %618, i32 0, i32 1
  %620 = load i32, ptr %619, align 4, !tbaa !155
  %621 = and i32 %616, %620
  %622 = icmp ne i32 %621, 0
  %623 = zext i1 %622 to i8
  store i8 %623, ptr %25, align 1, !tbaa !96
  %624 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %625 = trunc i8 %624 to i1
  br i1 %625, label %626, label %655

626:                                              ; preds = %611
  %627 = load ptr, ptr %8, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.ImGuiContext, ptr %627, i32 0, i32 80
  %629 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %628, i32 0, i32 6
  %630 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %629)
  %631 = fcmp ogt float %630, 0x3EE4F8B580000000
  br i1 %631, label %632, label %655

632:                                              ; preds = %626
  %633 = load ptr, ptr %8, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ImGuiContext, ptr %633, i32 0, i32 80
  %635 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %634, i32 0, i32 5
  %636 = load ptr, ptr %10, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.ImGuiWindow, ptr %636, i32 0, i32 67
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %637, ptr align 4 %635, i64 8, i1 false), !tbaa.struct !156
  %638 = load ptr, ptr %8, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiContext, ptr %638, i32 0, i32 80
  %640 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %639, i32 0, i32 6
  %641 = load ptr, ptr %10, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiWindow, ptr %641, i32 0, i32 68
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %642, ptr align 4 %640, i64 8, i1 false), !tbaa.struct !156
  %643 = load ptr, ptr %10, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.ImGuiWindow, ptr %643, i32 0, i32 66
  %645 = load i32, ptr %644, align 4
  %646 = shl i32 %645, 24
  %647 = ashr i32 %646, 24
  %648 = and i32 %647, -15
  %649 = load i32, ptr %644, align 4
  %650 = and i32 %648, 255
  %651 = and i32 %649, -256
  %652 = or i32 %651, %650
  store i32 %652, ptr %644, align 4
  %653 = shl i32 %650, 24
  %654 = ashr i32 %653, 24
  br label %664

655:                                              ; preds = %626, %611
  %656 = load ptr, ptr %10, align 8, !tbaa !5
  %657 = load ptr, ptr %8, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiContext, ptr %657, i32 0, i32 80
  %659 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %658, i32 0, i32 5
  %660 = load ptr, ptr %8, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiContext, ptr %660, i32 0, i32 80
  %662 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %661, i32 0, i32 1
  %663 = load i32, ptr %662, align 4, !tbaa !155
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %656, ptr noundef nonnull align 4 dereferenceable(8) %659, i32 noundef %663)
  br label %664

664:                                              ; preds = %655, %632
  br label %665

665:                                              ; preds = %664, %604
  %666 = load ptr, ptr %8, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiContext, ptr %666, i32 0, i32 80
  %668 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %667, i32 0, i32 0
  %669 = load i32, ptr %668, align 8, !tbaa !123
  %670 = and i32 %669, 2
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %769

672:                                              ; preds = %665
  %673 = load ptr, ptr %10, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.ImGuiWindow, ptr %673, i32 0, i32 66
  %675 = load i32, ptr %674, align 4
  %676 = shl i32 %675, 16
  %677 = ashr i32 %676, 24
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiContext, ptr %678, i32 0, i32 80
  %680 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %679, i32 0, i32 2
  %681 = load i32, ptr %680, align 8, !tbaa !157
  %682 = and i32 %677, %681
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %691

684:                                              ; preds = %672
  %685 = load ptr, ptr %8, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiContext, ptr %685, i32 0, i32 80
  %687 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %686, i32 0, i32 7
  %688 = getelementptr inbounds %struct.ImVec2, ptr %687, i32 0, i32 0
  %689 = load float, ptr %688, align 4, !tbaa !158
  %690 = fcmp ogt float %689, 0.000000e+00
  br label %691

691:                                              ; preds = %684, %672
  %692 = phi i1 [ false, %672 ], [ %690, %684 ]
  %693 = zext i1 %692 to i8
  store i8 %693, ptr %26, align 1, !tbaa !96
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiWindow, ptr %694, i32 0, i32 66
  %696 = load i32, ptr %695, align 4
  %697 = shl i32 %696, 16
  %698 = ashr i32 %697, 24
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiContext, ptr %699, i32 0, i32 80
  %701 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %700, i32 0, i32 2
  %702 = load i32, ptr %701, align 8, !tbaa !157
  %703 = and i32 %698, %702
  %704 = icmp ne i32 %703, 0
  br i1 %704, label %705, label %712

705:                                              ; preds = %691
  %706 = load ptr, ptr %8, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.ImGuiContext, ptr %706, i32 0, i32 80
  %708 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %707, i32 0, i32 7
  %709 = getelementptr inbounds %struct.ImVec2, ptr %708, i32 0, i32 1
  %710 = load float, ptr %709, align 4, !tbaa !159
  %711 = fcmp ogt float %710, 0.000000e+00
  br label %712

712:                                              ; preds = %705, %691
  %713 = phi i1 [ false, %691 ], [ %711, %705 ]
  %714 = zext i1 %713 to i8
  store i8 %714, ptr %27, align 1, !tbaa !96
  %715 = load ptr, ptr %10, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiWindow, ptr %715, i32 0, i32 5
  %717 = load i32, ptr %716, align 4, !tbaa !125
  %718 = and i32 %717, 4
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %737

720:                                              ; preds = %712
  %721 = load ptr, ptr %10, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiWindow, ptr %721, i32 0, i32 66
  %723 = load i32, ptr %722, align 4
  %724 = shl i32 %723, 16
  %725 = ashr i32 %724, 24
  %726 = and i32 %725, 4
  %727 = icmp eq i32 %726, 0
  br i1 %727, label %728, label %737

728:                                              ; preds = %720
  %729 = load ptr, ptr %10, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiWindow, ptr %729, i32 0, i32 13
  %731 = getelementptr inbounds %struct.ImVec2, ptr %730, i32 0, i32 0
  %732 = load float, ptr %731, align 8, !tbaa !160
  %733 = load ptr, ptr %8, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiContext, ptr %733, i32 0, i32 80
  %735 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %734, i32 0, i32 7
  %736 = getelementptr inbounds %struct.ImVec2, ptr %735, i32 0, i32 0
  store float %732, ptr %736, align 4, !tbaa !158
  br label %737

737:                                              ; preds = %728, %720, %712
  %738 = load ptr, ptr %10, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.ImGuiWindow, ptr %738, i32 0, i32 5
  %740 = load i32, ptr %739, align 4, !tbaa !125
  %741 = and i32 %740, 8
  %742 = icmp ne i32 %741, 0
  br i1 %742, label %743, label %760

743:                                              ; preds = %737
  %744 = load ptr, ptr %10, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.ImGuiWindow, ptr %744, i32 0, i32 66
  %746 = load i32, ptr %745, align 4
  %747 = shl i32 %746, 16
  %748 = ashr i32 %747, 24
  %749 = and i32 %748, 4
  %750 = icmp eq i32 %749, 0
  br i1 %750, label %751, label %760

751:                                              ; preds = %743
  %752 = load ptr, ptr %10, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiWindow, ptr %752, i32 0, i32 13
  %754 = getelementptr inbounds %struct.ImVec2, ptr %753, i32 0, i32 1
  %755 = load float, ptr %754, align 4, !tbaa !161
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiContext, ptr %756, i32 0, i32 80
  %758 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %757, i32 0, i32 7
  %759 = getelementptr inbounds %struct.ImVec2, ptr %758, i32 0, i32 1
  store float %755, ptr %759, align 4, !tbaa !159
  br label %760

760:                                              ; preds = %751, %743, %737
  %761 = load ptr, ptr %10, align 8, !tbaa !5
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiContext, ptr %762, i32 0, i32 80
  %764 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %763, i32 0, i32 7
  %765 = load ptr, ptr %8, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.ImGuiContext, ptr %765, i32 0, i32 80
  %767 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %766, i32 0, i32 2
  %768 = load i32, ptr %767, align 8, !tbaa !157
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %761, ptr noundef nonnull align 4 dereferenceable(8) %764, i32 noundef %768)
  br label %769

769:                                              ; preds = %760, %665
  %770 = load ptr, ptr %8, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImGuiContext, ptr %770, i32 0, i32 80
  %772 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %771, i32 0, i32 0
  %773 = load i32, ptr %772, align 8, !tbaa !123
  %774 = and i32 %773, 128
  %775 = icmp ne i32 %774, 0
  br i1 %775, label %776, label %815

776:                                              ; preds = %769
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.ImGuiContext, ptr %777, i32 0, i32 80
  %779 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %778, i32 0, i32 9
  %780 = getelementptr inbounds %struct.ImVec2, ptr %779, i32 0, i32 0
  %781 = load float, ptr %780, align 4, !tbaa !162
  %782 = fcmp oge float %781, 0.000000e+00
  br i1 %782, label %783, label %795

783:                                              ; preds = %776
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.ImGuiContext, ptr %784, i32 0, i32 80
  %786 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %785, i32 0, i32 9
  %787 = getelementptr inbounds %struct.ImVec2, ptr %786, i32 0, i32 0
  %788 = load float, ptr %787, align 4, !tbaa !162
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiWindow, ptr %789, i32 0, i32 32
  %791 = getelementptr inbounds %struct.ImVec2, ptr %790, i32 0, i32 0
  store float %788, ptr %791, align 8, !tbaa !163
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ImGuiWindow, ptr %792, i32 0, i32 33
  %794 = getelementptr inbounds %struct.ImVec2, ptr %793, i32 0, i32 0
  store float 0.000000e+00, ptr %794, align 8, !tbaa !164
  br label %795

795:                                              ; preds = %783, %776
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.ImGuiContext, ptr %796, i32 0, i32 80
  %798 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %797, i32 0, i32 9
  %799 = getelementptr inbounds %struct.ImVec2, ptr %798, i32 0, i32 1
  %800 = load float, ptr %799, align 4, !tbaa !165
  %801 = fcmp oge float %800, 0.000000e+00
  br i1 %801, label %802, label %814

802:                                              ; preds = %795
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.ImGuiContext, ptr %803, i32 0, i32 80
  %805 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %804, i32 0, i32 9
  %806 = getelementptr inbounds %struct.ImVec2, ptr %805, i32 0, i32 1
  %807 = load float, ptr %806, align 4, !tbaa !165
  %808 = load ptr, ptr %10, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.ImGuiWindow, ptr %808, i32 0, i32 32
  %810 = getelementptr inbounds %struct.ImVec2, ptr %809, i32 0, i32 1
  store float %807, ptr %810, align 4, !tbaa !166
  %811 = load ptr, ptr %10, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.ImGuiWindow, ptr %811, i32 0, i32 33
  %813 = getelementptr inbounds %struct.ImVec2, ptr %812, i32 0, i32 1
  store float 0.000000e+00, ptr %813, align 4, !tbaa !167
  br label %814

814:                                              ; preds = %802, %795
  br label %815

815:                                              ; preds = %814, %769
  %816 = load ptr, ptr %8, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiContext, ptr %816, i32 0, i32 80
  %818 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %817, i32 0, i32 0
  %819 = load i32, ptr %818, align 8, !tbaa !123
  %820 = and i32 %819, 4
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %828

822:                                              ; preds = %815
  %823 = load ptr, ptr %8, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiContext, ptr %823, i32 0, i32 80
  %825 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %824, i32 0, i32 8
  %826 = load ptr, ptr %10, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiWindow, ptr %826, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %827, ptr align 4 %825, i64 8, i1 false), !tbaa.struct !156
  br label %835

828:                                              ; preds = %815
  %829 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %830 = trunc i8 %829 to i1
  br i1 %830, label %831, label %834

831:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %832 = load ptr, ptr %10, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ImGuiWindow, ptr %832, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %833, ptr align 4 %28, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  br label %834

834:                                              ; preds = %831, %828
  br label %835

835:                                              ; preds = %834, %822
  %836 = load ptr, ptr %8, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.ImGuiContext, ptr %836, i32 0, i32 80
  %838 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %837, i32 0, i32 0
  %839 = load i32, ptr %838, align 8, !tbaa !123
  %840 = and i32 %839, 2048
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %842, label %848

842:                                              ; preds = %835
  %843 = load ptr, ptr %8, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiContext, ptr %843, i32 0, i32 80
  %845 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %844, i32 0, i32 19
  %846 = load ptr, ptr %10, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.ImGuiWindow, ptr %846, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %847, ptr align 4 %845, i64 26, i1 false), !tbaa.struct !168
  br label %848

848:                                              ; preds = %842, %835
  %849 = load ptr, ptr %8, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiContext, ptr %849, i32 0, i32 80
  %851 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %850, i32 0, i32 0
  %852 = load i32, ptr %851, align 8, !tbaa !123
  %853 = and i32 %852, 8
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %855, label %866

855:                                              ; preds = %848
  %856 = load ptr, ptr %10, align 8, !tbaa !5
  %857 = load ptr, ptr %8, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.ImGuiContext, ptr %857, i32 0, i32 80
  %859 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %858, i32 0, i32 12
  %860 = load i8, ptr %859, align 1, !tbaa !169, !range !92, !noundef !93
  %861 = trunc i8 %860 to i1
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.ImGuiContext, ptr %862, i32 0, i32 80
  %864 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %863, i32 0, i32 3
  %865 = load i32, ptr %864, align 4, !tbaa !170
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %856, i1 noundef zeroext %861, i32 noundef %865)
  br label %866

866:                                              ; preds = %855, %848
  %867 = load ptr, ptr %8, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiContext, ptr %867, i32 0, i32 80
  %869 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %868, i32 0, i32 0
  %870 = load i32, ptr %869, align 8, !tbaa !123
  %871 = and i32 %870, 32
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %875

873:                                              ; preds = %866
  %874 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %874, i32 noundef 0)
  br label %875

875:                                              ; preds = %873, %866
  %876 = load ptr, ptr %10, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImGuiWindow, ptr %876, i32 0, i32 45
  %878 = load i8, ptr %877, align 1, !tbaa !120, !range !92, !noundef !93
  %879 = trunc i8 %878 to i1
  br i1 %879, label %880, label %882

880:                                              ; preds = %875
  %881 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %881, i32 noundef 8, i1 noundef zeroext false)
  br label %882

882:                                              ; preds = %880, %875
  %883 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %884 = trunc i8 %883 to i1
  br i1 %884, label %885, label %3374

885:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #13
  %886 = load i32, ptr %7, align 4, !tbaa !9
  %887 = and i32 %886, 16777216
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %893

889:                                              ; preds = %885
  %890 = load i32, ptr %7, align 4, !tbaa !9
  %891 = and i32 %890, 33554432
  %892 = icmp ne i32 %891, 0
  br label %893

893:                                              ; preds = %889, %885
  %894 = phi i1 [ false, %885 ], [ %892, %889 ]
  %895 = zext i1 %894 to i8
  store i8 %895, ptr %29, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #13
  %896 = load ptr, ptr %10, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.ImGuiWindow, ptr %896, i32 0, i32 63
  %898 = load i8, ptr %897, align 1, !tbaa !171
  %899 = sext i8 %898 to i32
  %900 = icmp sgt i32 %899, 0
  %901 = zext i1 %900 to i8
  store i8 %901, ptr %30, align 1, !tbaa !96
  %902 = load ptr, ptr %10, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImGuiWindow, ptr %902, i32 0, i32 39
  store i8 1, ptr %903, align 1, !tbaa !172
  %904 = load ptr, ptr %6, align 8, !tbaa !5
  %905 = icmp ne ptr %904, null
  %906 = load ptr, ptr %10, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.ImGuiWindow, ptr %906, i32 0, i32 49
  %908 = zext i1 %905 to i8
  store i8 %908, ptr %907, align 1, !tbaa !173
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #13
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %909 = load ptr, ptr %10, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImGuiWindow, ptr %909, i32 0, i32 76
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %910, ptr align 4 %31, i64 16, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  %911 = load ptr, ptr %10, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.ImGuiWindow, ptr %911, i32 0, i32 69
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %912, i32 noundef 1)
  %913 = load ptr, ptr %10, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiWindow, ptr %913, i32 0, i32 89
  %915 = load ptr, ptr %914, align 8, !tbaa !175
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %915)
  %916 = load ptr, ptr %10, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.ImGuiWindow, ptr %916, i32 0, i32 70
  %918 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %917, i32 0, i32 29
  store i32 -1, ptr %918, align 8, !tbaa !176
  %919 = load i32, ptr %7, align 4, !tbaa !9
  %920 = and i32 %919, 536870912
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %929

922:                                              ; preds = %893
  %923 = load ptr, ptr %10, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.ImGuiWindow, ptr %923, i32 0, i32 89
  %925 = load ptr, ptr %924, align 8, !tbaa !175
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %925, i32 noundef 2)
  %926 = load ptr, ptr %10, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.ImGuiWindow, ptr %926, i32 0, i32 89
  %928 = load ptr, ptr %927, align 8, !tbaa !175
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %928, i32 noundef 1)
  br label %929

929:                                              ; preds = %922, %893
  %930 = load ptr, ptr %10, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.ImGuiWindow, ptr %930, i32 0, i32 105
  %932 = load i8, ptr %931, align 4, !tbaa !177, !range !92, !noundef !93
  %933 = trunc i8 %932 to i1
  br i1 %933, label %934, label %936

934:                                              ; preds = %929
  %935 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %935)
  br label %936

936:                                              ; preds = %934, %929
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  store i8 0, ptr %33, align 1, !tbaa !96
  %937 = load ptr, ptr %10, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiWindow, ptr %937, i32 0, i32 7
  %939 = load ptr, ptr %938, align 8, !tbaa !178
  %940 = icmp ne ptr %939, null
  br i1 %940, label %941, label %949

941:                                              ; preds = %936
  %942 = load ptr, ptr %10, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiWindow, ptr %942, i32 0, i32 7
  %944 = load ptr, ptr %943, align 8, !tbaa !178
  %945 = getelementptr inbounds %struct.ImGuiViewportP, ptr %944, i32 0, i32 1
  %946 = load ptr, ptr %945, align 8, !tbaa !179
  %947 = load ptr, ptr %10, align 8, !tbaa !5
  %948 = icmp eq ptr %946, %947
  br i1 %948, label %955, label %949

949:                                              ; preds = %941, %936
  %950 = load ptr, ptr %10, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImGuiWindow, ptr %950, i32 0, i32 106
  %952 = load i8, ptr %951, align 1
  %953 = and i8 %952, 1
  %954 = trunc i8 %953 to i1
  br i1 %954, label %955, label %956

955:                                              ; preds = %949, %941
  store i8 1, ptr %33, align 1, !tbaa !96
  br label %969

956:                                              ; preds = %949
  %957 = load ptr, ptr %8, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImGuiContext, ptr %957, i32 0, i32 148
  %959 = load ptr, ptr %958, align 8, !tbaa !185
  %960 = icmp ne ptr %959, null
  br i1 %960, label %961, label %968

961:                                              ; preds = %956
  %962 = load ptr, ptr %10, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.ImGuiWindow, ptr %962, i32 0, i32 3
  %964 = load i32, ptr %963, align 4, !tbaa !121
  %965 = and i32 %964, 131072
  %966 = icmp eq i32 %965, 0
  br i1 %966, label %967, label %968

967:                                              ; preds = %961
  store i8 1, ptr %33, align 1, !tbaa !96
  br label %968

968:                                              ; preds = %967, %961, %956
  br label %969

969:                                              ; preds = %968, %955
  %970 = load i8, ptr %33, align 1, !tbaa !96, !range !92, !noundef !93
  %971 = trunc i8 %970 to i1
  br i1 %971, label %972, label %998

972:                                              ; preds = %969
  %973 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %974 = trunc i8 %973 to i1
  br i1 %974, label %998, label %975

975:                                              ; preds = %972
  %976 = load ptr, ptr %5, align 8, !tbaa !5
  %977 = load ptr, ptr %10, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiWindow, ptr %977, i32 0, i32 1
  %979 = load ptr, ptr %978, align 8, !tbaa !186
  %980 = call i32 @strcmp(ptr noundef %976, ptr noundef %979) #15
  %981 = icmp ne i32 %980, 0
  br i1 %981, label %982, label %998

982:                                              ; preds = %975
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %983 = load ptr, ptr %10, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiWindow, ptr %983, i32 0, i32 26
  %985 = load i32, ptr %984, align 8, !tbaa !187
  %986 = sext i32 %985 to i64
  store i64 %986, ptr %34, align 8, !tbaa !188
  %987 = load ptr, ptr %10, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImGuiWindow, ptr %987, i32 0, i32 1
  %989 = load ptr, ptr %988, align 8, !tbaa !186
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %989, ptr noundef %34, ptr noundef %990)
  %992 = load ptr, ptr %10, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiWindow, ptr %992, i32 0, i32 1
  store ptr %991, ptr %993, align 8, !tbaa !186
  %994 = load i64, ptr %34, align 8, !tbaa !188
  %995 = trunc i64 %994 to i32
  %996 = load ptr, ptr %10, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiWindow, ptr %996, i32 0, i32 26
  store i32 %995, ptr %997, align 8, !tbaa !187
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  br label %998

998:                                              ; preds = %982, %975, %972, %969
  %999 = load ptr, ptr %10, align 8, !tbaa !5
  %1000 = load ptr, ptr %10, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImGuiWindow, ptr %1000, i32 0, i32 14
  %1002 = load ptr, ptr %10, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImGuiWindow, ptr %1002, i32 0, i32 15
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %999, ptr noundef %1001, ptr noundef %1003)
  %1004 = load ptr, ptr %10, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.ImGuiWindow, ptr %1004, i32 0, i32 62
  %1006 = load i8, ptr %1005, align 8, !tbaa !190
  %1007 = sext i8 %1006 to i32
  %1008 = icmp sgt i32 %1007, 0
  br i1 %1008, label %1009, label %1014

1009:                                             ; preds = %998
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImGuiWindow, ptr %1010, i32 0, i32 62
  %1012 = load i8, ptr %1011, align 8, !tbaa !190
  %1013 = add i8 %1012, -1
  store i8 %1013, ptr %1011, align 8, !tbaa !190
  br label %1014

1014:                                             ; preds = %1009, %998
  %1015 = load ptr, ptr %10, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiWindow, ptr %1015, i32 0, i32 63
  %1017 = load i8, ptr %1016, align 1, !tbaa !171
  %1018 = sext i8 %1017 to i32
  %1019 = icmp sgt i32 %1018, 0
  br i1 %1019, label %1020, label %1025

1020:                                             ; preds = %1014
  %1021 = load ptr, ptr %10, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImGuiWindow, ptr %1021, i32 0, i32 63
  %1023 = load i8, ptr %1022, align 1, !tbaa !171
  %1024 = add i8 %1023, -1
  store i8 %1024, ptr %1022, align 1, !tbaa !171
  br label %1025

1025:                                             ; preds = %1020, %1014
  %1026 = load ptr, ptr %10, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.ImGuiWindow, ptr %1026, i32 0, i32 64
  %1028 = load i8, ptr %1027, align 2, !tbaa !191
  %1029 = sext i8 %1028 to i32
  %1030 = icmp sgt i32 %1029, 0
  br i1 %1030, label %1031, label %1036

1031:                                             ; preds = %1025
  %1032 = load ptr, ptr %10, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.ImGuiWindow, ptr %1032, i32 0, i32 64
  %1034 = load i8, ptr %1033, align 2, !tbaa !191
  %1035 = add i8 %1034, -1
  store i8 %1035, ptr %1033, align 2, !tbaa !191
  br label %1036

1036:                                             ; preds = %1031, %1025
  %1037 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %1038 = trunc i8 %1037 to i1
  br i1 %1038, label %1039, label %1048

1039:                                             ; preds = %1036
  %1040 = load i8, ptr %26, align 1, !tbaa !96, !range !92, !noundef !93
  %1041 = trunc i8 %1040 to i1
  br i1 %1041, label %1042, label %1045

1042:                                             ; preds = %1039
  %1043 = load i8, ptr %27, align 1, !tbaa !96, !range !92, !noundef !93
  %1044 = trunc i8 %1043 to i1
  br i1 %1044, label %1048, label %1045

1045:                                             ; preds = %1042, %1039
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ImGuiWindow, ptr %1046, i32 0, i32 63
  store i8 1, ptr %1047, align 1, !tbaa !171
  br label %1048

1048:                                             ; preds = %1045, %1042, %1036
  %1049 = load i8, ptr %14, align 1, !tbaa !96, !range !92, !noundef !93
  %1050 = trunc i8 %1049 to i1
  br i1 %1050, label %1051, label %1087

1051:                                             ; preds = %1048
  %1052 = load i32, ptr %7, align 4, !tbaa !9
  %1053 = and i32 %1052, 100663296
  %1054 = icmp ne i32 %1053, 0
  br i1 %1054, label %1055, label %1087

1055:                                             ; preds = %1051
  %1056 = load ptr, ptr %10, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiWindow, ptr %1056, i32 0, i32 63
  store i8 1, ptr %1057, align 1, !tbaa !171
  %1058 = load i32, ptr %7, align 4, !tbaa !9
  %1059 = and i32 %1058, 64
  %1060 = icmp ne i32 %1059, 0
  br i1 %1060, label %1061, label %1086

1061:                                             ; preds = %1055
  %1062 = load i8, ptr %26, align 1, !tbaa !96, !range !92, !noundef !93
  %1063 = trunc i8 %1062 to i1
  br i1 %1063, label %1071, label %1064

1064:                                             ; preds = %1061
  %1065 = load ptr, ptr %10, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiWindow, ptr %1065, i32 0, i32 13
  %1067 = getelementptr inbounds %struct.ImVec2, ptr %1066, i32 0, i32 0
  store float 0.000000e+00, ptr %1067, align 8, !tbaa !160
  %1068 = load ptr, ptr %10, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImGuiWindow, ptr %1068, i32 0, i32 12
  %1070 = getelementptr inbounds %struct.ImVec2, ptr %1069, i32 0, i32 0
  store float 0.000000e+00, ptr %1070, align 8, !tbaa !192
  br label %1071

1071:                                             ; preds = %1064, %1061
  %1072 = load i8, ptr %27, align 1, !tbaa !96, !range !92, !noundef !93
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1081, label %1074

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %10, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiWindow, ptr %1075, i32 0, i32 13
  %1077 = getelementptr inbounds %struct.ImVec2, ptr %1076, i32 0, i32 1
  store float 0.000000e+00, ptr %1077, align 4, !tbaa !161
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiWindow, ptr %1078, i32 0, i32 12
  %1080 = getelementptr inbounds %struct.ImVec2, ptr %1079, i32 0, i32 1
  store float 0.000000e+00, ptr %1080, align 4, !tbaa !193
  br label %1081

1081:                                             ; preds = %1074, %1071
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1082 = load ptr, ptr %10, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiWindow, ptr %1082, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1083, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !156
  %1084 = load ptr, ptr %10, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.ImGuiWindow, ptr %1084, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1085, ptr align 4 %1083, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  br label %1086

1086:                                             ; preds = %1081, %1055
  br label %1087

1087:                                             ; preds = %1086, %1051, %1048
  %1088 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef %1088)
  %1089 = load ptr, ptr %10, align 8, !tbaa !5
  %1090 = load ptr, ptr %10, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.ImGuiWindow, ptr %1090, i32 0, i32 7
  %1092 = load ptr, ptr %1091, align 8, !tbaa !178
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1089, ptr noundef %1092)
  %1093 = load ptr, ptr %8, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiContext, ptr %1093, i32 0, i32 2
  %1095 = getelementptr inbounds %struct.ImGuiIO, ptr %1094, i32 0, i32 0
  %1096 = load i32, ptr %1095, align 8, !tbaa !194
  %1097 = and i32 %1096, 32768
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1105

1099:                                             ; preds = %1087
  %1100 = load ptr, ptr %10, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiWindow, ptr %1100, i32 0, i32 7
  %1102 = load ptr, ptr %1101, align 8, !tbaa !178
  %1103 = getelementptr inbounds %struct.ImGuiViewport, ptr %1102, i32 0, i32 6
  %1104 = load float, ptr %1103, align 8, !tbaa !195
  br label %1106

1105:                                             ; preds = %1087
  br label %1106

1106:                                             ; preds = %1105, %1099
  %1107 = phi float [ %1104, %1099 ], [ 1.000000e+00, %1105 ]
  %1108 = load ptr, ptr %10, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.ImGuiWindow, ptr %1108, i32 0, i32 87
  store float %1107, ptr %1109, align 4, !tbaa !196
  %1110 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1110)
  %1111 = load ptr, ptr %10, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.ImGuiWindow, ptr %1111, i32 0, i32 3
  %1113 = load i32, ptr %1112, align 4, !tbaa !121
  store i32 %1113, ptr %7, align 4, !tbaa !9
  %1114 = load ptr, ptr %10, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiWindow, ptr %1114, i32 0, i32 106
  %1116 = load i8, ptr %1115, align 1
  %1117 = and i8 %1116, 1
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1129, label %1119

1119:                                             ; preds = %1106
  %1120 = load i32, ptr %7, align 4, !tbaa !9
  %1121 = and i32 %1120, 16777216
  %1122 = icmp ne i32 %1121, 0
  br i1 %1122, label %1123, label %1129

1123:                                             ; preds = %1119
  %1124 = load ptr, ptr %9, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.ImGuiStyle, ptr %1124, i32 0, i32 9
  %1126 = load float, ptr %1125, align 4, !tbaa !197
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiWindow, ptr %1127, i32 0, i32 19
  store float %1126, ptr %1128, align 4, !tbaa !198
  br label %1149

1129:                                             ; preds = %1119, %1106
  %1130 = load i32, ptr %7, align 4, !tbaa !9
  %1131 = and i32 %1130, 100663296
  %1132 = icmp ne i32 %1131, 0
  br i1 %1132, label %1133, label %1141

1133:                                             ; preds = %1129
  %1134 = load i32, ptr %7, align 4, !tbaa !9
  %1135 = and i32 %1134, 134217728
  %1136 = icmp ne i32 %1135, 0
  br i1 %1136, label %1141, label %1137

1137:                                             ; preds = %1133
  %1138 = load ptr, ptr %9, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiStyle, ptr %1138, i32 0, i32 11
  %1140 = load float, ptr %1139, align 4, !tbaa !199
  br label %1145

1141:                                             ; preds = %1133, %1129
  %1142 = load ptr, ptr %9, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiStyle, ptr %1142, i32 0, i32 4
  %1144 = load float, ptr %1143, align 4, !tbaa !200
  br label %1145

1145:                                             ; preds = %1141, %1137
  %1146 = phi float [ %1140, %1137 ], [ %1144, %1141 ]
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.ImGuiWindow, ptr %1147, i32 0, i32 19
  store float %1146, ptr %1148, align 4, !tbaa !198
  br label %1149

1149:                                             ; preds = %1145, %1123
  %1150 = load ptr, ptr %9, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiStyle, ptr %1150, i32 0, i32 2
  %1152 = load ptr, ptr %10, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiWindow, ptr %1152, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1153, ptr align 4 %1151, i64 8, i1 false), !tbaa.struct !156
  %1154 = load ptr, ptr %10, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.ImGuiWindow, ptr %1154, i32 0, i32 106
  %1156 = load i8, ptr %1155, align 1
  %1157 = and i8 %1156, 1
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1192, label %1159

1159:                                             ; preds = %1149
  %1160 = load i32, ptr %7, align 4, !tbaa !9
  %1161 = and i32 %1160, 16777216
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1163, label %1192

1163:                                             ; preds = %1159
  %1164 = load i32, ptr %7, align 4, !tbaa !9
  %1165 = and i32 %1164, 67108864
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1192, label %1167

1167:                                             ; preds = %1163
  %1168 = load ptr, ptr %10, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiWindow, ptr %1168, i32 0, i32 5
  %1170 = load i32, ptr %1169, align 4, !tbaa !125
  %1171 = and i32 %1170, 2
  %1172 = icmp ne i32 %1171, 0
  br i1 %1172, label %1192, label %1173

1173:                                             ; preds = %1167
  %1174 = load ptr, ptr %10, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.ImGuiWindow, ptr %1174, i32 0, i32 19
  %1176 = load float, ptr %1175, align 4, !tbaa !198
  %1177 = fcmp oeq float %1176, 0.000000e+00
  br i1 %1177, label %1178, label %1192

1178:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %1179 = load i32, ptr %7, align 4, !tbaa !9
  %1180 = and i32 %1179, 1024
  %1181 = icmp ne i32 %1180, 0
  br i1 %1181, label %1182, label %1187

1182:                                             ; preds = %1178
  %1183 = load ptr, ptr %9, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ImGuiStyle, ptr %1183, i32 0, i32 2
  %1185 = getelementptr inbounds %struct.ImVec2, ptr %1184, i32 0, i32 1
  %1186 = load float, ptr %1185, align 4, !tbaa !201
  br label %1188

1187:                                             ; preds = %1178
  br label %1188

1188:                                             ; preds = %1187, %1182
  %1189 = phi float [ %1186, %1182 ], [ 0.000000e+00, %1187 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef 0.000000e+00, float noundef %1189)
  %1190 = load ptr, ptr %10, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.ImGuiWindow, ptr %1190, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1191, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  br label %1192

1192:                                             ; preds = %1188, %1173, %1167, %1163, %1159, %1149
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.ImGuiWindow, ptr %1193, i32 0, i32 17
  %1195 = getelementptr inbounds %struct.ImVec2, ptr %1194, i32 0, i32 0
  %1196 = load float, ptr %1195, align 8, !tbaa !202
  %1197 = load ptr, ptr %9, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ImGuiStyle, ptr %1197, i32 0, i32 15
  %1199 = getelementptr inbounds %struct.ImVec2, ptr %1198, i32 0, i32 0
  %1200 = load float, ptr %1199, align 4, !tbaa !203
  %1201 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1196, float noundef %1200)
  %1202 = load ptr, ptr %8, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.ImGuiContext, ptr %1202, i32 0, i32 80
  %1204 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1203, i32 0, i32 20
  %1205 = getelementptr inbounds %struct.ImVec2, ptr %1204, i32 0, i32 0
  %1206 = load float, ptr %1205, align 8, !tbaa !204
  %1207 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1201, float noundef %1206)
  %1208 = load ptr, ptr %10, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.ImGuiWindow, ptr %1208, i32 0, i32 70
  %1210 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1209, i32 0, i32 22
  %1211 = getelementptr inbounds %struct.ImVec2, ptr %1210, i32 0, i32 0
  store float %1207, ptr %1211, align 4, !tbaa !205
  %1212 = load ptr, ptr %8, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.ImGuiContext, ptr %1212, i32 0, i32 80
  %1214 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1213, i32 0, i32 20
  %1215 = getelementptr inbounds %struct.ImVec2, ptr %1214, i32 0, i32 1
  %1216 = load float, ptr %1215, align 4, !tbaa !206
  %1217 = load ptr, ptr %10, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.ImGuiWindow, ptr %1217, i32 0, i32 70
  %1219 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1218, i32 0, i32 22
  %1220 = getelementptr inbounds %struct.ImVec2, ptr %1219, i32 0, i32 1
  store float %1216, ptr %1220, align 4, !tbaa !207
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #13
  %1221 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %1222 = trunc i8 %1221 to i1
  %1223 = zext i1 %1222 to i8
  store i8 %1223, ptr %37, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #13
  %1224 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %1225 = trunc i8 %1224 to i1
  %1226 = zext i1 %1225 to i8
  store i8 %1226, ptr %38, align 1, !tbaa !96
  %1227 = load i32, ptr %7, align 4, !tbaa !9
  %1228 = and i32 %1227, 1
  %1229 = icmp ne i32 %1228, 0
  br i1 %1229, label %1299, label %1230

1230:                                             ; preds = %1192
  %1231 = load i32, ptr %7, align 4, !tbaa !9
  %1232 = and i32 %1231, 32
  %1233 = icmp ne i32 %1232, 0
  br i1 %1233, label %1299, label %1234

1234:                                             ; preds = %1230
  %1235 = load ptr, ptr %10, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.ImGuiWindow, ptr %1235, i32 0, i32 106
  %1237 = load i8, ptr %1236, align 1
  %1238 = and i8 %1237, 1
  %1239 = trunc i8 %1238 to i1
  br i1 %1239, label %1299, label %1240

1240:                                             ; preds = %1234
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #13
  %1241 = load ptr, ptr %10, align 8, !tbaa !5
  %1242 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1241)
  %1243 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 0
  %1244 = extractvalue { <2 x float>, <2 x float> } %1242, 0
  store <2 x float> %1244, ptr %1243, align 4
  %1245 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 1
  %1246 = extractvalue { <2 x float>, <2 x float> } %1242, 1
  store <2 x float> %1246, ptr %1245, align 4
  %1247 = load ptr, ptr %8, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiContext, ptr %1247, i32 0, i32 34
  %1249 = load ptr, ptr %1248, align 8, !tbaa !208
  %1250 = load ptr, ptr %10, align 8, !tbaa !5
  %1251 = icmp eq ptr %1249, %1250
  br i1 %1251, label %1252, label %1277

1252:                                             ; preds = %1240
  %1253 = load ptr, ptr %8, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.ImGuiContext, ptr %1253, i32 0, i32 45
  %1255 = load i32, ptr %1254, align 8, !tbaa !209
  %1256 = icmp eq i32 %1255, 0
  br i1 %1256, label %1257, label %1277

1257:                                             ; preds = %1252
  %1258 = load ptr, ptr %8, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.ImGuiContext, ptr %1258, i32 0, i32 46
  %1260 = load i32, ptr %1259, align 4, !tbaa !210
  %1261 = icmp eq i32 %1260, 0
  br i1 %1261, label %1262, label %1277

1262:                                             ; preds = %1257
  %1263 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 0
  %1264 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 1
  %1265 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1263, ptr noundef nonnull align 4 dereferenceable(8) %1264, i1 noundef zeroext true)
  br i1 %1265, label %1266, label %1277

1266:                                             ; preds = %1262
  %1267 = load ptr, ptr %8, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiContext, ptr %1267, i32 0, i32 2
  %1269 = getelementptr inbounds %struct.ImGuiIO, ptr %1268, i32 0, i32 85
  %1270 = getelementptr inbounds [5 x i16], ptr %1269, i64 0, i64 0
  %1271 = load i16, ptr %1270, align 2, !tbaa !211
  %1272 = zext i16 %1271 to i32
  %1273 = icmp eq i32 %1272, 2
  br i1 %1273, label %1274, label %1277

1274:                                             ; preds = %1266
  %1275 = load ptr, ptr %10, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.ImGuiWindow, ptr %1275, i32 0, i32 43
  store i8 1, ptr %1276, align 1, !tbaa !212
  br label %1277

1277:                                             ; preds = %1274, %1266, %1262, %1257, %1252, %1240
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiWindow, ptr %1278, i32 0, i32 43
  %1280 = load i8, ptr %1279, align 1, !tbaa !212, !range !92, !noundef !93
  %1281 = trunc i8 %1280 to i1
  br i1 %1281, label %1282, label %1298

1282:                                             ; preds = %1277
  %1283 = load ptr, ptr %10, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ImGuiWindow, ptr %1283, i32 0, i32 42
  %1285 = load i8, ptr %1284, align 2, !tbaa !213, !range !92, !noundef !93
  %1286 = trunc i8 %1285 to i1
  %1287 = xor i1 %1286, true
  %1288 = load ptr, ptr %10, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiWindow, ptr %1288, i32 0, i32 42
  %1290 = zext i1 %1287 to i8
  store i8 %1290, ptr %1289, align 2, !tbaa !213
  %1291 = load ptr, ptr %10, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.ImGuiWindow, ptr %1291, i32 0, i32 42
  %1293 = load i8, ptr %1292, align 2, !tbaa !213, !range !92, !noundef !93
  %1294 = trunc i8 %1293 to i1
  br i1 %1294, label %1296, label %1295

1295:                                             ; preds = %1282
  store i8 1, ptr %38, align 1, !tbaa !96
  br label %1296

1296:                                             ; preds = %1295, %1282
  %1297 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1297)
  br label %1298

1298:                                             ; preds = %1296, %1277
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #13
  br label %1302

1299:                                             ; preds = %1234, %1230, %1192
  %1300 = load ptr, ptr %10, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ImGuiWindow, ptr %1300, i32 0, i32 42
  store i8 0, ptr %1301, align 2, !tbaa !213
  br label %1302

1302:                                             ; preds = %1299, %1298
  %1303 = load ptr, ptr %10, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.ImGuiWindow, ptr %1303, i32 0, i32 43
  store i8 0, ptr %1304, align 1, !tbaa !212
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1305 = load ptr, ptr %10, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiWindow, ptr %1305, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1306, i64 8, i1 false), !tbaa.struct !156
  %1307 = load ptr, ptr %10, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ImGuiWindow, ptr %1307, i32 0, i32 20
  store float 0.000000e+00, ptr %1308, align 8, !tbaa !214
  %1309 = load ptr, ptr %10, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.ImGuiWindow, ptr %1309, i32 0, i32 22
  store float 0.000000e+00, ptr %1310, align 8, !tbaa !215
  %1311 = load ptr, ptr %10, align 8, !tbaa !5
  %1312 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %1311)
  %1313 = load ptr, ptr %10, align 8, !tbaa !5
  %1314 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %1313)
  %1315 = fadd float %1312, %1314
  %1316 = load ptr, ptr %10, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.ImGuiWindow, ptr %1316, i32 0, i32 21
  store float %1315, ptr %1317, align 4, !tbaa !216
  %1318 = load ptr, ptr %10, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiWindow, ptr %1318, i32 0, i32 23
  store float 0.000000e+00, ptr %1319, align 4, !tbaa !217
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1320 = load ptr, ptr %10, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.ImGuiWindow, ptr %1320, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1321, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  %1322 = load ptr, ptr %10, align 8, !tbaa !5
  %1323 = load ptr, ptr %10, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 15
  %1325 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1322, ptr noundef nonnull align 4 dereferenceable(8) %1324)
  store <2 x float> %1325, ptr %42, align 4
  %1326 = load i32, ptr %7, align 4, !tbaa !9
  %1327 = and i32 %1326, 64
  %1328 = icmp ne i32 %1327, 0
  br i1 %1328, label %1329, label %1353

1329:                                             ; preds = %1302
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 42
  %1332 = load i8, ptr %1331, align 2, !tbaa !213, !range !92, !noundef !93
  %1333 = trunc i8 %1332 to i1
  br i1 %1333, label %1353, label %1334

1334:                                             ; preds = %1329
  %1335 = load i8, ptr %26, align 1, !tbaa !96, !range !92, !noundef !93
  %1336 = trunc i8 %1335 to i1
  br i1 %1336, label %1343, label %1337

1337:                                             ; preds = %1334
  %1338 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1339 = load float, ptr %1338, align 4, !tbaa !218
  %1340 = load ptr, ptr %10, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.ImGuiWindow, ptr %1340, i32 0, i32 13
  %1342 = getelementptr inbounds %struct.ImVec2, ptr %1341, i32 0, i32 0
  store float %1339, ptr %1342, align 8, !tbaa !160
  store i8 1, ptr %37, align 1, !tbaa !96
  br label %1343

1343:                                             ; preds = %1337, %1334
  %1344 = load i8, ptr %27, align 1, !tbaa !96, !range !92, !noundef !93
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1352, label %1346

1346:                                             ; preds = %1343
  %1347 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1348 = load float, ptr %1347, align 4, !tbaa !219
  %1349 = load ptr, ptr %10, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.ImGuiWindow, ptr %1349, i32 0, i32 13
  %1351 = getelementptr inbounds %struct.ImVec2, ptr %1350, i32 0, i32 1
  store float %1348, ptr %1351, align 4, !tbaa !161
  store i8 1, ptr %38, align 1, !tbaa !96
  br label %1352

1352:                                             ; preds = %1346, %1343
  br label %1434

1353:                                             ; preds = %1329, %1302
  %1354 = load ptr, ptr %10, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.ImGuiWindow, ptr %1354, i32 0, i32 58
  %1356 = load i8, ptr %1355, align 8, !tbaa !220
  %1357 = sext i8 %1356 to i32
  %1358 = icmp sgt i32 %1357, 0
  br i1 %1358, label %1365, label %1359

1359:                                             ; preds = %1353
  %1360 = load ptr, ptr %10, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiWindow, ptr %1360, i32 0, i32 59
  %1362 = load i8, ptr %1361, align 1, !tbaa !221
  %1363 = sext i8 %1362 to i32
  %1364 = icmp sgt i32 %1363, 0
  br i1 %1364, label %1365, label %1433

1365:                                             ; preds = %1359, %1353
  %1366 = load i8, ptr %26, align 1, !tbaa !96, !range !92, !noundef !93
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1395, label %1368

1368:                                             ; preds = %1365
  %1369 = load ptr, ptr %10, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiWindow, ptr %1369, i32 0, i32 58
  %1371 = load i8, ptr %1370, align 8, !tbaa !220
  %1372 = sext i8 %1371 to i32
  %1373 = icmp sgt i32 %1372, 0
  br i1 %1373, label %1374, label %1395

1374:                                             ; preds = %1368
  %1375 = load ptr, ptr %10, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiWindow, ptr %1375, i32 0, i32 60
  %1377 = load i8, ptr %1376, align 2, !tbaa !222, !range !92, !noundef !93
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1379, label %1387

1379:                                             ; preds = %1374
  %1380 = load ptr, ptr %10, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiWindow, ptr %1380, i32 0, i32 13
  %1382 = getelementptr inbounds %struct.ImVec2, ptr %1381, i32 0, i32 0
  %1383 = load float, ptr %1382, align 8, !tbaa !160
  %1384 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1385 = load float, ptr %1384, align 4, !tbaa !218
  %1386 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1383, float noundef %1385)
  br label %1390

1387:                                             ; preds = %1374
  %1388 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1389 = load float, ptr %1388, align 4, !tbaa !218
  br label %1390

1390:                                             ; preds = %1387, %1379
  %1391 = phi float [ %1386, %1379 ], [ %1389, %1387 ]
  %1392 = load ptr, ptr %10, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.ImGuiWindow, ptr %1392, i32 0, i32 13
  %1394 = getelementptr inbounds %struct.ImVec2, ptr %1393, i32 0, i32 0
  store float %1391, ptr %1394, align 8, !tbaa !160
  store i8 1, ptr %37, align 1, !tbaa !96
  br label %1395

1395:                                             ; preds = %1390, %1368, %1365
  %1396 = load i8, ptr %27, align 1, !tbaa !96, !range !92, !noundef !93
  %1397 = trunc i8 %1396 to i1
  br i1 %1397, label %1425, label %1398

1398:                                             ; preds = %1395
  %1399 = load ptr, ptr %10, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiWindow, ptr %1399, i32 0, i32 59
  %1401 = load i8, ptr %1400, align 1, !tbaa !221
  %1402 = sext i8 %1401 to i32
  %1403 = icmp sgt i32 %1402, 0
  br i1 %1403, label %1404, label %1425

1404:                                             ; preds = %1398
  %1405 = load ptr, ptr %10, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.ImGuiWindow, ptr %1405, i32 0, i32 60
  %1407 = load i8, ptr %1406, align 2, !tbaa !222, !range !92, !noundef !93
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1409, label %1417

1409:                                             ; preds = %1404
  %1410 = load ptr, ptr %10, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.ImGuiWindow, ptr %1410, i32 0, i32 13
  %1412 = getelementptr inbounds %struct.ImVec2, ptr %1411, i32 0, i32 1
  %1413 = load float, ptr %1412, align 4, !tbaa !161
  %1414 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1415 = load float, ptr %1414, align 4, !tbaa !219
  %1416 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1413, float noundef %1415)
  br label %1420

1417:                                             ; preds = %1404
  %1418 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1419 = load float, ptr %1418, align 4, !tbaa !219
  br label %1420

1420:                                             ; preds = %1417, %1409
  %1421 = phi float [ %1416, %1409 ], [ %1419, %1417 ]
  %1422 = load ptr, ptr %10, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.ImGuiWindow, ptr %1422, i32 0, i32 13
  %1424 = getelementptr inbounds %struct.ImVec2, ptr %1423, i32 0, i32 1
  store float %1421, ptr %1424, align 4, !tbaa !161
  store i8 1, ptr %38, align 1, !tbaa !96
  br label %1425

1425:                                             ; preds = %1420, %1398, %1395
  %1426 = load ptr, ptr %10, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.ImGuiWindow, ptr %1426, i32 0, i32 42
  %1428 = load i8, ptr %1427, align 2, !tbaa !213, !range !92, !noundef !93
  %1429 = trunc i8 %1428 to i1
  br i1 %1429, label %1432, label %1430

1430:                                             ; preds = %1425
  %1431 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1431)
  br label %1432

1432:                                             ; preds = %1430, %1425
  br label %1433

1433:                                             ; preds = %1432, %1359
  br label %1434

1434:                                             ; preds = %1433, %1352
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1435 = load ptr, ptr %10, align 8, !tbaa !5
  %1436 = load ptr, ptr %10, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.ImGuiWindow, ptr %1436, i32 0, i32 13
  %1438 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1435, ptr noundef nonnull align 4 dereferenceable(8) %1437)
  store <2 x float> %1438, ptr %43, align 4
  %1439 = load ptr, ptr %10, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.ImGuiWindow, ptr %1439, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1440, ptr align 4 %43, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1441 = load ptr, ptr %10, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.ImGuiWindow, ptr %1441, i32 0, i32 42
  %1443 = load i8, ptr %1442, align 2, !tbaa !213, !range !92, !noundef !93
  %1444 = trunc i8 %1443 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #13
  br i1 %1444, label %1445, label %1457

1445:                                             ; preds = %1434
  %1446 = load i32, ptr %7, align 4, !tbaa !9
  %1447 = and i32 %1446, 16777216
  %1448 = icmp ne i32 %1447, 0
  br i1 %1448, label %1457, label %1449

1449:                                             ; preds = %1445
  %1450 = load ptr, ptr %10, align 8, !tbaa !5
  %1451 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1450)
  %1452 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 0
  %1453 = extractvalue { <2 x float>, <2 x float> } %1451, 0
  store <2 x float> %1453, ptr %1452, align 4
  %1454 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 1
  %1455 = extractvalue { <2 x float>, <2 x float> } %1451, 1
  store <2 x float> %1455, ptr %1454, align 4
  %1456 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  store <2 x float> %1456, ptr %44, align 4
  br label %1460

1457:                                             ; preds = %1445, %1434
  %1458 = load ptr, ptr %10, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.ImGuiWindow, ptr %1458, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 8 %1459, i64 8, i1 false), !tbaa.struct !156
  br label %1460

1460:                                             ; preds = %1457, %1449
  %1461 = load ptr, ptr %10, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.ImGuiWindow, ptr %1461, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1462, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  %1463 = load i8, ptr %14, align 1, !tbaa !96, !range !92, !noundef !93
  %1464 = trunc i8 %1463 to i1
  br i1 %1464, label %1465, label %1486

1465:                                             ; preds = %1460
  %1466 = load ptr, ptr %10, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.ImGuiWindow, ptr %1466, i32 0, i32 61
  store i32 -1, ptr %1467, align 4, !tbaa !223
  %1468 = load i32, ptr %7, align 4, !tbaa !9
  %1469 = and i32 %1468, 67108864
  %1470 = icmp ne i32 %1469, 0
  br i1 %1470, label %1471, label %1485

1471:                                             ; preds = %1465
  %1472 = load i32, ptr %7, align 4, !tbaa !9
  %1473 = and i32 %1472, 134217728
  %1474 = icmp ne i32 %1473, 0
  br i1 %1474, label %1485, label %1475

1475:                                             ; preds = %1471
  %1476 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1485, label %1478

1478:                                             ; preds = %1475
  %1479 = load ptr, ptr %8, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImGuiContext, ptr %1479, i32 0, i32 89
  %1481 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1480)
  %1482 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1481, i32 0, i32 7
  %1483 = load ptr, ptr %10, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiWindow, ptr %1483, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1484, ptr align 4 %1482, i64 8, i1 false), !tbaa.struct !156
  br label %1485

1485:                                             ; preds = %1478, %1475, %1471, %1465
  br label %1486

1486:                                             ; preds = %1485, %1460
  %1487 = load i32, ptr %7, align 4, !tbaa !9
  %1488 = and i32 %1487, 16777216
  %1489 = icmp ne i32 %1488, 0
  br i1 %1489, label %1490, label %1531

1490:                                             ; preds = %1486
  %1491 = load ptr, ptr %22, align 8, !tbaa !5
  %1492 = icmp ne ptr %1491, null
  br i1 %1492, label %1493, label %1498

1493:                                             ; preds = %1490
  %1494 = load ptr, ptr %22, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiWindow, ptr %1494, i32 0, i32 39
  %1496 = load i8, ptr %1495, align 1, !tbaa !172, !range !92, !noundef !93
  %1497 = trunc i8 %1496 to i1
  br label %1498

1498:                                             ; preds = %1493, %1490
  %1499 = phi i1 [ false, %1490 ], [ %1497, %1493 ]
  br i1 %1499, label %1500, label %1501

1500:                                             ; preds = %1498
  br label %1503

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

1502:                                             ; No predecessors!
  br label %1503

1503:                                             ; preds = %1502, %1500
  %1504 = load ptr, ptr %22, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiWindow, ptr %1504, i32 0, i32 70
  %1506 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1505, i32 0, i32 26
  %1507 = getelementptr inbounds %struct.ImVector.4, ptr %1506, i32 0, i32 0
  %1508 = load i32, ptr %1507, align 8, !tbaa !224
  %1509 = trunc i32 %1508 to i16
  %1510 = load ptr, ptr %10, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.ImGuiWindow, ptr %1510, i32 0, i32 54
  store i16 %1509, ptr %1511, align 4, !tbaa !128
  %1512 = load ptr, ptr %22, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.ImGuiWindow, ptr %1512, i32 0, i32 70
  %1514 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1513, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1514, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1515 = load i32, ptr %7, align 4, !tbaa !9
  %1516 = and i32 %1515, 67108864
  %1517 = icmp ne i32 %1516, 0
  br i1 %1517, label %1530, label %1518

1518:                                             ; preds = %1503
  %1519 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %1520 = trunc i8 %1519 to i1
  br i1 %1520, label %1530, label %1521

1521:                                             ; preds = %1518
  %1522 = load i8, ptr %29, align 1, !tbaa !96, !range !92, !noundef !93
  %1523 = trunc i8 %1522 to i1
  br i1 %1523, label %1530, label %1524

1524:                                             ; preds = %1521
  %1525 = load ptr, ptr %22, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.ImGuiWindow, ptr %1525, i32 0, i32 70
  %1527 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1526, i32 0, i32 0
  %1528 = load ptr, ptr %10, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.ImGuiWindow, ptr %1528, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1529, ptr align 8 %1527, i64 8, i1 false), !tbaa.struct !156
  br label %1530

1530:                                             ; preds = %1524, %1521, %1518, %1503
  br label %1531

1531:                                             ; preds = %1530, %1486
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  %1532 = load ptr, ptr %10, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 67
  %1534 = getelementptr inbounds %struct.ImVec2, ptr %1533, i32 0, i32 0
  %1535 = load float, ptr %1534, align 8, !tbaa !225
  %1536 = fcmp une float %1535, 0x47EFFFFFE0000000
  br i1 %1536, label %1537, label %1543

1537:                                             ; preds = %1531
  %1538 = load ptr, ptr %10, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.ImGuiWindow, ptr %1538, i32 0, i32 63
  %1540 = load i8, ptr %1539, align 1, !tbaa !171
  %1541 = sext i8 %1540 to i32
  %1542 = icmp eq i32 %1541, 0
  br label %1543

1543:                                             ; preds = %1537, %1531
  %1544 = phi i1 [ false, %1531 ], [ %1542, %1537 ]
  %1545 = zext i1 %1544 to i8
  store i8 %1545, ptr %46, align 1, !tbaa !96
  %1546 = load i8, ptr %46, align 1, !tbaa !96, !range !92, !noundef !93
  %1547 = trunc i8 %1546 to i1
  br i1 %1547, label %1548, label %1558

1548:                                             ; preds = %1543
  %1549 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1550 = load ptr, ptr %10, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.ImGuiWindow, ptr %1550, i32 0, i32 67
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #13
  %1552 = load ptr, ptr %10, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.ImGuiWindow, ptr %1552, i32 0, i32 12
  %1554 = load ptr, ptr %10, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.ImGuiWindow, ptr %1554, i32 0, i32 68
  %1556 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1553, ptr noundef nonnull align 4 dereferenceable(8) %1555)
  store <2 x float> %1556, ptr %48, align 4
  %1557 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1551, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1557, ptr %47, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1549, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1600

1558:                                             ; preds = %1543
  %1559 = load i32, ptr %7, align 4, !tbaa !9
  %1560 = and i32 %1559, 268435456
  %1561 = icmp ne i32 %1560, 0
  br i1 %1561, label %1562, label %1567

1562:                                             ; preds = %1558
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  %1563 = load ptr, ptr %10, align 8, !tbaa !5
  %1564 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1563)
  store <2 x float> %1564, ptr %49, align 4
  %1565 = load ptr, ptr %10, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.ImGuiWindow, ptr %1565, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1566, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  br label %1599

1567:                                             ; preds = %1558
  %1568 = load i32, ptr %7, align 4, !tbaa !9
  %1569 = and i32 %1568, 67108864
  %1570 = icmp ne i32 %1569, 0
  br i1 %1570, label %1571, label %1582

1571:                                             ; preds = %1567
  %1572 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %1573 = trunc i8 %1572 to i1
  br i1 %1573, label %1582, label %1574

1574:                                             ; preds = %1571
  %1575 = load i8, ptr %30, align 1, !tbaa !96, !range !92, !noundef !93
  %1576 = trunc i8 %1575 to i1
  br i1 %1576, label %1577, label %1582

1577:                                             ; preds = %1574
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1578 = load ptr, ptr %10, align 8, !tbaa !5
  %1579 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1578)
  store <2 x float> %1579, ptr %50, align 4
  %1580 = load ptr, ptr %10, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.ImGuiWindow, ptr %1580, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1581, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  br label %1598

1582:                                             ; preds = %1574, %1571, %1567
  %1583 = load i32, ptr %7, align 4, !tbaa !9
  %1584 = and i32 %1583, 33554432
  %1585 = icmp ne i32 %1584, 0
  br i1 %1585, label %1586, label %1597

1586:                                             ; preds = %1582
  %1587 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %1588 = trunc i8 %1587 to i1
  br i1 %1588, label %1597, label %1589

1589:                                             ; preds = %1586
  %1590 = load i8, ptr %29, align 1, !tbaa !96, !range !92, !noundef !93
  %1591 = trunc i8 %1590 to i1
  br i1 %1591, label %1597, label %1592

1592:                                             ; preds = %1589
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #13
  %1593 = load ptr, ptr %10, align 8, !tbaa !5
  %1594 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1593)
  store <2 x float> %1594, ptr %51, align 4
  %1595 = load ptr, ptr %10, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiWindow, ptr %1595, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1596, ptr align 4 %51, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #13
  br label %1597

1597:                                             ; preds = %1592, %1589, %1586, %1582
  br label %1598

1598:                                             ; preds = %1597, %1577
  br label %1599

1599:                                             ; preds = %1598, %1562
  br label %1600

1600:                                             ; preds = %1599, %1548
  %1601 = load ptr, ptr %10, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.ImGuiWindow, ptr %1601, i32 0, i32 10
  %1603 = load i32, ptr %1602, align 4, !tbaa !226
  %1604 = icmp sge i32 %1603, 0
  br i1 %1604, label %1605, label %1670

1605:                                             ; preds = %1600
  %1606 = load ptr, ptr %10, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.ImGuiWindow, ptr %1606, i32 0, i32 38
  %1608 = load i8, ptr %1607, align 2, !tbaa !227, !range !92, !noundef !93
  %1609 = trunc i8 %1608 to i1
  br i1 %1609, label %1670, label %1610

1610:                                             ; preds = %1605
  %1611 = load ptr, ptr %10, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiWindow, ptr %1611, i32 0, i32 7
  %1613 = load ptr, ptr %1612, align 8, !tbaa !178
  %1614 = getelementptr inbounds %struct.ImGuiViewport, ptr %1613, i32 0, i32 1
  %1615 = load i32, ptr %1614, align 4, !tbaa !228
  %1616 = and i32 %1615, 4096
  %1617 = icmp ne i32 %1616, 0
  br i1 %1617, label %1670, label %1618

1618:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #13
  %1619 = load ptr, ptr %10, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.ImGuiWindow, ptr %1619, i32 0, i32 7
  %1621 = load ptr, ptr %1620, align 8, !tbaa !178
  %1622 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1621)
  %1623 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 0
  %1624 = extractvalue { <2 x float>, <2 x float> } %1622, 0
  store <2 x float> %1624, ptr %1623, align 4
  %1625 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 1
  %1626 = extractvalue { <2 x float>, <2 x float> } %1622, 1
  store <2 x float> %1626, ptr %1625, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #13
  %1627 = load ptr, ptr %10, align 8, !tbaa !5
  %1628 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1627)
  %1629 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 0
  %1630 = extractvalue { <2 x float>, <2 x float> } %1628, 0
  store <2 x float> %1630, ptr %1629, align 4
  %1631 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 1
  %1632 = extractvalue { <2 x float>, <2 x float> } %1628, 1
  store <2 x float> %1632, ptr %1631, align 4
  %1633 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %52, ptr noundef nonnull align 4 dereferenceable(16) %53)
  %1634 = xor i1 %1633, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #13
  br i1 %1634, label %1635, label %1669

1635:                                             ; preds = %1618
  %1636 = load ptr, ptr %10, align 8, !tbaa !5
  %1637 = load ptr, ptr %10, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiWindow, ptr %1637, i32 0, i32 2
  %1639 = load i32, ptr %1638, align 8, !tbaa !150
  %1640 = load ptr, ptr %10, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.ImGuiWindow, ptr %1640, i32 0, i32 11
  %1642 = load ptr, ptr %10, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.ImGuiWindow, ptr %1642, i32 0, i32 12
  %1644 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %1636, i32 noundef %1639, ptr noundef nonnull align 4 dereferenceable(8) %1641, ptr noundef nonnull align 4 dereferenceable(8) %1643, i32 noundef 32)
  %1645 = load ptr, ptr %10, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 7
  store ptr %1644, ptr %1646, align 8, !tbaa !178
  %1647 = load ptr, ptr %10, align 8, !tbaa !5
  %1648 = load ptr, ptr %10, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.ImGuiWindow, ptr %1648, i32 0, i32 7
  %1650 = load ptr, ptr %1649, align 8, !tbaa !178
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1647, ptr noundef %1650)
  %1651 = load ptr, ptr %8, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.ImGuiContext, ptr %1651, i32 0, i32 2
  %1653 = getelementptr inbounds %struct.ImGuiIO, ptr %1652, i32 0, i32 0
  %1654 = load i32, ptr %1653, align 8, !tbaa !194
  %1655 = and i32 %1654, 32768
  %1656 = icmp ne i32 %1655, 0
  br i1 %1656, label %1657, label %1663

1657:                                             ; preds = %1635
  %1658 = load ptr, ptr %10, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.ImGuiWindow, ptr %1658, i32 0, i32 7
  %1660 = load ptr, ptr %1659, align 8, !tbaa !178
  %1661 = getelementptr inbounds %struct.ImGuiViewport, ptr %1660, i32 0, i32 6
  %1662 = load float, ptr %1661, align 8, !tbaa !195
  br label %1664

1663:                                             ; preds = %1635
  br label %1664

1664:                                             ; preds = %1663, %1657
  %1665 = phi float [ %1662, %1657 ], [ 1.000000e+00, %1663 ]
  %1666 = load ptr, ptr %10, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.ImGuiWindow, ptr %1666, i32 0, i32 87
  store float %1665, ptr %1667, align 4, !tbaa !196
  %1668 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1668)
  br label %1669

1669:                                             ; preds = %1664, %1618
  br label %1670

1670:                                             ; preds = %1669, %1610, %1605, %1600
  %1671 = load ptr, ptr %10, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.ImGuiWindow, ptr %1671, i32 0, i32 38
  %1673 = load i8, ptr %1672, align 2, !tbaa !227, !range !92, !noundef !93
  %1674 = trunc i8 %1673 to i1
  br i1 %1674, label %1675, label %1678

1675:                                             ; preds = %1670
  %1676 = load ptr, ptr %10, align 8, !tbaa !5
  %1677 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef %1676, ptr noundef %1677)
  br label %1678

1678:                                             ; preds = %1675, %1670
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #13
  %1679 = load ptr, ptr %10, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.ImGuiWindow, ptr %1679, i32 0, i32 7
  %1681 = load ptr, ptr %1680, align 8, !tbaa !178
  %1682 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1681)
  %1683 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 0
  %1684 = extractvalue { <2 x float>, <2 x float> } %1682, 0
  store <2 x float> %1684, ptr %1683, align 4
  %1685 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 1
  %1686 = extractvalue { <2 x float>, <2 x float> } %1682, 1
  store <2 x float> %1686, ptr %1685, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #13
  %1687 = load ptr, ptr %10, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.ImGuiWindow, ptr %1687, i32 0, i32 7
  %1689 = load ptr, ptr %1688, align 8, !tbaa !178
  %1690 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1689)
  %1691 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 0
  %1692 = extractvalue { <2 x float>, <2 x float> } %1690, 0
  store <2 x float> %1692, ptr %1691, align 4
  %1693 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 1
  %1694 = extractvalue { <2 x float>, <2 x float> } %1690, 1
  store <2 x float> %1694, ptr %1693, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1695 = load ptr, ptr %9, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.ImGuiStyle, ptr %1695, i32 0, i32 37
  %1697 = load ptr, ptr %9, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ImGuiStyle, ptr %1697, i32 0, i32 38
  %1699 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1696, ptr noundef nonnull align 4 dereferenceable(8) %1698)
  store <2 x float> %1699, ptr %56, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %1700 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 0
  %1701 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1700, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1701, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %1702 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 1
  %1703 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1702, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1703, ptr %59, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %57, ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  %1704 = load i8, ptr %25, align 1, !tbaa !96, !range !92, !noundef !93
  %1705 = trunc i8 %1704 to i1
  br i1 %1705, label %1754, label %1706

1706:                                             ; preds = %1678
  %1707 = load i32, ptr %7, align 4, !tbaa !9
  %1708 = and i32 %1707, 16777216
  %1709 = icmp ne i32 %1708, 0
  br i1 %1709, label %1754, label %1710

1710:                                             ; preds = %1706
  %1711 = load ptr, ptr %10, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.ImGuiWindow, ptr %1711, i32 0, i32 38
  %1713 = load i8, ptr %1712, align 2, !tbaa !227, !range !92, !noundef !93
  %1714 = trunc i8 %1713 to i1
  br i1 %1714, label %1723, label %1715

1715:                                             ; preds = %1710
  %1716 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1717 = fcmp ogt float %1716, 0.000000e+00
  br i1 %1717, label %1718, label %1723

1718:                                             ; preds = %1715
  %1719 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1720 = fcmp ogt float %1719, 0.000000e+00
  br i1 %1720, label %1721, label %1723

1721:                                             ; preds = %1718
  %1722 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1722, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1753

1723:                                             ; preds = %1718, %1715, %1710
  %1724 = load ptr, ptr %10, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.ImGuiWindow, ptr %1724, i32 0, i32 38
  %1726 = load i8, ptr %1725, align 2, !tbaa !227, !range !92, !noundef !93
  %1727 = trunc i8 %1726 to i1
  br i1 %1727, label %1728, label %1752

1728:                                             ; preds = %1723
  %1729 = load ptr, ptr %8, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct.ImGuiContext, ptr %1729, i32 0, i32 3
  %1731 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1730, i32 0, i32 23
  %1732 = getelementptr inbounds %struct.ImVector.0, ptr %1731, i32 0, i32 0
  %1733 = load i32, ptr %1732, align 8, !tbaa !229
  %1734 = icmp sgt i32 %1733, 0
  br i1 %1734, label %1735, label %1752

1735:                                             ; preds = %1728
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %1736 = load ptr, ptr %10, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.ImGuiWindow, ptr %1736, i32 0, i32 7
  %1738 = load ptr, ptr %1737, align 8, !tbaa !178
  %1739 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %1738)
  store ptr %1739, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %1740 = load ptr, ptr %60, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1740, i32 0, i32 2
  %1742 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1741, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1742, ptr %61, align 4
  %1743 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1743, ptr align 4 %61, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %1744 = load ptr, ptr %60, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1744, i32 0, i32 2
  %1746 = load ptr, ptr %60, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1746, i32 0, i32 3
  %1748 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1745, ptr noundef nonnull align 4 dereferenceable(8) %1747)
  store <2 x float> %1748, ptr %63, align 4
  %1749 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %63, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1749, ptr %62, align 4
  %1750 = getelementptr inbounds %struct.ImRect, ptr %57, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1750, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  %1751 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1751, ptr noundef nonnull align 4 dereferenceable(16) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  br label %1752

1752:                                             ; preds = %1735, %1728, %1723
  br label %1753

1753:                                             ; preds = %1752, %1721
  br label %1754

1754:                                             ; preds = %1753, %1706, %1678
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %1755 = load ptr, ptr %10, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.ImGuiWindow, ptr %1755, i32 0, i32 11
  %1757 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1756)
  store <2 x float> %1757, ptr %64, align 4
  %1758 = load ptr, ptr %10, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.ImGuiWindow, ptr %1758, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1759, ptr align 4 %64, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  %1760 = load ptr, ptr %10, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiWindow, ptr %1760, i32 0, i32 38
  %1762 = load i8, ptr %1761, align 2, !tbaa !227, !range !92, !noundef !93
  %1763 = trunc i8 %1762 to i1
  br i1 %1763, label %1770, label %1764

1764:                                             ; preds = %1754
  %1765 = load ptr, ptr %10, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.ImGuiWindow, ptr %1765, i32 0, i32 106
  %1767 = load i8, ptr %1766, align 1
  %1768 = and i8 %1767, 1
  %1769 = trunc i8 %1768 to i1
  br i1 %1769, label %1770, label %1773

1770:                                             ; preds = %1764, %1754
  %1771 = load ptr, ptr %10, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ImGuiWindow, ptr %1771, i32 0, i32 18
  store float 0.000000e+00, ptr %1772, align 8, !tbaa !230
  br label %1803

1773:                                             ; preds = %1764
  %1774 = load i32, ptr %7, align 4, !tbaa !9
  %1775 = and i32 %1774, 16777216
  %1776 = icmp ne i32 %1775, 0
  br i1 %1776, label %1777, label %1781

1777:                                             ; preds = %1773
  %1778 = load ptr, ptr %9, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ImGuiStyle, ptr %1778, i32 0, i32 8
  %1780 = load float, ptr %1779, align 4, !tbaa !231
  br label %1799

1781:                                             ; preds = %1773
  %1782 = load i32, ptr %7, align 4, !tbaa !9
  %1783 = and i32 %1782, 67108864
  %1784 = icmp ne i32 %1783, 0
  br i1 %1784, label %1785, label %1793

1785:                                             ; preds = %1781
  %1786 = load i32, ptr %7, align 4, !tbaa !9
  %1787 = and i32 %1786, 134217728
  %1788 = icmp ne i32 %1787, 0
  br i1 %1788, label %1793, label %1789

1789:                                             ; preds = %1785
  %1790 = load ptr, ptr %9, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.ImGuiStyle, ptr %1790, i32 0, i32 10
  %1792 = load float, ptr %1791, align 4, !tbaa !232
  br label %1797

1793:                                             ; preds = %1785, %1781
  %1794 = load ptr, ptr %9, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.ImGuiStyle, ptr %1794, i32 0, i32 3
  %1796 = load float, ptr %1795, align 4, !tbaa !233
  br label %1797

1797:                                             ; preds = %1793, %1789
  %1798 = phi float [ %1792, %1789 ], [ %1796, %1793 ]
  br label %1799

1799:                                             ; preds = %1797, %1777
  %1800 = phi float [ %1780, %1777 ], [ %1798, %1797 ]
  %1801 = load ptr, ptr %10, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiWindow, ptr %1801, i32 0, i32 18
  store float %1800, ptr %1802, align 8, !tbaa !230
  br label %1803

1803:                                             ; preds = %1799, %1770
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #13
  store i8 0, ptr %65, align 1, !tbaa !96
  %1804 = load i8, ptr %14, align 1, !tbaa !96, !range !92, !noundef !93
  %1805 = trunc i8 %1804 to i1
  br i1 %1805, label %1806, label %1832

1806:                                             ; preds = %1803
  %1807 = load i32, ptr %7, align 4, !tbaa !9
  %1808 = and i32 %1807, 4096
  %1809 = icmp ne i32 %1808, 0
  br i1 %1809, label %1832, label %1810

1810:                                             ; preds = %1806
  %1811 = load i32, ptr %7, align 4, !tbaa !9
  %1812 = and i32 %1811, 67108864
  %1813 = icmp ne i32 %1812, 0
  br i1 %1813, label %1814, label %1815

1814:                                             ; preds = %1810
  store i8 1, ptr %65, align 1, !tbaa !96
  br label %1831

1815:                                             ; preds = %1810
  %1816 = load ptr, ptr %10, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiWindow, ptr %1816, i32 0, i32 106
  %1818 = load i8, ptr %1817, align 1
  %1819 = and i8 %1818, 1
  %1820 = trunc i8 %1819 to i1
  br i1 %1820, label %1825, label %1821

1821:                                             ; preds = %1815
  %1822 = load i32, ptr %7, align 4, !tbaa !9
  %1823 = and i32 %1822, 16777216
  %1824 = icmp eq i32 %1823, 0
  br i1 %1824, label %1825, label %1830

1825:                                             ; preds = %1821, %1815
  %1826 = load i32, ptr %7, align 4, !tbaa !9
  %1827 = and i32 %1826, 33554432
  %1828 = icmp ne i32 %1827, 0
  br i1 %1828, label %1830, label %1829

1829:                                             ; preds = %1825
  store i8 1, ptr %65, align 1, !tbaa !96
  br label %1830

1830:                                             ; preds = %1829, %1825, %1821
  br label %1831

1831:                                             ; preds = %1830, %1814
  br label %1832

1832:                                             ; preds = %1831, %1806, %1803
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.ImGuiWindow, ptr %1833, i32 0, i32 110
  %1835 = load ptr, ptr %1834, align 8, !tbaa !132
  %1836 = icmp ne ptr %1835, null
  br i1 %1836, label %1844, label %1837

1837:                                             ; preds = %1832
  %1838 = load ptr, ptr %10, align 8, !tbaa !5
  %1839 = getelementptr inbounds %struct.ImGuiWindow, ptr %1838, i32 0, i32 106
  %1840 = load i8, ptr %1839, align 1
  %1841 = and i8 %1840, 1
  %1842 = trunc i8 %1841 to i1
  %1843 = xor i1 %1842, true
  br label %1844

1844:                                             ; preds = %1837, %1832
  %1845 = phi i1 [ true, %1832 ], [ %1843, %1837 ]
  %1846 = zext i1 %1845 to i8
  store i8 %1846, ptr %66, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  store i32 -1, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  store i32 -1, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #13
  call void @llvm.memset.p0.i64(ptr align 16 %69, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #13
  %1847 = load ptr, ptr %10, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.ImGuiWindow, ptr %1847, i32 0, i32 3
  %1849 = load i32, ptr %1848, align 4, !tbaa !121
  %1850 = and i32 %1849, 16777216
  %1851 = icmp ne i32 %1850, 0
  br i1 %1851, label %1852, label %1853

1852:                                             ; preds = %1844
  br label %1861

1853:                                             ; preds = %1844
  %1854 = load ptr, ptr %8, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.ImGuiContext, ptr %1854, i32 0, i32 2
  %1856 = getelementptr inbounds %struct.ImGuiIO, ptr %1855, i32 0, i32 27
  %1857 = load i8, ptr %1856, align 2, !tbaa !234, !range !92, !noundef !93
  %1858 = trunc i8 %1857 to i1
  %1859 = zext i1 %1858 to i64
  %1860 = select i1 %1858, i32 2, i32 1
  br label %1861

1861:                                             ; preds = %1853, %1852
  %1862 = phi i32 [ 0, %1852 ], [ %1860, %1853 ]
  store i32 %1862, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #13
  %1863 = load ptr, ptr %8, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.ImGuiContext, ptr %1863, i32 0, i32 8
  %1865 = load float, ptr %1864, align 8, !tbaa !235
  %1866 = fmul float %1865, 0x3FF19999A0000000
  %1867 = load ptr, ptr %10, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.ImGuiWindow, ptr %1867, i32 0, i32 18
  %1869 = load float, ptr %1868, align 8, !tbaa !230
  %1870 = fadd float %1869, 1.000000e+00
  %1871 = load ptr, ptr %8, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.ImGuiContext, ptr %1871, i32 0, i32 8
  %1873 = load float, ptr %1872, align 8, !tbaa !235
  %1874 = call float @llvm.fmuladd.f32(float %1873, float 0x3FC99999A0000000, float %1870)
  %1875 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1866, float noundef %1874)
  %1876 = fptosi float %1875 to i32
  %1877 = sitofp i32 %1876 to float
  store float %1877, ptr %71, align 4, !tbaa !147
  %1878 = load i8, ptr %66, align 1, !tbaa !96, !range !92, !noundef !93
  %1879 = trunc i8 %1878 to i1
  br i1 %1879, label %1880, label %1904

1880:                                             ; preds = %1861
  %1881 = load ptr, ptr %10, align 8, !tbaa !5
  %1882 = getelementptr inbounds %struct.ImGuiWindow, ptr %1881, i32 0, i32 42
  %1883 = load i8, ptr %1882, align 2, !tbaa !213, !range !92, !noundef !93
  %1884 = trunc i8 %1883 to i1
  br i1 %1884, label %1904, label %1885

1885:                                             ; preds = %1880
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = load i32, ptr %70, align 4, !tbaa !9
  %1888 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %1889 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %1886, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef %67, ptr noundef %68, i32 noundef %1887, ptr noundef %1888, ptr noundef nonnull align 4 dereferenceable(16) %57)
  store i32 %1889, ptr %72, align 4, !tbaa !9
  %1890 = load i32, ptr %72, align 4, !tbaa !9
  %1891 = icmp ne i32 %1890, 0
  br i1 %1891, label %1892, label %1903

1892:                                             ; preds = %1885
  %1893 = load i32, ptr %72, align 4, !tbaa !9
  %1894 = and i32 %1893, 1
  %1895 = icmp ne i32 %1894, 0
  br i1 %1895, label %1896, label %1897

1896:                                             ; preds = %1892
  store i8 1, ptr %37, align 1, !tbaa !96
  br label %1897

1897:                                             ; preds = %1896, %1892
  %1898 = load i32, ptr %72, align 4, !tbaa !9
  %1899 = and i32 %1898, 2
  %1900 = icmp ne i32 %1899, 0
  br i1 %1900, label %1901, label %1902

1901:                                             ; preds = %1897
  store i8 1, ptr %38, align 1, !tbaa !96
  br label %1902

1902:                                             ; preds = %1901, %1897
  br label %1903

1903:                                             ; preds = %1902, %1885
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1904

1904:                                             ; preds = %1903, %1880, %1861
  %1905 = load i32, ptr %67, align 4, !tbaa !9
  %1906 = trunc i32 %1905 to i8
  %1907 = load ptr, ptr %10, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiWindow, ptr %1907, i32 0, i32 50
  store i8 %1906, ptr %1908, align 2, !tbaa !236
  %1909 = load i32, ptr %68, align 4, !tbaa !9
  %1910 = trunc i32 %1909 to i8
  %1911 = load ptr, ptr %10, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.ImGuiWindow, ptr %1911, i32 0, i32 51
  store i8 %1910, ptr %1912, align 1, !tbaa !237
  %1913 = load ptr, ptr %10, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.ImGuiWindow, ptr %1913, i32 0, i32 38
  %1915 = load i8, ptr %1914, align 2, !tbaa !227, !range !92, !noundef !93
  %1916 = trunc i8 %1915 to i1
  br i1 %1916, label %1917, label %1957

1917:                                             ; preds = %1904
  %1918 = load ptr, ptr %10, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.ImGuiWindow, ptr %1918, i32 0, i32 7
  %1920 = load ptr, ptr %1919, align 8, !tbaa !178
  %1921 = getelementptr inbounds %struct.ImGuiViewport, ptr %1920, i32 0, i32 14
  %1922 = load i8, ptr %1921, align 1, !tbaa !238, !range !92, !noundef !93
  %1923 = trunc i8 %1922 to i1
  br i1 %1923, label %1931, label %1924

1924:                                             ; preds = %1917
  %1925 = load ptr, ptr %10, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.ImGuiWindow, ptr %1925, i32 0, i32 11
  %1927 = load ptr, ptr %10, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiWindow, ptr %1927, i32 0, i32 7
  %1929 = load ptr, ptr %1928, align 8, !tbaa !178
  %1930 = getelementptr inbounds %struct.ImGuiViewport, ptr %1929, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1930, ptr align 8 %1926, i64 8, i1 false), !tbaa.struct !156
  br label %1931

1931:                                             ; preds = %1924, %1917
  %1932 = load ptr, ptr %10, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ImGuiWindow, ptr %1932, i32 0, i32 7
  %1934 = load ptr, ptr %1933, align 8, !tbaa !178
  %1935 = getelementptr inbounds %struct.ImGuiViewport, ptr %1934, i32 0, i32 15
  %1936 = load i8, ptr %1935, align 2, !tbaa !239, !range !92, !noundef !93
  %1937 = trunc i8 %1936 to i1
  br i1 %1937, label %1945, label %1938

1938:                                             ; preds = %1931
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.ImGuiWindow, ptr %1939, i32 0, i32 12
  %1941 = load ptr, ptr %10, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiWindow, ptr %1941, i32 0, i32 7
  %1943 = load ptr, ptr %1942, align 8, !tbaa !178
  %1944 = getelementptr inbounds %struct.ImGuiViewport, ptr %1943, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1944, ptr align 8 %1940, i64 8, i1 false), !tbaa.struct !156
  br label %1945

1945:                                             ; preds = %1938, %1931
  %1946 = load ptr, ptr %10, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.ImGuiWindow, ptr %1946, i32 0, i32 7
  %1948 = load ptr, ptr %1947, align 8, !tbaa !178
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1948)
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #13
  %1949 = load ptr, ptr %10, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.ImGuiWindow, ptr %1949, i32 0, i32 7
  %1951 = load ptr, ptr %1950, align 8, !tbaa !178
  %1952 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %1951)
  %1953 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %1954 = extractvalue { <2 x float>, <2 x float> } %1952, 0
  store <2 x float> %1954, ptr %1953, align 4
  %1955 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %1956 = extractvalue { <2 x float>, <2 x float> } %1952, 1
  store <2 x float> %1956, ptr %1955, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %73, i64 16, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #13
  br label %1957

1957:                                             ; preds = %1945, %1904
  %1958 = load ptr, ptr %10, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.ImGuiWindow, ptr %1958, i32 0, i32 7
  %1960 = load ptr, ptr %1959, align 8, !tbaa !178
  %1961 = getelementptr inbounds %struct.ImGuiViewport, ptr %1960, i32 0, i32 2
  %1962 = load ptr, ptr %10, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.ImGuiWindow, ptr %1962, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1963, ptr align 8 %1961, i64 8, i1 false), !tbaa.struct !156
  %1964 = load ptr, ptr %10, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.ImGuiWindow, ptr %1964, i32 0, i32 42
  %1966 = load i8, ptr %1965, align 2, !tbaa !213, !range !92, !noundef !93
  %1967 = trunc i8 %1966 to i1
  br i1 %1967, label %2140, label %1968

1968:                                             ; preds = %1957
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  %1969 = load ptr, ptr %10, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.ImGuiWindow, ptr %1969, i32 0, i32 13
  %1971 = getelementptr inbounds %struct.ImVec2, ptr %1970, i32 0, i32 0
  %1972 = load float, ptr %1971, align 8, !tbaa !160
  %1973 = load ptr, ptr %10, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.ImGuiWindow, ptr %1973, i32 0, i32 13
  %1975 = getelementptr inbounds %struct.ImVec2, ptr %1974, i32 0, i32 1
  %1976 = load float, ptr %1975, align 4, !tbaa !161
  %1977 = load ptr, ptr %10, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.ImGuiWindow, ptr %1977, i32 0, i32 21
  %1979 = load float, ptr %1978, align 4, !tbaa !216
  %1980 = load ptr, ptr %10, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.ImGuiWindow, ptr %1980, i32 0, i32 23
  %1982 = load float, ptr %1981, align 4, !tbaa !217
  %1983 = fadd float %1979, %1982
  %1984 = fsub float %1976, %1983
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef %1972, float noundef %1984)
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  %1985 = load ptr, ptr %10, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.ImGuiWindow, ptr %1985, i32 0, i32 72
  %1987 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1986)
  store <2 x float> %1987, ptr %76, align 4
  %1988 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %76, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %1988, ptr %75, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  %1989 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %1990 = trunc i8 %1989 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #13
  br i1 %1990, label %1991, label %1992

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

1992:                                             ; preds = %1968
  %1993 = load ptr, ptr %10, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiWindow, ptr %1993, i32 0, i32 14
  %1995 = load ptr, ptr %10, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiWindow, ptr %1995, i32 0, i32 17
  %1997 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1996, float noundef 2.000000e+00)
  store <2 x float> %1997, ptr %78, align 4
  %1998 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1994, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %1998, ptr %77, align 4
  br label %1999

1999:                                             ; preds = %1992, %1991
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  %2000 = load i8, ptr %37, align 1, !tbaa !96, !range !92, !noundef !93
  %2001 = trunc i8 %2000 to i1
  br i1 %2001, label %2002, label %2005

2002:                                             ; preds = %1999
  %2003 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 0
  %2004 = load float, ptr %2003, align 4, !tbaa !218
  br label %2008

2005:                                             ; preds = %1999
  %2006 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 0
  %2007 = load float, ptr %2006, align 4, !tbaa !218
  br label %2008

2008:                                             ; preds = %2005, %2002
  %2009 = phi float [ %2004, %2002 ], [ %2007, %2005 ]
  store float %2009, ptr %79, align 4, !tbaa !147
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %2010 = load i8, ptr %38, align 1, !tbaa !96, !range !92, !noundef !93
  %2011 = trunc i8 %2010 to i1
  br i1 %2011, label %2012, label %2015

2012:                                             ; preds = %2008
  %2013 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 1
  %2014 = load float, ptr %2013, align 4, !tbaa !219
  br label %2018

2015:                                             ; preds = %2008
  %2016 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 1
  %2017 = load float, ptr %2016, align 4, !tbaa !219
  br label %2018

2018:                                             ; preds = %2015, %2012
  %2019 = phi float [ %2014, %2012 ], [ %2017, %2015 ]
  store float %2019, ptr %80, align 4, !tbaa !147
  %2020 = load i32, ptr %7, align 4, !tbaa !9
  %2021 = and i32 %2020, 16384
  %2022 = icmp ne i32 %2021, 0
  br i1 %2022, label %2035, label %2023

2023:                                             ; preds = %2018
  %2024 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2025 = load float, ptr %2024, align 4, !tbaa !219
  %2026 = load float, ptr %80, align 4, !tbaa !147
  %2027 = fcmp ogt float %2025, %2026
  br i1 %2027, label %2028, label %2033

2028:                                             ; preds = %2023
  %2029 = load i32, ptr %7, align 4, !tbaa !9
  %2030 = and i32 %2029, 8
  %2031 = icmp ne i32 %2030, 0
  %2032 = xor i1 %2031, true
  br label %2033

2033:                                             ; preds = %2028, %2023
  %2034 = phi i1 [ false, %2023 ], [ %2032, %2028 ]
  br label %2035

2035:                                             ; preds = %2033, %2018
  %2036 = phi i1 [ true, %2018 ], [ %2034, %2033 ]
  %2037 = load ptr, ptr %10, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.ImGuiWindow, ptr %2037, i32 0, i32 37
  %2039 = zext i1 %2036 to i8
  store i8 %2039, ptr %2038, align 1, !tbaa !240
  %2040 = load i32, ptr %7, align 4, !tbaa !9
  %2041 = and i32 %2040, 32768
  %2042 = icmp ne i32 %2041, 0
  br i1 %2042, label %2070, label %2043

2043:                                             ; preds = %2035
  %2044 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 0
  %2045 = load float, ptr %2044, align 4, !tbaa !218
  %2046 = load float, ptr %79, align 4, !tbaa !147
  %2047 = load ptr, ptr %10, align 8, !tbaa !5
  %2048 = getelementptr inbounds %struct.ImGuiWindow, ptr %2047, i32 0, i32 37
  %2049 = load i8, ptr %2048, align 1, !tbaa !240, !range !92, !noundef !93
  %2050 = trunc i8 %2049 to i1
  br i1 %2050, label %2051, label %2055

2051:                                             ; preds = %2043
  %2052 = load ptr, ptr %9, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.ImGuiStyle, ptr %2052, i32 0, i32 21
  %2054 = load float, ptr %2053, align 4, !tbaa !241
  br label %2056

2055:                                             ; preds = %2043
  br label %2056

2056:                                             ; preds = %2055, %2051
  %2057 = phi float [ %2054, %2051 ], [ 0.000000e+00, %2055 ]
  %2058 = fsub float %2046, %2057
  %2059 = fcmp ogt float %2045, %2058
  br i1 %2059, label %2060, label %2068

2060:                                             ; preds = %2056
  %2061 = load i32, ptr %7, align 4, !tbaa !9
  %2062 = and i32 %2061, 8
  %2063 = icmp ne i32 %2062, 0
  br i1 %2063, label %2068, label %2064

2064:                                             ; preds = %2060
  %2065 = load i32, ptr %7, align 4, !tbaa !9
  %2066 = and i32 %2065, 2048
  %2067 = icmp ne i32 %2066, 0
  br label %2068

2068:                                             ; preds = %2064, %2060, %2056
  %2069 = phi i1 [ false, %2060 ], [ false, %2056 ], [ %2067, %2064 ]
  br label %2070

2070:                                             ; preds = %2068, %2035
  %2071 = phi i1 [ true, %2035 ], [ %2069, %2068 ]
  %2072 = load ptr, ptr %10, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiWindow, ptr %2072, i32 0, i32 36
  %2074 = zext i1 %2071 to i8
  store i8 %2074, ptr %2073, align 8, !tbaa !242
  %2075 = load ptr, ptr %10, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiWindow, ptr %2075, i32 0, i32 36
  %2077 = load i8, ptr %2076, align 8, !tbaa !242, !range !92, !noundef !93
  %2078 = trunc i8 %2077 to i1
  br i1 %2078, label %2079, label %2099

2079:                                             ; preds = %2070
  %2080 = load ptr, ptr %10, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.ImGuiWindow, ptr %2080, i32 0, i32 37
  %2082 = load i8, ptr %2081, align 1, !tbaa !240, !range !92, !noundef !93
  %2083 = trunc i8 %2082 to i1
  br i1 %2083, label %2099, label %2084

2084:                                             ; preds = %2079
  %2085 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2086 = load float, ptr %2085, align 4, !tbaa !219
  %2087 = load float, ptr %80, align 4, !tbaa !147
  %2088 = fcmp ogt float %2086, %2087
  br i1 %2088, label %2089, label %2094

2089:                                             ; preds = %2084
  %2090 = load i32, ptr %7, align 4, !tbaa !9
  %2091 = and i32 %2090, 8
  %2092 = icmp ne i32 %2091, 0
  %2093 = xor i1 %2092, true
  br label %2094

2094:                                             ; preds = %2089, %2084
  %2095 = phi i1 [ false, %2084 ], [ %2093, %2089 ]
  %2096 = load ptr, ptr %10, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.ImGuiWindow, ptr %2096, i32 0, i32 37
  %2098 = zext i1 %2095 to i8
  store i8 %2098, ptr %2097, align 1, !tbaa !240
  br label %2099

2099:                                             ; preds = %2094, %2079, %2070
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #13
  %2100 = load ptr, ptr %10, align 8, !tbaa !5
  %2101 = getelementptr inbounds %struct.ImGuiWindow, ptr %2100, i32 0, i32 37
  %2102 = load i8, ptr %2101, align 1, !tbaa !240, !range !92, !noundef !93
  %2103 = trunc i8 %2102 to i1
  br i1 %2103, label %2104, label %2108

2104:                                             ; preds = %2099
  %2105 = load ptr, ptr %9, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.ImGuiStyle, ptr %2105, i32 0, i32 21
  %2107 = load float, ptr %2106, align 4, !tbaa !241
  br label %2109

2108:                                             ; preds = %2099
  br label %2109

2109:                                             ; preds = %2108, %2104
  %2110 = phi float [ %2107, %2104 ], [ 0.000000e+00, %2108 ]
  %2111 = load ptr, ptr %10, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.ImGuiWindow, ptr %2111, i32 0, i32 36
  %2113 = load i8, ptr %2112, align 8, !tbaa !242, !range !92, !noundef !93
  %2114 = trunc i8 %2113 to i1
  br i1 %2114, label %2115, label %2119

2115:                                             ; preds = %2109
  %2116 = load ptr, ptr %9, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.ImGuiStyle, ptr %2116, i32 0, i32 21
  %2118 = load float, ptr %2117, align 4, !tbaa !241
  br label %2120

2119:                                             ; preds = %2109
  br label %2120

2120:                                             ; preds = %2119, %2115
  %2121 = phi float [ %2118, %2115 ], [ 0.000000e+00, %2119 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %81, float noundef %2110, float noundef %2121)
  %2122 = load ptr, ptr %10, align 8, !tbaa !5
  %2123 = getelementptr inbounds %struct.ImGuiWindow, ptr %2122, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2123, ptr align 4 %81, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #13
  %2124 = load ptr, ptr %10, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.ImGuiWindow, ptr %2124, i32 0, i32 35
  %2126 = getelementptr inbounds %struct.ImVec2, ptr %2125, i32 0, i32 0
  %2127 = load float, ptr %2126, align 8, !tbaa !243
  %2128 = load ptr, ptr %10, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.ImGuiWindow, ptr %2128, i32 0, i32 22
  %2130 = load float, ptr %2129, align 8, !tbaa !215
  %2131 = fadd float %2130, %2127
  store float %2131, ptr %2129, align 8, !tbaa !215
  %2132 = load ptr, ptr %10, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiWindow, ptr %2132, i32 0, i32 35
  %2134 = getelementptr inbounds %struct.ImVec2, ptr %2133, i32 0, i32 1
  %2135 = load float, ptr %2134, align 4, !tbaa !244
  %2136 = load ptr, ptr %10, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.ImGuiWindow, ptr %2136, i32 0, i32 23
  %2138 = load float, ptr %2137, align 4, !tbaa !217
  %2139 = fadd float %2138, %2135
  store float %2139, ptr %2137, align 4, !tbaa !217
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  br label %2140

2140:                                             ; preds = %2120, %1957
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #13
  %2141 = load i32, ptr %7, align 4, !tbaa !9
  %2142 = and i32 %2141, 16777216
  %2143 = icmp ne i32 %2142, 0
  br i1 %2143, label %2144, label %2154

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

2148:                                             ; preds = %2144
  %2149 = load i8, ptr %29, align 1, !tbaa !96, !range !92, !noundef !93
  %2150 = trunc i8 %2149 to i1
  br i1 %2150, label %2154, label %2151

2151:                                             ; preds = %2148
  %2152 = load ptr, ptr %22, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiWindow, ptr %2152, i32 0, i32 76
  br label %2155

2154:                                             ; preds = %2148, %2144, %2140
  br label %2155

2155:                                             ; preds = %2154, %2151
  %2156 = phi ptr [ %2153, %2151 ], [ %54, %2154 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 4 %2156, i64 16, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #13
  %2157 = load ptr, ptr %10, align 8, !tbaa !5
  %2158 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %2157)
  %2159 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 0
  %2160 = extractvalue { <2 x float>, <2 x float> } %2158, 0
  store <2 x float> %2160, ptr %2159, align 4
  %2161 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %83, i32 0, i32 1
  %2162 = extractvalue { <2 x float>, <2 x float> } %2158, 1
  store <2 x float> %2162, ptr %2161, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #13
  %2163 = load ptr, ptr %10, align 8, !tbaa !5
  %2164 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %2163)
  %2165 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %84, i32 0, i32 0
  %2166 = extractvalue { <2 x float>, <2 x float> } %2164, 0
  store <2 x float> %2166, ptr %2165, align 4
  %2167 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %84, i32 0, i32 1
  %2168 = extractvalue { <2 x float>, <2 x float> } %2164, 1
  store <2 x float> %2168, ptr %2167, align 4
  %2169 = load ptr, ptr %10, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 71
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2170, ptr align 4 %83, i64 16, i1 false), !tbaa.struct !174
  %2171 = load ptr, ptr %10, align 8, !tbaa !5
  %2172 = getelementptr inbounds %struct.ImGuiWindow, ptr %2171, i32 0, i32 106
  %2173 = load i8, ptr %2172, align 1
  %2174 = and i8 %2173, 1
  %2175 = trunc i8 %2174 to i1
  br i1 %2175, label %2176, label %2185

2176:                                             ; preds = %2155
  %2177 = load ptr, ptr %10, align 8, !tbaa !5
  %2178 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %2177)
  %2179 = load ptr, ptr %10, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.ImGuiWindow, ptr %2179, i32 0, i32 71
  %2181 = getelementptr inbounds %struct.ImRect, ptr %2180, i32 0, i32 0
  %2182 = getelementptr inbounds %struct.ImVec2, ptr %2181, i32 0, i32 1
  %2183 = load float, ptr %2182, align 4, !tbaa !245
  %2184 = fadd float %2183, %2178
  store float %2184, ptr %2182, align 4, !tbaa !245
  br label %2185

2185:                                             ; preds = %2176, %2155
  %2186 = load ptr, ptr %10, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiWindow, ptr %2186, i32 0, i32 71
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2187, ptr noundef nonnull align 4 dereferenceable(16) %82)
  %2188 = load ptr, ptr %10, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.ImGuiWindow, ptr %2188, i32 0, i32 11
  %2190 = getelementptr inbounds %struct.ImVec2, ptr %2189, i32 0, i32 0
  %2191 = load float, ptr %2190, align 8, !tbaa !246
  %2192 = load ptr, ptr %10, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.ImGuiWindow, ptr %2192, i32 0, i32 20
  %2194 = load float, ptr %2193, align 8, !tbaa !214
  %2195 = fadd float %2191, %2194
  %2196 = load ptr, ptr %10, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiWindow, ptr %2196, i32 0, i32 72
  %2198 = getelementptr inbounds %struct.ImRect, ptr %2197, i32 0, i32 0
  %2199 = getelementptr inbounds %struct.ImVec2, ptr %2198, i32 0, i32 0
  store float %2195, ptr %2199, align 8, !tbaa !247
  %2200 = load ptr, ptr %10, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.ImGuiWindow, ptr %2200, i32 0, i32 11
  %2202 = getelementptr inbounds %struct.ImVec2, ptr %2201, i32 0, i32 1
  %2203 = load float, ptr %2202, align 4, !tbaa !248
  %2204 = load ptr, ptr %10, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiWindow, ptr %2204, i32 0, i32 21
  %2206 = load float, ptr %2205, align 4, !tbaa !216
  %2207 = fadd float %2203, %2206
  %2208 = load ptr, ptr %10, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiWindow, ptr %2208, i32 0, i32 72
  %2210 = getelementptr inbounds %struct.ImRect, ptr %2209, i32 0, i32 0
  %2211 = getelementptr inbounds %struct.ImVec2, ptr %2210, i32 0, i32 1
  store float %2207, ptr %2211, align 4, !tbaa !249
  %2212 = load ptr, ptr %10, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.ImGuiWindow, ptr %2212, i32 0, i32 11
  %2214 = getelementptr inbounds %struct.ImVec2, ptr %2213, i32 0, i32 0
  %2215 = load float, ptr %2214, align 8, !tbaa !246
  %2216 = load ptr, ptr %10, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiWindow, ptr %2216, i32 0, i32 12
  %2218 = getelementptr inbounds %struct.ImVec2, ptr %2217, i32 0, i32 0
  %2219 = load float, ptr %2218, align 8, !tbaa !192
  %2220 = fadd float %2215, %2219
  %2221 = load ptr, ptr %10, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.ImGuiWindow, ptr %2221, i32 0, i32 22
  %2223 = load float, ptr %2222, align 8, !tbaa !215
  %2224 = fsub float %2220, %2223
  %2225 = load ptr, ptr %10, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ImGuiWindow, ptr %2225, i32 0, i32 72
  %2227 = getelementptr inbounds %struct.ImRect, ptr %2226, i32 0, i32 1
  %2228 = getelementptr inbounds %struct.ImVec2, ptr %2227, i32 0, i32 0
  store float %2224, ptr %2228, align 8, !tbaa !250
  %2229 = load ptr, ptr %10, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.ImGuiWindow, ptr %2229, i32 0, i32 11
  %2231 = getelementptr inbounds %struct.ImVec2, ptr %2230, i32 0, i32 1
  %2232 = load float, ptr %2231, align 4, !tbaa !248
  %2233 = load ptr, ptr %10, align 8, !tbaa !5
  %2234 = getelementptr inbounds %struct.ImGuiWindow, ptr %2233, i32 0, i32 12
  %2235 = getelementptr inbounds %struct.ImVec2, ptr %2234, i32 0, i32 1
  %2236 = load float, ptr %2235, align 4, !tbaa !193
  %2237 = fadd float %2232, %2236
  %2238 = load ptr, ptr %10, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.ImGuiWindow, ptr %2238, i32 0, i32 23
  %2240 = load float, ptr %2239, align 4, !tbaa !217
  %2241 = fsub float %2237, %2240
  %2242 = load ptr, ptr %10, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.ImGuiWindow, ptr %2242, i32 0, i32 72
  %2244 = getelementptr inbounds %struct.ImRect, ptr %2243, i32 0, i32 1
  %2245 = getelementptr inbounds %struct.ImVec2, ptr %2244, i32 0, i32 1
  store float %2241, ptr %2245, align 4, !tbaa !251
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #13
  %2246 = load i32, ptr %7, align 4, !tbaa !9
  %2247 = and i32 %2246, 1024
  %2248 = icmp ne i32 %2247, 0
  br i1 %2248, label %2253, label %2249

2249:                                             ; preds = %2185
  %2250 = load i32, ptr %7, align 4, !tbaa !9
  %2251 = and i32 %2250, 1
  %2252 = icmp ne i32 %2251, 0
  br i1 %2252, label %2257, label %2253

2253:                                             ; preds = %2249, %2185
  %2254 = load ptr, ptr %9, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.ImGuiStyle, ptr %2254, i32 0, i32 14
  %2256 = load float, ptr %2255, align 4, !tbaa !252
  br label %2261

2257:                                             ; preds = %2249
  %2258 = load ptr, ptr %10, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.ImGuiWindow, ptr %2258, i32 0, i32 19
  %2260 = load float, ptr %2259, align 4, !tbaa !198
  br label %2261

2261:                                             ; preds = %2257, %2253
  %2262 = phi float [ %2256, %2253 ], [ %2260, %2257 ]
  store float %2262, ptr %85, align 4, !tbaa !147
  %2263 = load ptr, ptr %10, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiWindow, ptr %2263, i32 0, i32 72
  %2265 = getelementptr inbounds %struct.ImRect, ptr %2264, i32 0, i32 0
  %2266 = getelementptr inbounds %struct.ImVec2, ptr %2265, i32 0, i32 0
  %2267 = load float, ptr %2266, align 8, !tbaa !247
  %2268 = fadd float 5.000000e-01, %2267
  %2269 = load ptr, ptr %10, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.ImGuiWindow, ptr %2269, i32 0, i32 17
  %2271 = getelementptr inbounds %struct.ImVec2, ptr %2270, i32 0, i32 0
  %2272 = load float, ptr %2271, align 8, !tbaa !202
  %2273 = fmul float %2272, 5.000000e-01
  %2274 = call noundef float @_ZL7ImTruncf(float noundef %2273)
  %2275 = load ptr, ptr %10, align 8, !tbaa !5
  %2276 = getelementptr inbounds %struct.ImGuiWindow, ptr %2275, i32 0, i32 19
  %2277 = load float, ptr %2276, align 4, !tbaa !198
  %2278 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2274, float noundef %2277)
  %2279 = fadd float %2268, %2278
  %2280 = call noundef float @_ZL7ImFloorf(float noundef %2279)
  %2281 = load ptr, ptr %10, align 8, !tbaa !5
  %2282 = getelementptr inbounds %struct.ImGuiWindow, ptr %2281, i32 0, i32 73
  %2283 = getelementptr inbounds %struct.ImRect, ptr %2282, i32 0, i32 0
  %2284 = getelementptr inbounds %struct.ImVec2, ptr %2283, i32 0, i32 0
  store float %2280, ptr %2284, align 8, !tbaa !253
  %2285 = load ptr, ptr %10, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.ImGuiWindow, ptr %2285, i32 0, i32 72
  %2287 = getelementptr inbounds %struct.ImRect, ptr %2286, i32 0, i32 0
  %2288 = getelementptr inbounds %struct.ImVec2, ptr %2287, i32 0, i32 1
  %2289 = load float, ptr %2288, align 4, !tbaa !249
  %2290 = fadd float 5.000000e-01, %2289
  %2291 = load float, ptr %85, align 4, !tbaa !147
  %2292 = fadd float %2290, %2291
  %2293 = call noundef float @_ZL7ImFloorf(float noundef %2292)
  %2294 = load ptr, ptr %10, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.ImGuiWindow, ptr %2294, i32 0, i32 73
  %2296 = getelementptr inbounds %struct.ImRect, ptr %2295, i32 0, i32 0
  %2297 = getelementptr inbounds %struct.ImVec2, ptr %2296, i32 0, i32 1
  store float %2293, ptr %2297, align 4, !tbaa !254
  %2298 = load ptr, ptr %10, align 8, !tbaa !5
  %2299 = getelementptr inbounds %struct.ImGuiWindow, ptr %2298, i32 0, i32 72
  %2300 = getelementptr inbounds %struct.ImRect, ptr %2299, i32 0, i32 1
  %2301 = getelementptr inbounds %struct.ImVec2, ptr %2300, i32 0, i32 0
  %2302 = load float, ptr %2301, align 8, !tbaa !250
  %2303 = fadd float 5.000000e-01, %2302
  %2304 = load ptr, ptr %10, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiWindow, ptr %2304, i32 0, i32 17
  %2306 = getelementptr inbounds %struct.ImVec2, ptr %2305, i32 0, i32 0
  %2307 = load float, ptr %2306, align 8, !tbaa !202
  %2308 = fmul float %2307, 5.000000e-01
  %2309 = call noundef float @_ZL7ImTruncf(float noundef %2308)
  %2310 = load ptr, ptr %10, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 19
  %2312 = load float, ptr %2311, align 4, !tbaa !198
  %2313 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2309, float noundef %2312)
  %2314 = fsub float %2303, %2313
  %2315 = call noundef float @_ZL7ImFloorf(float noundef %2314)
  %2316 = load ptr, ptr %10, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiWindow, ptr %2316, i32 0, i32 73
  %2318 = getelementptr inbounds %struct.ImRect, ptr %2317, i32 0, i32 1
  %2319 = getelementptr inbounds %struct.ImVec2, ptr %2318, i32 0, i32 0
  store float %2315, ptr %2319, align 8, !tbaa !255
  %2320 = load ptr, ptr %10, align 8, !tbaa !5
  %2321 = getelementptr inbounds %struct.ImGuiWindow, ptr %2320, i32 0, i32 72
  %2322 = getelementptr inbounds %struct.ImRect, ptr %2321, i32 0, i32 1
  %2323 = getelementptr inbounds %struct.ImVec2, ptr %2322, i32 0, i32 1
  %2324 = load float, ptr %2323, align 4, !tbaa !251
  %2325 = fadd float 5.000000e-01, %2324
  %2326 = load ptr, ptr %10, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiWindow, ptr %2326, i32 0, i32 19
  %2328 = load float, ptr %2327, align 4, !tbaa !198
  %2329 = fsub float %2325, %2328
  %2330 = call noundef float @_ZL7ImFloorf(float noundef %2329)
  %2331 = load ptr, ptr %10, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiWindow, ptr %2331, i32 0, i32 73
  %2333 = getelementptr inbounds %struct.ImRect, ptr %2332, i32 0, i32 1
  %2334 = getelementptr inbounds %struct.ImVec2, ptr %2333, i32 0, i32 1
  store float %2330, ptr %2334, align 4, !tbaa !256
  %2335 = load ptr, ptr %10, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.ImGuiWindow, ptr %2335, i32 0, i32 73
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2336, ptr noundef nonnull align 4 dereferenceable(16) %82)
  %2337 = load ptr, ptr %10, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.ImGuiWindow, ptr %2337, i32 0, i32 12
  %2339 = getelementptr inbounds %struct.ImVec2, ptr %2338, i32 0, i32 0
  %2340 = load float, ptr %2339, align 8, !tbaa !192
  %2341 = fcmp ogt float %2340, 0.000000e+00
  br i1 %2341, label %2342, label %2359

2342:                                             ; preds = %2261
  %2343 = load i32, ptr %7, align 4, !tbaa !9
  %2344 = and i32 %2343, 33554432
  %2345 = icmp ne i32 %2344, 0
  br i1 %2345, label %2359, label %2346

2346:                                             ; preds = %2342
  %2347 = load i32, ptr %7, align 4, !tbaa !9
  %2348 = and i32 %2347, 64
  %2349 = icmp ne i32 %2348, 0
  br i1 %2349, label %2359, label %2350

2350:                                             ; preds = %2346
  %2351 = load ptr, ptr %10, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.ImGuiWindow, ptr %2351, i32 0, i32 12
  %2353 = getelementptr inbounds %struct.ImVec2, ptr %2352, i32 0, i32 0
  %2354 = load float, ptr %2353, align 8, !tbaa !192
  %2355 = fmul float %2354, 0x3FE4CCCCC0000000
  %2356 = call noundef float @_ZL7ImTruncf(float noundef %2355)
  %2357 = load ptr, ptr %10, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 83
  store float %2356, ptr %2358, align 4, !tbaa !257
  br label %2367

2359:                                             ; preds = %2346, %2342, %2261
  %2360 = load ptr, ptr %8, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiContext, ptr %2360, i32 0, i32 8
  %2362 = load float, ptr %2361, align 8, !tbaa !235
  %2363 = fmul float %2362, 1.600000e+01
  %2364 = call noundef float @_ZL7ImTruncf(float noundef %2363)
  %2365 = load ptr, ptr %10, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 83
  store float %2364, ptr %2366, align 4, !tbaa !257
  br label %2367

2367:                                             ; preds = %2359, %2350
  %2368 = load ptr, ptr %10, align 8, !tbaa !5
  %2369 = getelementptr inbounds %struct.ImGuiWindow, ptr %2368, i32 0, i32 14
  %2370 = getelementptr inbounds %struct.ImVec2, ptr %2369, i32 0, i32 0
  %2371 = load float, ptr %2370, align 8, !tbaa !258
  %2372 = load ptr, ptr %10, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.ImGuiWindow, ptr %2372, i32 0, i32 17
  %2374 = getelementptr inbounds %struct.ImVec2, ptr %2373, i32 0, i32 0
  %2375 = load float, ptr %2374, align 8, !tbaa !202
  %2376 = call float @llvm.fmuladd.f32(float %2375, float 2.000000e+00, float %2371)
  %2377 = load ptr, ptr %10, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.ImGuiWindow, ptr %2377, i32 0, i32 72
  %2379 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2378)
  %2380 = fsub float %2376, %2379
  %2381 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2380)
  %2382 = load ptr, ptr %10, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiWindow, ptr %2382, i32 0, i32 31
  %2384 = getelementptr inbounds %struct.ImVec2, ptr %2383, i32 0, i32 0
  store float %2381, ptr %2384, align 8, !tbaa !259
  %2385 = load ptr, ptr %10, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiWindow, ptr %2385, i32 0, i32 14
  %2387 = getelementptr inbounds %struct.ImVec2, ptr %2386, i32 0, i32 1
  %2388 = load float, ptr %2387, align 4, !tbaa !260
  %2389 = load ptr, ptr %10, align 8, !tbaa !5
  %2390 = getelementptr inbounds %struct.ImGuiWindow, ptr %2389, i32 0, i32 17
  %2391 = getelementptr inbounds %struct.ImVec2, ptr %2390, i32 0, i32 1
  %2392 = load float, ptr %2391, align 4, !tbaa !261
  %2393 = call float @llvm.fmuladd.f32(float %2392, float 2.000000e+00, float %2388)
  %2394 = load ptr, ptr %10, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiWindow, ptr %2394, i32 0, i32 72
  %2396 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2395)
  %2397 = fsub float %2393, %2396
  %2398 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2397)
  %2399 = load ptr, ptr %10, align 8, !tbaa !5
  %2400 = getelementptr inbounds %struct.ImGuiWindow, ptr %2399, i32 0, i32 31
  %2401 = getelementptr inbounds %struct.ImVec2, ptr %2400, i32 0, i32 1
  store float %2398, ptr %2401, align 4, !tbaa !262
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  %2402 = load ptr, ptr %10, align 8, !tbaa !5
  %2403 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2402)
  store <2 x float> %2403, ptr %86, align 4
  %2404 = load ptr, ptr %10, align 8, !tbaa !5
  %2405 = getelementptr inbounds %struct.ImGuiWindow, ptr %2404, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2405, ptr align 4 %86, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2406 = load ptr, ptr %10, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.ImGuiWindow, ptr %2406, i32 0, i32 32
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2407, ptr align 4 %87, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #13
  %2408 = load ptr, ptr %10, align 8, !tbaa !5
  %2409 = getelementptr inbounds %struct.ImGuiWindow, ptr %2408, i32 0, i32 25
  store float 0.000000e+00, ptr %2409, align 4, !tbaa !263
  %2410 = load ptr, ptr %10, align 8, !tbaa !5
  %2411 = getelementptr inbounds %struct.ImGuiWindow, ptr %2410, i32 0, i32 24
  store float 0.000000e+00, ptr %2411, align 8, !tbaa !264
  %2412 = load ptr, ptr %10, align 8, !tbaa !5
  %2413 = getelementptr inbounds %struct.ImGuiWindow, ptr %2412, i32 0, i32 89
  %2414 = load ptr, ptr %2413, align 8, !tbaa !175
  %2415 = getelementptr inbounds %struct.ImDrawList, ptr %2414, i32 0, i32 0
  %2416 = getelementptr inbounds %struct.ImVector.38, ptr %2415, i32 0, i32 0
  %2417 = load i32, ptr %2416, align 8, !tbaa !265
  %2418 = icmp eq i32 %2417, 1
  br i1 %2418, label %2419, label %2428

2419:                                             ; preds = %2367
  %2420 = load ptr, ptr %10, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 89
  %2422 = load ptr, ptr %2421, align 8, !tbaa !175
  %2423 = getelementptr inbounds %struct.ImDrawList, ptr %2422, i32 0, i32 0
  %2424 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2423, i32 noundef 0)
  %2425 = getelementptr inbounds %struct.ImDrawCmd, ptr %2424, i32 0, i32 4
  %2426 = load i32, ptr %2425, align 8, !tbaa !266
  %2427 = icmp eq i32 %2426, 0
  br label %2428

2428:                                             ; preds = %2419, %2367
  %2429 = phi i1 [ false, %2367 ], [ %2427, %2419 ]
  br i1 %2429, label %2430, label %2431

2430:                                             ; preds = %2428
  br label %2433

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

2432:                                             ; No predecessors!
  br label %2433

2433:                                             ; preds = %2432, %2430
  %2434 = load ptr, ptr %10, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.ImGuiWindow, ptr %2434, i32 0, i32 89
  %2436 = load ptr, ptr %2435, align 8, !tbaa !175
  %2437 = load ptr, ptr %8, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiContext, ptr %2437, i32 0, i32 7
  %2439 = load ptr, ptr %2438, align 8, !tbaa !268
  %2440 = getelementptr inbounds %struct.ImFont, ptr %2439, i32 0, i32 6
  %2441 = load ptr, ptr %2440, align 8, !tbaa !269
  %2442 = getelementptr inbounds %struct.ImFontAtlas, ptr %2441, i32 0, i32 2
  %2443 = load ptr, ptr %2442, align 8, !tbaa !270
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %2436, ptr noundef %2443)
  %2444 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 0
  %2445 = getelementptr inbounds %struct.ImRect, ptr %82, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2444, ptr noundef nonnull align 4 dereferenceable(8) %2445, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #13
  %2446 = load ptr, ptr %10, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiWindow, ptr %2446, i32 0, i32 106
  %2448 = load i8, ptr %2447, align 1
  %2449 = and i8 %2448, 1
  %2450 = trunc i8 %2449 to i1
  br i1 %2450, label %2451, label %2458

2451:                                             ; preds = %2433
  %2452 = load ptr, ptr %10, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiWindow, ptr %2452, i32 0, i32 106
  %2454 = load i8, ptr %2453, align 1
  %2455 = lshr i8 %2454, 2
  %2456 = and i8 %2455, 1
  %2457 = trunc i8 %2456 to i1
  br label %2458

2458:                                             ; preds = %2451, %2433
  %2459 = phi i1 [ true, %2433 ], [ %2457, %2451 ]
  %2460 = zext i1 %2459 to i8
  store i8 %2460, ptr %88, align 1, !tbaa !96
  %2461 = load i8, ptr %88, align 1, !tbaa !96, !range !92, !noundef !93
  %2462 = trunc i8 %2461 to i1
  br i1 %2462, label %2463, label %2615

2463:                                             ; preds = %2458
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  store i8 0, ptr %89, align 1, !tbaa !96
  %2464 = load i32, ptr %7, align 4, !tbaa !9
  %2465 = and i32 %2464, 16777216
  %2466 = icmp ne i32 %2465, 0
  br i1 %2466, label %2467, label %2540

2467:                                             ; preds = %2463
  %2468 = load i32, ptr %7, align 4, !tbaa !9
  %2469 = and i32 %2468, 67108864
  %2470 = icmp ne i32 %2469, 0
  br i1 %2470, label %2540, label %2471

2471:                                             ; preds = %2467
  %2472 = load i8, ptr %29, align 1, !tbaa !96, !range !92, !noundef !93
  %2473 = trunc i8 %2472 to i1
  br i1 %2473, label %2540, label %2474

2474:                                             ; preds = %2471
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #13
  %2475 = load ptr, ptr %22, align 8, !tbaa !5
  %2476 = getelementptr inbounds %struct.ImGuiWindow, ptr %2475, i32 0, i32 70
  %2477 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2476, i32 0, i32 26
  %2478 = getelementptr inbounds %struct.ImVector.4, ptr %2477, i32 0, i32 0
  %2479 = load i32, ptr %2478, align 8, !tbaa !224
  %2480 = icmp sge i32 %2479, 2
  br i1 %2480, label %2481, label %2493

2481:                                             ; preds = %2474
  %2482 = load ptr, ptr %22, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ImGuiWindow, ptr %2482, i32 0, i32 70
  %2484 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2483, i32 0, i32 26
  %2485 = load ptr, ptr %22, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.ImGuiWindow, ptr %2485, i32 0, i32 70
  %2487 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2486, i32 0, i32 26
  %2488 = getelementptr inbounds %struct.ImVector.4, ptr %2487, i32 0, i32 0
  %2489 = load i32, ptr %2488, align 8, !tbaa !224
  %2490 = sub nsw i32 %2489, 2
  %2491 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2484, i32 noundef %2490)
  %2492 = load ptr, ptr %2491, align 8, !tbaa !5
  br label %2494

2493:                                             ; preds = %2474
  br label %2494

2494:                                             ; preds = %2493, %2481
  %2495 = phi ptr [ %2492, %2481 ], [ null, %2493 ]
  store ptr %2495, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #13
  %2496 = load ptr, ptr %90, align 8, !tbaa !5
  %2497 = icmp ne ptr %2496, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %92) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #13
  br i1 %2497, label %2498, label %2512

2498:                                             ; preds = %2494
  %2499 = load ptr, ptr %90, align 8, !tbaa !5
  %2500 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %2499)
  %2501 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %92, i32 0, i32 0
  %2502 = extractvalue { <2 x float>, <2 x float> } %2500, 0
  store <2 x float> %2502, ptr %2501, align 4
  %2503 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %92, i32 0, i32 1
  %2504 = extractvalue { <2 x float>, <2 x float> } %2500, 1
  store <2 x float> %2504, ptr %2503, align 4
  %2505 = load ptr, ptr %10, align 8, !tbaa !5
  %2506 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %2505)
  %2507 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 0
  %2508 = extractvalue { <2 x float>, <2 x float> } %2506, 0
  store <2 x float> %2508, ptr %2507, align 4
  %2509 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %93, i32 0, i32 1
  %2510 = extractvalue { <2 x float>, <2 x float> } %2506, 1
  store <2 x float> %2510, ptr %2509, align 4
  %2511 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %92, ptr noundef nonnull align 4 dereferenceable(16) %93)
  br label %2513

2512:                                             ; preds = %2494
  br label %2513

2513:                                             ; preds = %2512, %2498
  %2514 = phi i1 [ %2511, %2498 ], [ false, %2512 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %92) #13
  %2515 = zext i1 %2514 to i8
  store i8 %2515, ptr %91, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #13
  %2516 = load ptr, ptr %22, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiWindow, ptr %2516, i32 0, i32 89
  %2518 = load ptr, ptr %2517, align 8, !tbaa !175
  %2519 = getelementptr inbounds %struct.ImDrawList, ptr %2518, i32 0, i32 2
  %2520 = getelementptr inbounds %struct.ImVector.39, ptr %2519, i32 0, i32 0
  %2521 = load i32, ptr %2520, align 8, !tbaa !274
  %2522 = icmp eq i32 %2521, 0
  %2523 = zext i1 %2522 to i8
  store i8 %2523, ptr %94, align 1, !tbaa !96
  %2524 = load ptr, ptr %10, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.ImGuiWindow, ptr %2524, i32 0, i32 89
  %2526 = load ptr, ptr %2525, align 8, !tbaa !175
  %2527 = getelementptr inbounds %struct.ImDrawList, ptr %2526, i32 0, i32 0
  %2528 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2527)
  %2529 = getelementptr inbounds %struct.ImDrawCmd, ptr %2528, i32 0, i32 4
  %2530 = load i32, ptr %2529, align 8, !tbaa !266
  %2531 = icmp eq i32 %2530, 0
  br i1 %2531, label %2532, label %2539

2532:                                             ; preds = %2513
  %2533 = load i8, ptr %94, align 1, !tbaa !96, !range !92, !noundef !93
  %2534 = trunc i8 %2533 to i1
  br i1 %2534, label %2539, label %2535

2535:                                             ; preds = %2532
  %2536 = load i8, ptr %91, align 1, !tbaa !96, !range !92, !noundef !93
  %2537 = trunc i8 %2536 to i1
  br i1 %2537, label %2539, label %2538

2538:                                             ; preds = %2535
  store i8 1, ptr %89, align 1, !tbaa !96
  br label %2539

2539:                                             ; preds = %2538, %2535, %2532, %2513
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #13
  br label %2540

2540:                                             ; preds = %2539, %2471, %2467, %2463
  %2541 = load i8, ptr %89, align 1, !tbaa !96, !range !92, !noundef !93
  %2542 = trunc i8 %2541 to i1
  br i1 %2542, label %2543, label %2549

2543:                                             ; preds = %2540
  %2544 = load ptr, ptr %22, align 8, !tbaa !5
  %2545 = getelementptr inbounds %struct.ImGuiWindow, ptr %2544, i32 0, i32 89
  %2546 = load ptr, ptr %2545, align 8, !tbaa !175
  %2547 = load ptr, ptr %10, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.ImGuiWindow, ptr %2547, i32 0, i32 89
  store ptr %2546, ptr %2548, align 8, !tbaa !175
  br label %2549

2549:                                             ; preds = %2543, %2540
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #13
  %2550 = load ptr, ptr %8, align 8, !tbaa !5
  %2551 = getelementptr inbounds %struct.ImGuiContext, ptr %2550, i32 0, i32 146
  %2552 = load ptr, ptr %2551, align 8, !tbaa !275
  %2553 = icmp ne ptr %2552, null
  br i1 %2553, label %2554, label %2558

2554:                                             ; preds = %2549
  %2555 = load ptr, ptr %8, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.ImGuiContext, ptr %2555, i32 0, i32 146
  %2557 = load ptr, ptr %2556, align 8, !tbaa !275
  br label %2562

2558:                                             ; preds = %2549
  %2559 = load ptr, ptr %8, align 8, !tbaa !5
  %2560 = getelementptr inbounds %struct.ImGuiContext, ptr %2559, i32 0, i32 102
  %2561 = load ptr, ptr %2560, align 8, !tbaa !276
  br label %2562

2562:                                             ; preds = %2558, %2554
  %2563 = phi ptr [ %2557, %2554 ], [ %2561, %2558 ]
  store ptr %2563, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #13
  %2564 = load i8, ptr %65, align 1, !tbaa !96, !range !92, !noundef !93
  %2565 = trunc i8 %2564 to i1
  br i1 %2565, label %2596, label %2566

2566:                                             ; preds = %2562
  %2567 = load ptr, ptr %95, align 8, !tbaa !5
  %2568 = icmp ne ptr %2567, null
  br i1 %2568, label %2569, label %2594

2569:                                             ; preds = %2566
  %2570 = load ptr, ptr %10, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.ImGuiWindow, ptr %2570, i32 0, i32 96
  %2572 = load ptr, ptr %2571, align 8, !tbaa !277
  %2573 = load ptr, ptr %95, align 8, !tbaa !5
  %2574 = getelementptr inbounds %struct.ImGuiWindow, ptr %2573, i32 0, i32 96
  %2575 = load ptr, ptr %2574, align 8, !tbaa !277
  %2576 = icmp eq ptr %2572, %2575
  br i1 %2576, label %2592, label %2577

2577:                                             ; preds = %2569
  %2578 = load ptr, ptr %10, align 8, !tbaa !5
  %2579 = getelementptr inbounds %struct.ImGuiWindow, ptr %2578, i32 0, i32 109
  %2580 = load ptr, ptr %2579, align 8, !tbaa !131
  %2581 = icmp ne ptr %2580, null
  br i1 %2581, label %2582, label %2590

2582:                                             ; preds = %2577
  %2583 = load ptr, ptr %10, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiWindow, ptr %2583, i32 0, i32 109
  %2585 = load ptr, ptr %2584, align 8, !tbaa !131
  %2586 = load ptr, ptr %95, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiWindow, ptr %2586, i32 0, i32 109
  %2588 = load ptr, ptr %2587, align 8, !tbaa !131
  %2589 = icmp eq ptr %2585, %2588
  br label %2590

2590:                                             ; preds = %2582, %2577
  %2591 = phi i1 [ false, %2577 ], [ %2589, %2582 ]
  br label %2592

2592:                                             ; preds = %2590, %2569
  %2593 = phi i1 [ true, %2569 ], [ %2591, %2590 ]
  br label %2594

2594:                                             ; preds = %2592, %2566
  %2595 = phi i1 [ false, %2566 ], [ %2593, %2592 ]
  br label %2596

2596:                                             ; preds = %2594, %2562
  %2597 = phi i1 [ true, %2562 ], [ %2595, %2594 ]
  %2598 = zext i1 %2597 to i8
  store i8 %2598, ptr %96, align 1, !tbaa !96
  %2599 = load ptr, ptr %10, align 8, !tbaa !5
  %2600 = load i8, ptr %96, align 1, !tbaa !96, !range !92, !noundef !93
  %2601 = trunc i8 %2600 to i1
  %2602 = load i8, ptr %66, align 1, !tbaa !96, !range !92, !noundef !93
  %2603 = trunc i8 %2602 to i1
  %2604 = load i32, ptr %70, align 4, !tbaa !9
  %2605 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %2606 = load float, ptr %71, align 4, !tbaa !147
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2599, ptr noundef nonnull align 4 dereferenceable(16) %84, i1 noundef zeroext %2601, i1 noundef zeroext %2603, i32 noundef %2604, ptr noundef %2605, float noundef %2606)
  %2607 = load i8, ptr %89, align 1, !tbaa !96, !range !92, !noundef !93
  %2608 = trunc i8 %2607 to i1
  br i1 %2608, label %2609, label %2614

2609:                                             ; preds = %2596
  %2610 = load ptr, ptr %10, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiWindow, ptr %2610, i32 0, i32 90
  %2612 = load ptr, ptr %10, align 8, !tbaa !5
  %2613 = getelementptr inbounds %struct.ImGuiWindow, ptr %2612, i32 0, i32 89
  store ptr %2611, ptr %2613, align 8, !tbaa !175
  br label %2614

2614:                                             ; preds = %2609, %2596
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  br label %2615

2615:                                             ; preds = %2614, %2458
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #13
  %2616 = load i32, ptr %7, align 4, !tbaa !9
  %2617 = and i32 %2616, 8
  %2618 = icmp ne i32 %2617, 0
  br i1 %2618, label %2623, label %2619

2619:                                             ; preds = %2615
  %2620 = load i32, ptr %7, align 4, !tbaa !9
  %2621 = and i32 %2620, 2048
  %2622 = icmp ne i32 %2621, 0
  br label %2623

2623:                                             ; preds = %2619, %2615
  %2624 = phi i1 [ false, %2615 ], [ %2622, %2619 ]
  %2625 = zext i1 %2624 to i8
  store i8 %2625, ptr %97, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #13
  %2626 = load i32, ptr %7, align 4, !tbaa !9
  %2627 = and i32 %2626, 8
  %2628 = icmp ne i32 %2627, 0
  %2629 = xor i1 %2628, true
  %2630 = zext i1 %2629 to i8
  store i8 %2630, ptr %98, align 1, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #13
  %2631 = load ptr, ptr %10, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 16
  %2633 = getelementptr inbounds %struct.ImVec2, ptr %2632, i32 0, i32 0
  %2634 = load float, ptr %2633, align 8, !tbaa !278
  %2635 = fcmp une float %2634, 0.000000e+00
  br i1 %2635, label %2636, label %2641

2636:                                             ; preds = %2623
  %2637 = load ptr, ptr %10, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiWindow, ptr %2637, i32 0, i32 16
  %2639 = getelementptr inbounds %struct.ImVec2, ptr %2638, i32 0, i32 0
  %2640 = load float, ptr %2639, align 8, !tbaa !278
  br label %2671

2641:                                             ; preds = %2623
  %2642 = load i8, ptr %97, align 1, !tbaa !96, !range !92, !noundef !93
  %2643 = trunc i8 %2642 to i1
  br i1 %2643, label %2644, label %2649

2644:                                             ; preds = %2641
  %2645 = load ptr, ptr %10, align 8, !tbaa !5
  %2646 = getelementptr inbounds %struct.ImGuiWindow, ptr %2645, i32 0, i32 14
  %2647 = getelementptr inbounds %struct.ImVec2, ptr %2646, i32 0, i32 0
  %2648 = load float, ptr %2647, align 8, !tbaa !258
  br label %2650

2649:                                             ; preds = %2641
  br label %2650

2650:                                             ; preds = %2649, %2644
  %2651 = phi float [ %2648, %2644 ], [ 0.000000e+00, %2649 ]
  %2652 = load ptr, ptr %10, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiWindow, ptr %2652, i32 0, i32 12
  %2654 = getelementptr inbounds %struct.ImVec2, ptr %2653, i32 0, i32 0
  %2655 = load float, ptr %2654, align 8, !tbaa !192
  %2656 = load ptr, ptr %10, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiWindow, ptr %2656, i32 0, i32 17
  %2658 = getelementptr inbounds %struct.ImVec2, ptr %2657, i32 0, i32 0
  %2659 = load float, ptr %2658, align 8, !tbaa !202
  %2660 = fneg float %2659
  %2661 = call float @llvm.fmuladd.f32(float %2660, float 2.000000e+00, float %2655)
  %2662 = load ptr, ptr %10, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.ImGuiWindow, ptr %2662, i32 0, i32 20
  %2664 = load float, ptr %2663, align 8, !tbaa !214
  %2665 = load ptr, ptr %10, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiWindow, ptr %2665, i32 0, i32 22
  %2667 = load float, ptr %2666, align 8, !tbaa !215
  %2668 = fadd float %2664, %2667
  %2669 = fsub float %2661, %2668
  %2670 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2651, float noundef %2669)
  br label %2671

2671:                                             ; preds = %2650, %2636
  %2672 = phi float [ %2640, %2636 ], [ %2670, %2650 ]
  store float %2672, ptr %99, align 4, !tbaa !147
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #13
  %2673 = load ptr, ptr %10, align 8, !tbaa !5
  %2674 = getelementptr inbounds %struct.ImGuiWindow, ptr %2673, i32 0, i32 16
  %2675 = getelementptr inbounds %struct.ImVec2, ptr %2674, i32 0, i32 1
  %2676 = load float, ptr %2675, align 4, !tbaa !279
  %2677 = fcmp une float %2676, 0.000000e+00
  br i1 %2677, label %2678, label %2683

2678:                                             ; preds = %2671
  %2679 = load ptr, ptr %10, align 8, !tbaa !5
  %2680 = getelementptr inbounds %struct.ImGuiWindow, ptr %2679, i32 0, i32 16
  %2681 = getelementptr inbounds %struct.ImVec2, ptr %2680, i32 0, i32 1
  %2682 = load float, ptr %2681, align 4, !tbaa !279
  br label %2713

2683:                                             ; preds = %2671
  %2684 = load i8, ptr %98, align 1, !tbaa !96, !range !92, !noundef !93
  %2685 = trunc i8 %2684 to i1
  br i1 %2685, label %2686, label %2691

2686:                                             ; preds = %2683
  %2687 = load ptr, ptr %10, align 8, !tbaa !5
  %2688 = getelementptr inbounds %struct.ImGuiWindow, ptr %2687, i32 0, i32 14
  %2689 = getelementptr inbounds %struct.ImVec2, ptr %2688, i32 0, i32 1
  %2690 = load float, ptr %2689, align 4, !tbaa !260
  br label %2692

2691:                                             ; preds = %2683
  br label %2692

2692:                                             ; preds = %2691, %2686
  %2693 = phi float [ %2690, %2686 ], [ 0.000000e+00, %2691 ]
  %2694 = load ptr, ptr %10, align 8, !tbaa !5
  %2695 = getelementptr inbounds %struct.ImGuiWindow, ptr %2694, i32 0, i32 12
  %2696 = getelementptr inbounds %struct.ImVec2, ptr %2695, i32 0, i32 1
  %2697 = load float, ptr %2696, align 4, !tbaa !193
  %2698 = load ptr, ptr %10, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiWindow, ptr %2698, i32 0, i32 17
  %2700 = getelementptr inbounds %struct.ImVec2, ptr %2699, i32 0, i32 1
  %2701 = load float, ptr %2700, align 4, !tbaa !261
  %2702 = fneg float %2701
  %2703 = call float @llvm.fmuladd.f32(float %2702, float 2.000000e+00, float %2697)
  %2704 = load ptr, ptr %10, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.ImGuiWindow, ptr %2704, i32 0, i32 21
  %2706 = load float, ptr %2705, align 4, !tbaa !216
  %2707 = load ptr, ptr %10, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.ImGuiWindow, ptr %2707, i32 0, i32 23
  %2709 = load float, ptr %2708, align 4, !tbaa !217
  %2710 = fadd float %2706, %2709
  %2711 = fsub float %2703, %2710
  %2712 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2693, float noundef %2711)
  br label %2713

2713:                                             ; preds = %2692, %2678
  %2714 = phi float [ %2682, %2678 ], [ %2712, %2692 ]
  store float %2714, ptr %100, align 4, !tbaa !147
  %2715 = load ptr, ptr %10, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiWindow, ptr %2715, i32 0, i32 72
  %2717 = getelementptr inbounds %struct.ImRect, ptr %2716, i32 0, i32 0
  %2718 = getelementptr inbounds %struct.ImVec2, ptr %2717, i32 0, i32 0
  %2719 = load float, ptr %2718, align 8, !tbaa !247
  %2720 = load ptr, ptr %10, align 8, !tbaa !5
  %2721 = getelementptr inbounds %struct.ImGuiWindow, ptr %2720, i32 0, i32 30
  %2722 = getelementptr inbounds %struct.ImVec2, ptr %2721, i32 0, i32 0
  %2723 = load float, ptr %2722, align 8, !tbaa !280
  %2724 = fsub float %2719, %2723
  %2725 = load ptr, ptr %10, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.ImGuiWindow, ptr %2725, i32 0, i32 17
  %2727 = getelementptr inbounds %struct.ImVec2, ptr %2726, i32 0, i32 0
  %2728 = load float, ptr %2727, align 8, !tbaa !202
  %2729 = load ptr, ptr %10, align 8, !tbaa !5
  %2730 = getelementptr inbounds %struct.ImGuiWindow, ptr %2729, i32 0, i32 19
  %2731 = load float, ptr %2730, align 4, !tbaa !198
  %2732 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2728, float noundef %2731)
  %2733 = fadd float %2724, %2732
  %2734 = call noundef float @_ZL7ImTruncf(float noundef %2733)
  %2735 = load ptr, ptr %10, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiWindow, ptr %2735, i32 0, i32 74
  %2737 = getelementptr inbounds %struct.ImRect, ptr %2736, i32 0, i32 0
  %2738 = getelementptr inbounds %struct.ImVec2, ptr %2737, i32 0, i32 0
  store float %2734, ptr %2738, align 8, !tbaa !281
  %2739 = load ptr, ptr %10, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.ImGuiWindow, ptr %2739, i32 0, i32 72
  %2741 = getelementptr inbounds %struct.ImRect, ptr %2740, i32 0, i32 0
  %2742 = getelementptr inbounds %struct.ImVec2, ptr %2741, i32 0, i32 1
  %2743 = load float, ptr %2742, align 4, !tbaa !249
  %2744 = load ptr, ptr %10, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.ImGuiWindow, ptr %2744, i32 0, i32 30
  %2746 = getelementptr inbounds %struct.ImVec2, ptr %2745, i32 0, i32 1
  %2747 = load float, ptr %2746, align 4, !tbaa !282
  %2748 = fsub float %2743, %2747
  %2749 = load ptr, ptr %10, align 8, !tbaa !5
  %2750 = getelementptr inbounds %struct.ImGuiWindow, ptr %2749, i32 0, i32 17
  %2751 = getelementptr inbounds %struct.ImVec2, ptr %2750, i32 0, i32 1
  %2752 = load float, ptr %2751, align 4, !tbaa !261
  %2753 = load ptr, ptr %10, align 8, !tbaa !5
  %2754 = getelementptr inbounds %struct.ImGuiWindow, ptr %2753, i32 0, i32 19
  %2755 = load float, ptr %2754, align 4, !tbaa !198
  %2756 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2752, float noundef %2755)
  %2757 = fadd float %2748, %2756
  %2758 = call noundef float @_ZL7ImTruncf(float noundef %2757)
  %2759 = load ptr, ptr %10, align 8, !tbaa !5
  %2760 = getelementptr inbounds %struct.ImGuiWindow, ptr %2759, i32 0, i32 74
  %2761 = getelementptr inbounds %struct.ImRect, ptr %2760, i32 0, i32 0
  %2762 = getelementptr inbounds %struct.ImVec2, ptr %2761, i32 0, i32 1
  store float %2758, ptr %2762, align 4, !tbaa !283
  %2763 = load ptr, ptr %10, align 8, !tbaa !5
  %2764 = getelementptr inbounds %struct.ImGuiWindow, ptr %2763, i32 0, i32 74
  %2765 = getelementptr inbounds %struct.ImRect, ptr %2764, i32 0, i32 0
  %2766 = getelementptr inbounds %struct.ImVec2, ptr %2765, i32 0, i32 0
  %2767 = load float, ptr %2766, align 8, !tbaa !281
  %2768 = load float, ptr %99, align 4, !tbaa !147
  %2769 = fadd float %2767, %2768
  %2770 = load ptr, ptr %10, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.ImGuiWindow, ptr %2770, i32 0, i32 74
  %2772 = getelementptr inbounds %struct.ImRect, ptr %2771, i32 0, i32 1
  %2773 = getelementptr inbounds %struct.ImVec2, ptr %2772, i32 0, i32 0
  store float %2769, ptr %2773, align 8, !tbaa !284
  %2774 = load ptr, ptr %10, align 8, !tbaa !5
  %2775 = getelementptr inbounds %struct.ImGuiWindow, ptr %2774, i32 0, i32 74
  %2776 = getelementptr inbounds %struct.ImRect, ptr %2775, i32 0, i32 0
  %2777 = getelementptr inbounds %struct.ImVec2, ptr %2776, i32 0, i32 1
  %2778 = load float, ptr %2777, align 4, !tbaa !283
  %2779 = load float, ptr %100, align 4, !tbaa !147
  %2780 = fadd float %2778, %2779
  %2781 = load ptr, ptr %10, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.ImGuiWindow, ptr %2781, i32 0, i32 74
  %2783 = getelementptr inbounds %struct.ImRect, ptr %2782, i32 0, i32 1
  %2784 = getelementptr inbounds %struct.ImVec2, ptr %2783, i32 0, i32 1
  store float %2780, ptr %2784, align 4, !tbaa !285
  %2785 = load ptr, ptr %10, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.ImGuiWindow, ptr %2785, i32 0, i32 74
  %2787 = load ptr, ptr %10, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiWindow, ptr %2787, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2788, ptr align 8 %2786, i64 16, i1 false), !tbaa.struct !174
  %2789 = load ptr, ptr %10, align 8, !tbaa !5
  %2790 = getelementptr inbounds %struct.ImGuiWindow, ptr %2789, i32 0, i32 11
  %2791 = getelementptr inbounds %struct.ImVec2, ptr %2790, i32 0, i32 0
  %2792 = load float, ptr %2791, align 8, !tbaa !246
  %2793 = load ptr, ptr %10, align 8, !tbaa !5
  %2794 = getelementptr inbounds %struct.ImGuiWindow, ptr %2793, i32 0, i32 30
  %2795 = getelementptr inbounds %struct.ImVec2, ptr %2794, i32 0, i32 0
  %2796 = load float, ptr %2795, align 8, !tbaa !280
  %2797 = fsub float %2792, %2796
  %2798 = load ptr, ptr %10, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.ImGuiWindow, ptr %2798, i32 0, i32 17
  %2800 = getelementptr inbounds %struct.ImVec2, ptr %2799, i32 0, i32 0
  %2801 = load float, ptr %2800, align 8, !tbaa !202
  %2802 = fadd float %2797, %2801
  %2803 = load ptr, ptr %10, align 8, !tbaa !5
  %2804 = getelementptr inbounds %struct.ImGuiWindow, ptr %2803, i32 0, i32 20
  %2805 = load float, ptr %2804, align 8, !tbaa !214
  %2806 = fadd float %2802, %2805
  %2807 = load ptr, ptr %10, align 8, !tbaa !5
  %2808 = getelementptr inbounds %struct.ImGuiWindow, ptr %2807, i32 0, i32 77
  %2809 = getelementptr inbounds %struct.ImRect, ptr %2808, i32 0, i32 0
  %2810 = getelementptr inbounds %struct.ImVec2, ptr %2809, i32 0, i32 0
  store float %2806, ptr %2810, align 8, !tbaa !286
  %2811 = load ptr, ptr %10, align 8, !tbaa !5
  %2812 = getelementptr inbounds %struct.ImGuiWindow, ptr %2811, i32 0, i32 11
  %2813 = getelementptr inbounds %struct.ImVec2, ptr %2812, i32 0, i32 1
  %2814 = load float, ptr %2813, align 4, !tbaa !248
  %2815 = load ptr, ptr %10, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiWindow, ptr %2815, i32 0, i32 30
  %2817 = getelementptr inbounds %struct.ImVec2, ptr %2816, i32 0, i32 1
  %2818 = load float, ptr %2817, align 4, !tbaa !282
  %2819 = fsub float %2814, %2818
  %2820 = load ptr, ptr %10, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.ImGuiWindow, ptr %2820, i32 0, i32 17
  %2822 = getelementptr inbounds %struct.ImVec2, ptr %2821, i32 0, i32 1
  %2823 = load float, ptr %2822, align 4, !tbaa !261
  %2824 = fadd float %2819, %2823
  %2825 = load ptr, ptr %10, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.ImGuiWindow, ptr %2825, i32 0, i32 21
  %2827 = load float, ptr %2826, align 4, !tbaa !216
  %2828 = fadd float %2824, %2827
  %2829 = load ptr, ptr %10, align 8, !tbaa !5
  %2830 = getelementptr inbounds %struct.ImGuiWindow, ptr %2829, i32 0, i32 77
  %2831 = getelementptr inbounds %struct.ImRect, ptr %2830, i32 0, i32 0
  %2832 = getelementptr inbounds %struct.ImVec2, ptr %2831, i32 0, i32 1
  store float %2828, ptr %2832, align 4, !tbaa !287
  %2833 = load ptr, ptr %10, align 8, !tbaa !5
  %2834 = getelementptr inbounds %struct.ImGuiWindow, ptr %2833, i32 0, i32 77
  %2835 = getelementptr inbounds %struct.ImRect, ptr %2834, i32 0, i32 0
  %2836 = getelementptr inbounds %struct.ImVec2, ptr %2835, i32 0, i32 0
  %2837 = load float, ptr %2836, align 8, !tbaa !286
  %2838 = load ptr, ptr %10, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.ImGuiWindow, ptr %2838, i32 0, i32 16
  %2840 = getelementptr inbounds %struct.ImVec2, ptr %2839, i32 0, i32 0
  %2841 = load float, ptr %2840, align 8, !tbaa !278
  %2842 = fcmp une float %2841, 0.000000e+00
  br i1 %2842, label %2843, label %2848

2843:                                             ; preds = %2713
  %2844 = load ptr, ptr %10, align 8, !tbaa !5
  %2845 = getelementptr inbounds %struct.ImGuiWindow, ptr %2844, i32 0, i32 16
  %2846 = getelementptr inbounds %struct.ImVec2, ptr %2845, i32 0, i32 0
  %2847 = load float, ptr %2846, align 8, !tbaa !278
  br label %2867

2848:                                             ; preds = %2713
  %2849 = load ptr, ptr %10, align 8, !tbaa !5
  %2850 = getelementptr inbounds %struct.ImGuiWindow, ptr %2849, i32 0, i32 12
  %2851 = getelementptr inbounds %struct.ImVec2, ptr %2850, i32 0, i32 0
  %2852 = load float, ptr %2851, align 8, !tbaa !192
  %2853 = load ptr, ptr %10, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiWindow, ptr %2853, i32 0, i32 17
  %2855 = getelementptr inbounds %struct.ImVec2, ptr %2854, i32 0, i32 0
  %2856 = load float, ptr %2855, align 8, !tbaa !202
  %2857 = fneg float %2856
  %2858 = call float @llvm.fmuladd.f32(float %2857, float 2.000000e+00, float %2852)
  %2859 = load ptr, ptr %10, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.ImGuiWindow, ptr %2859, i32 0, i32 20
  %2861 = load float, ptr %2860, align 8, !tbaa !214
  %2862 = load ptr, ptr %10, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiWindow, ptr %2862, i32 0, i32 22
  %2864 = load float, ptr %2863, align 8, !tbaa !215
  %2865 = fadd float %2861, %2864
  %2866 = fsub float %2858, %2865
  br label %2867

2867:                                             ; preds = %2848, %2843
  %2868 = phi float [ %2847, %2843 ], [ %2866, %2848 ]
  %2869 = fadd float %2837, %2868
  %2870 = load ptr, ptr %10, align 8, !tbaa !5
  %2871 = getelementptr inbounds %struct.ImGuiWindow, ptr %2870, i32 0, i32 77
  %2872 = getelementptr inbounds %struct.ImRect, ptr %2871, i32 0, i32 1
  %2873 = getelementptr inbounds %struct.ImVec2, ptr %2872, i32 0, i32 0
  store float %2869, ptr %2873, align 8, !tbaa !288
  %2874 = load ptr, ptr %10, align 8, !tbaa !5
  %2875 = getelementptr inbounds %struct.ImGuiWindow, ptr %2874, i32 0, i32 77
  %2876 = getelementptr inbounds %struct.ImRect, ptr %2875, i32 0, i32 0
  %2877 = getelementptr inbounds %struct.ImVec2, ptr %2876, i32 0, i32 1
  %2878 = load float, ptr %2877, align 4, !tbaa !287
  %2879 = load ptr, ptr %10, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.ImGuiWindow, ptr %2879, i32 0, i32 16
  %2881 = getelementptr inbounds %struct.ImVec2, ptr %2880, i32 0, i32 1
  %2882 = load float, ptr %2881, align 4, !tbaa !279
  %2883 = fcmp une float %2882, 0.000000e+00
  br i1 %2883, label %2884, label %2889

2884:                                             ; preds = %2867
  %2885 = load ptr, ptr %10, align 8, !tbaa !5
  %2886 = getelementptr inbounds %struct.ImGuiWindow, ptr %2885, i32 0, i32 16
  %2887 = getelementptr inbounds %struct.ImVec2, ptr %2886, i32 0, i32 1
  %2888 = load float, ptr %2887, align 4, !tbaa !279
  br label %2908

2889:                                             ; preds = %2867
  %2890 = load ptr, ptr %10, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiWindow, ptr %2890, i32 0, i32 12
  %2892 = getelementptr inbounds %struct.ImVec2, ptr %2891, i32 0, i32 1
  %2893 = load float, ptr %2892, align 4, !tbaa !193
  %2894 = load ptr, ptr %10, align 8, !tbaa !5
  %2895 = getelementptr inbounds %struct.ImGuiWindow, ptr %2894, i32 0, i32 17
  %2896 = getelementptr inbounds %struct.ImVec2, ptr %2895, i32 0, i32 1
  %2897 = load float, ptr %2896, align 4, !tbaa !261
  %2898 = fneg float %2897
  %2899 = call float @llvm.fmuladd.f32(float %2898, float 2.000000e+00, float %2893)
  %2900 = load ptr, ptr %10, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiWindow, ptr %2900, i32 0, i32 21
  %2902 = load float, ptr %2901, align 4, !tbaa !216
  %2903 = load ptr, ptr %10, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.ImGuiWindow, ptr %2903, i32 0, i32 23
  %2905 = load float, ptr %2904, align 4, !tbaa !217
  %2906 = fadd float %2902, %2905
  %2907 = fsub float %2899, %2906
  br label %2908

2908:                                             ; preds = %2889, %2884
  %2909 = phi float [ %2888, %2884 ], [ %2907, %2889 ]
  %2910 = fadd float %2878, %2909
  %2911 = load ptr, ptr %10, align 8, !tbaa !5
  %2912 = getelementptr inbounds %struct.ImGuiWindow, ptr %2911, i32 0, i32 77
  %2913 = getelementptr inbounds %struct.ImRect, ptr %2912, i32 0, i32 1
  %2914 = getelementptr inbounds %struct.ImVec2, ptr %2913, i32 0, i32 1
  store float %2910, ptr %2914, align 4, !tbaa !289
  %2915 = load ptr, ptr %10, align 8, !tbaa !5
  %2916 = getelementptr inbounds %struct.ImGuiWindow, ptr %2915, i32 0, i32 20
  %2917 = load float, ptr %2916, align 8, !tbaa !214
  %2918 = load ptr, ptr %10, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiWindow, ptr %2918, i32 0, i32 17
  %2920 = getelementptr inbounds %struct.ImVec2, ptr %2919, i32 0, i32 0
  %2921 = load float, ptr %2920, align 8, !tbaa !202
  %2922 = fadd float %2917, %2921
  %2923 = load ptr, ptr %10, align 8, !tbaa !5
  %2924 = getelementptr inbounds %struct.ImGuiWindow, ptr %2923, i32 0, i32 30
  %2925 = getelementptr inbounds %struct.ImVec2, ptr %2924, i32 0, i32 0
  %2926 = load float, ptr %2925, align 8, !tbaa !280
  %2927 = fsub float %2922, %2926
  %2928 = load ptr, ptr %10, align 8, !tbaa !5
  %2929 = getelementptr inbounds %struct.ImGuiWindow, ptr %2928, i32 0, i32 70
  %2930 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2929, i32 0, i32 11
  %2931 = getelementptr inbounds %struct.ImVec1, ptr %2930, i32 0, i32 0
  store float %2927, ptr %2931, align 4, !tbaa !290
  %2932 = load ptr, ptr %10, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.ImGuiWindow, ptr %2932, i32 0, i32 70
  %2934 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2933, i32 0, i32 13
  %2935 = getelementptr inbounds %struct.ImVec1, ptr %2934, i32 0, i32 0
  store float 0.000000e+00, ptr %2935, align 4, !tbaa !291
  %2936 = load ptr, ptr %10, align 8, !tbaa !5
  %2937 = getelementptr inbounds %struct.ImGuiWindow, ptr %2936, i32 0, i32 70
  %2938 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2937, i32 0, i32 12
  %2939 = getelementptr inbounds %struct.ImVec1, ptr %2938, i32 0, i32 0
  store float 0.000000e+00, ptr %2939, align 8, !tbaa !292
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  %2940 = load ptr, ptr %10, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.ImGuiWindow, ptr %2940, i32 0, i32 11
  %2942 = getelementptr inbounds %struct.ImVec2, ptr %2941, i32 0, i32 0
  %2943 = load float, ptr %2942, align 8, !tbaa !246
  %2944 = fpext float %2943 to double
  %2945 = load ptr, ptr %10, align 8, !tbaa !5
  %2946 = getelementptr inbounds %struct.ImGuiWindow, ptr %2945, i32 0, i32 17
  %2947 = getelementptr inbounds %struct.ImVec2, ptr %2946, i32 0, i32 0
  %2948 = load float, ptr %2947, align 8, !tbaa !202
  %2949 = fpext float %2948 to double
  %2950 = fadd double %2944, %2949
  %2951 = load ptr, ptr %10, align 8, !tbaa !5
  %2952 = getelementptr inbounds %struct.ImGuiWindow, ptr %2951, i32 0, i32 30
  %2953 = getelementptr inbounds %struct.ImVec2, ptr %2952, i32 0, i32 0
  %2954 = load float, ptr %2953, align 8, !tbaa !280
  %2955 = fpext float %2954 to double
  %2956 = fsub double %2950, %2955
  %2957 = load ptr, ptr %10, align 8, !tbaa !5
  %2958 = getelementptr inbounds %struct.ImGuiWindow, ptr %2957, i32 0, i32 20
  %2959 = load float, ptr %2958, align 8, !tbaa !214
  %2960 = fpext float %2959 to double
  %2961 = fadd double %2956, %2960
  %2962 = load ptr, ptr %10, align 8, !tbaa !5
  %2963 = getelementptr inbounds %struct.ImGuiWindow, ptr %2962, i32 0, i32 70
  %2964 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2963, i32 0, i32 12
  %2965 = getelementptr inbounds %struct.ImVec1, ptr %2964, i32 0, i32 0
  %2966 = load float, ptr %2965, align 8, !tbaa !292
  %2967 = fpext float %2966 to double
  %2968 = fadd double %2961, %2967
  store double %2968, ptr %101, align 8, !tbaa !293
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  %2969 = load ptr, ptr %10, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.ImGuiWindow, ptr %2969, i32 0, i32 11
  %2971 = getelementptr inbounds %struct.ImVec2, ptr %2970, i32 0, i32 1
  %2972 = load float, ptr %2971, align 4, !tbaa !248
  %2973 = fpext float %2972 to double
  %2974 = load ptr, ptr %10, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiWindow, ptr %2974, i32 0, i32 17
  %2976 = getelementptr inbounds %struct.ImVec2, ptr %2975, i32 0, i32 1
  %2977 = load float, ptr %2976, align 4, !tbaa !261
  %2978 = fpext float %2977 to double
  %2979 = fadd double %2973, %2978
  %2980 = load ptr, ptr %10, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiWindow, ptr %2980, i32 0, i32 30
  %2982 = getelementptr inbounds %struct.ImVec2, ptr %2981, i32 0, i32 1
  %2983 = load float, ptr %2982, align 4, !tbaa !282
  %2984 = fpext float %2983 to double
  %2985 = fsub double %2979, %2984
  %2986 = load ptr, ptr %10, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiWindow, ptr %2986, i32 0, i32 21
  %2988 = load float, ptr %2987, align 4, !tbaa !216
  %2989 = fpext float %2988 to double
  %2990 = fadd double %2985, %2989
  store double %2990, ptr %102, align 8, !tbaa !293
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #13
  %2991 = load double, ptr %101, align 8, !tbaa !293
  %2992 = fptrunc double %2991 to float
  %2993 = load double, ptr %102, align 8, !tbaa !293
  %2994 = fptrunc double %2993 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %103, float noundef %2992, float noundef %2994)
  %2995 = load ptr, ptr %10, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiWindow, ptr %2995, i32 0, i32 70
  %2997 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2996, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2997, ptr align 4 %103, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #13
  %2998 = load double, ptr %101, align 8, !tbaa !293
  %2999 = load ptr, ptr %10, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.ImGuiWindow, ptr %2999, i32 0, i32 70
  %3001 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3000, i32 0, i32 2
  %3002 = getelementptr inbounds %struct.ImVec2, ptr %3001, i32 0, i32 0
  %3003 = load float, ptr %3002, align 8, !tbaa !294
  %3004 = fpext float %3003 to double
  %3005 = fsub double %2998, %3004
  %3006 = fptrunc double %3005 to float
  %3007 = load double, ptr %102, align 8, !tbaa !293
  %3008 = load ptr, ptr %10, align 8, !tbaa !5
  %3009 = getelementptr inbounds %struct.ImGuiWindow, ptr %3008, i32 0, i32 70
  %3010 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3009, i32 0, i32 2
  %3011 = getelementptr inbounds %struct.ImVec2, ptr %3010, i32 0, i32 1
  %3012 = load float, ptr %3011, align 4, !tbaa !295
  %3013 = fpext float %3012 to double
  %3014 = fsub double %3007, %3013
  %3015 = fptrunc double %3014 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %104, float noundef %3006, float noundef %3015)
  %3016 = load ptr, ptr %10, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiWindow, ptr %3016, i32 0, i32 70
  %3018 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3017, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3018, ptr align 4 %104, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #13
  %3019 = load ptr, ptr %10, align 8, !tbaa !5
  %3020 = getelementptr inbounds %struct.ImGuiWindow, ptr %3019, i32 0, i32 70
  %3021 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3020, i32 0, i32 2
  %3022 = load ptr, ptr %10, align 8, !tbaa !5
  %3023 = getelementptr inbounds %struct.ImGuiWindow, ptr %3022, i32 0, i32 70
  %3024 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3023, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3024, ptr align 8 %3021, i64 8, i1 false), !tbaa.struct !156
  %3025 = load ptr, ptr %10, align 8, !tbaa !5
  %3026 = getelementptr inbounds %struct.ImGuiWindow, ptr %3025, i32 0, i32 70
  %3027 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3026, i32 0, i32 0
  %3028 = load ptr, ptr %10, align 8, !tbaa !5
  %3029 = getelementptr inbounds %struct.ImGuiWindow, ptr %3028, i32 0, i32 70
  %3030 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3029, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3030, ptr align 8 %3027, i64 8, i1 false), !tbaa.struct !156
  %3031 = load ptr, ptr %10, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.ImGuiWindow, ptr %3031, i32 0, i32 70
  %3033 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3032, i32 0, i32 2
  %3034 = load ptr, ptr %10, align 8, !tbaa !5
  %3035 = getelementptr inbounds %struct.ImGuiWindow, ptr %3034, i32 0, i32 70
  %3036 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3035, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3036, ptr align 8 %3033, i64 8, i1 false), !tbaa.struct !156
  %3037 = load ptr, ptr %10, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.ImGuiWindow, ptr %3037, i32 0, i32 70
  %3039 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3038, i32 0, i32 2
  %3040 = load ptr, ptr %10, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiWindow, ptr %3040, i32 0, i32 70
  %3042 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3041, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3042, ptr align 8 %3039, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %105, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %3043 = load ptr, ptr %10, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiWindow, ptr %3043, i32 0, i32 70
  %3045 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3044, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3045, ptr align 4 %105, i64 8, i1 false), !tbaa.struct !156
  %3046 = load ptr, ptr %10, align 8, !tbaa !5
  %3047 = getelementptr inbounds %struct.ImGuiWindow, ptr %3046, i32 0, i32 70
  %3048 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3047, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3048, ptr align 4 %3045, i64 8, i1 false), !tbaa.struct !156
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  %3049 = load ptr, ptr %10, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiWindow, ptr %3049, i32 0, i32 70
  %3051 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3050, i32 0, i32 8
  store float 0.000000e+00, ptr %3051, align 4, !tbaa !296
  %3052 = load ptr, ptr %10, align 8, !tbaa !5
  %3053 = getelementptr inbounds %struct.ImGuiWindow, ptr %3052, i32 0, i32 70
  %3054 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3053, i32 0, i32 7
  store float 0.000000e+00, ptr %3054, align 8, !tbaa !297
  %3055 = load ptr, ptr %10, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.ImGuiWindow, ptr %3055, i32 0, i32 70
  %3057 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3056, i32 0, i32 10
  store i8 0, ptr %3057, align 1, !tbaa !298
  %3058 = load ptr, ptr %10, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.ImGuiWindow, ptr %3058, i32 0, i32 70
  %3060 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3059, i32 0, i32 9
  store i8 0, ptr %3060, align 8, !tbaa !299
  %3061 = load ptr, ptr %10, align 8, !tbaa !5
  %3062 = getelementptr inbounds %struct.ImGuiWindow, ptr %3061, i32 0, i32 70
  %3063 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3062, i32 0, i32 15
  store i32 0, ptr %3063, align 8, !tbaa !153
  %3064 = load ptr, ptr %10, align 8, !tbaa !5
  %3065 = getelementptr inbounds %struct.ImGuiWindow, ptr %3064, i32 0, i32 70
  %3066 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3065, i32 0, i32 17
  %3067 = load i16, ptr %3066, align 2, !tbaa !300
  %3068 = load ptr, ptr %10, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiWindow, ptr %3068, i32 0, i32 70
  %3070 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3069, i32 0, i32 16
  store i16 %3067, ptr %3070, align 4, !tbaa !301
  %3071 = load ptr, ptr %10, align 8, !tbaa !5
  %3072 = getelementptr inbounds %struct.ImGuiWindow, ptr %3071, i32 0, i32 70
  %3073 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3072, i32 0, i32 17
  store i16 0, ptr %3073, align 2, !tbaa !300
  %3074 = load ptr, ptr %10, align 8, !tbaa !5
  %3075 = getelementptr inbounds %struct.ImGuiWindow, ptr %3074, i32 0, i32 70
  %3076 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3075, i32 0, i32 18
  store i8 1, ptr %3076, align 8, !tbaa !302
  %3077 = load ptr, ptr %10, align 8, !tbaa !5
  %3078 = getelementptr inbounds %struct.ImGuiWindow, ptr %3077, i32 0, i32 70
  %3079 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3078, i32 0, i32 19
  store i8 0, ptr %3079, align 1, !tbaa !303
  %3080 = load ptr, ptr %10, align 8, !tbaa !5
  %3081 = getelementptr inbounds %struct.ImGuiWindow, ptr %3080, i32 0, i32 31
  %3082 = getelementptr inbounds %struct.ImVec2, ptr %3081, i32 0, i32 1
  %3083 = load float, ptr %3082, align 4, !tbaa !262
  %3084 = fcmp ogt float %3083, 0.000000e+00
  %3085 = load ptr, ptr %10, align 8, !tbaa !5
  %3086 = getelementptr inbounds %struct.ImGuiWindow, ptr %3085, i32 0, i32 70
  %3087 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3086, i32 0, i32 20
  %3088 = zext i1 %3084 to i8
  store i8 %3088, ptr %3087, align 2, !tbaa !304
  %3089 = load ptr, ptr %10, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.ImGuiWindow, ptr %3089, i32 0, i32 70
  %3091 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3090, i32 0, i32 21
  store i8 0, ptr %3091, align 1, !tbaa !305
  %3092 = load ptr, ptr %10, align 8, !tbaa !5
  %3093 = getelementptr inbounds %struct.ImGuiWindow, ptr %3092, i32 0, i32 70
  %3094 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3093, i32 0, i32 23
  %3095 = load ptr, ptr %9, align 8, !tbaa !5
  %3096 = getelementptr inbounds %struct.ImGuiStyle, ptr %3095, i32 0, i32 15
  %3097 = getelementptr inbounds %struct.ImVec2, ptr %3096, i32 0, i32 0
  %3098 = load float, ptr %3097, align 4, !tbaa !203
  %3099 = load i8, ptr %14, align 1, !tbaa !96, !range !92, !noundef !93
  %3100 = trunc i8 %3099 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %3094, float noundef %3098, i1 noundef zeroext %3100)
  %3101 = load ptr, ptr %10, align 8, !tbaa !5
  %3102 = getelementptr inbounds %struct.ImGuiWindow, ptr %3101, i32 0, i32 70
  %3103 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3102, i32 0, i32 24
  store i32 0, ptr %3103, align 8, !tbaa !306
  %3104 = load ptr, ptr %10, align 8, !tbaa !5
  %3105 = getelementptr inbounds %struct.ImGuiWindow, ptr %3104, i32 0, i32 70
  %3106 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3105, i32 0, i32 25
  store i32 0, ptr %3106, align 4, !tbaa !307
  %3107 = load ptr, ptr %10, align 8, !tbaa !5
  %3108 = getelementptr inbounds %struct.ImGuiWindow, ptr %3107, i32 0, i32 70
  %3109 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3108, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3109, i32 noundef 0)
  %3110 = load ptr, ptr %10, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.ImGuiWindow, ptr %3110, i32 0, i32 84
  %3112 = load ptr, ptr %10, align 8, !tbaa !5
  %3113 = getelementptr inbounds %struct.ImGuiWindow, ptr %3112, i32 0, i32 70
  %3114 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3113, i32 0, i32 27
  store ptr %3111, ptr %3114, align 8, !tbaa !308
  %3115 = load ptr, ptr %10, align 8, !tbaa !5
  %3116 = getelementptr inbounds %struct.ImGuiWindow, ptr %3115, i32 0, i32 70
  %3117 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3116, i32 0, i32 28
  store ptr null, ptr %3117, align 8, !tbaa !309
  %3118 = load ptr, ptr %10, align 8, !tbaa !5
  %3119 = getelementptr inbounds %struct.ImGuiWindow, ptr %3118, i32 0, i32 70
  %3120 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3119, i32 0, i32 30
  store i32 1, ptr %3120, align 4, !tbaa !310
  %3121 = load ptr, ptr %22, align 8, !tbaa !5
  %3122 = icmp ne ptr %3121, null
  br i1 %3122, label %3123, label %3128

3123:                                             ; preds = %2908
  %3124 = load ptr, ptr %22, align 8, !tbaa !5
  %3125 = getelementptr inbounds %struct.ImGuiWindow, ptr %3124, i32 0, i32 70
  %3126 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3125, i32 0, i32 30
  %3127 = load i32, ptr %3126, align 4, !tbaa !310
  br label %3129

3128:                                             ; preds = %2908
  br label %3129

3129:                                             ; preds = %3128, %3123
  %3130 = phi i32 [ %3127, %3123 ], [ 1, %3128 ]
  %3131 = load ptr, ptr %10, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.ImGuiWindow, ptr %3131, i32 0, i32 70
  %3133 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3132, i32 0, i32 31
  store i32 %3130, ptr %3133, align 8, !tbaa !311
  %3134 = load ptr, ptr %10, align 8, !tbaa !5
  %3135 = getelementptr inbounds %struct.ImGuiWindow, ptr %3134, i32 0, i32 83
  %3136 = load float, ptr %3135, align 4, !tbaa !257
  %3137 = load ptr, ptr %10, align 8, !tbaa !5
  %3138 = getelementptr inbounds %struct.ImGuiWindow, ptr %3137, i32 0, i32 70
  %3139 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3138, i32 0, i32 32
  store float %3136, ptr %3139, align 4, !tbaa !312
  %3140 = load ptr, ptr %10, align 8, !tbaa !5
  %3141 = getelementptr inbounds %struct.ImGuiWindow, ptr %3140, i32 0, i32 70
  %3142 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3141, i32 0, i32 33
  store float -1.000000e+00, ptr %3142, align 8, !tbaa !313
  %3143 = load ptr, ptr %10, align 8, !tbaa !5
  %3144 = getelementptr inbounds %struct.ImGuiWindow, ptr %3143, i32 0, i32 70
  %3145 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3144, i32 0, i32 34
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3145, i32 noundef 0)
  %3146 = load ptr, ptr %10, align 8, !tbaa !5
  %3147 = getelementptr inbounds %struct.ImGuiWindow, ptr %3146, i32 0, i32 70
  %3148 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3147, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3148, i32 noundef 0)
  %3149 = load ptr, ptr %10, align 8, !tbaa !5
  %3150 = getelementptr inbounds %struct.ImGuiWindow, ptr %3149, i32 0, i32 58
  %3151 = load i8, ptr %3150, align 8, !tbaa !220
  %3152 = sext i8 %3151 to i32
  %3153 = icmp sgt i32 %3152, 0
  br i1 %3153, label %3154, label %3159

3154:                                             ; preds = %3129
  %3155 = load ptr, ptr %10, align 8, !tbaa !5
  %3156 = getelementptr inbounds %struct.ImGuiWindow, ptr %3155, i32 0, i32 58
  %3157 = load i8, ptr %3156, align 8, !tbaa !220
  %3158 = add i8 %3157, -1
  store i8 %3158, ptr %3156, align 8, !tbaa !220
  br label %3159

3159:                                             ; preds = %3154, %3129
  %3160 = load ptr, ptr %10, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.ImGuiWindow, ptr %3160, i32 0, i32 59
  %3162 = load i8, ptr %3161, align 1, !tbaa !221
  %3163 = sext i8 %3162 to i32
  %3164 = icmp sgt i32 %3163, 0
  br i1 %3164, label %3165, label %3170

3165:                                             ; preds = %3159
  %3166 = load ptr, ptr %10, align 8, !tbaa !5
  %3167 = getelementptr inbounds %struct.ImGuiWindow, ptr %3166, i32 0, i32 59
  %3168 = load i8, ptr %3167, align 1, !tbaa !221
  %3169 = add i8 %3168, -1
  store i8 %3169, ptr %3167, align 1, !tbaa !221
  br label %3170

3170:                                             ; preds = %3165, %3159
  %3171 = load i8, ptr %65, align 1, !tbaa !96, !range !92, !noundef !93
  %3172 = trunc i8 %3171 to i1
  br i1 %3172, label %3173, label %3175

3173:                                             ; preds = %3170
  %3174 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %3174, i32 noundef 2)
  br label %3175

3175:                                             ; preds = %3173, %3170
  %3176 = load i8, ptr %65, align 1, !tbaa !96, !range !92, !noundef !93
  %3177 = trunc i8 %3176 to i1
  br i1 %3177, label %3178, label %3186

3178:                                             ; preds = %3175
  %3179 = load ptr, ptr %10, align 8, !tbaa !5
  %3180 = load ptr, ptr %8, align 8, !tbaa !5
  %3181 = getelementptr inbounds %struct.ImGuiContext, ptr %3180, i32 0, i32 102
  %3182 = load ptr, ptr %3181, align 8, !tbaa !276
  %3183 = icmp eq ptr %3179, %3182
  br i1 %3183, label %3184, label %3186

3184:                                             ; preds = %3178
  %3185 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %3185, i1 noundef zeroext false)
  br label %3186

3186:                                             ; preds = %3184, %3178, %3175
  %3187 = load ptr, ptr %6, align 8, !tbaa !5
  %3188 = icmp ne ptr %3187, null
  br i1 %3188, label %3189, label %3219

3189:                                             ; preds = %3186
  %3190 = load ptr, ptr %10, align 8, !tbaa !5
  %3191 = getelementptr inbounds %struct.ImGuiWindow, ptr %3190, i32 0, i32 7
  %3192 = load ptr, ptr %3191, align 8, !tbaa !178
  %3193 = getelementptr inbounds %struct.ImGuiViewport, ptr %3192, i32 0, i32 16
  %3194 = load i8, ptr %3193, align 1, !tbaa !314, !range !92, !noundef !93
  %3195 = trunc i8 %3194 to i1
  br i1 %3195, label %3196, label %3219

3196:                                             ; preds = %3189
  %3197 = load ptr, ptr %10, align 8, !tbaa !5
  %3198 = getelementptr inbounds %struct.ImGuiWindow, ptr %3197, i32 0, i32 7
  %3199 = load ptr, ptr %3198, align 8, !tbaa !178
  %3200 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %3201 = icmp ne ptr %3199, %3200
  br i1 %3201, label %3202, label %3219

3202:                                             ; preds = %3196
  br label %3203

3203:                                             ; preds = %3202
  %3204 = load ptr, ptr %8, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.ImGuiContext, ptr %3204, i32 0, i32 247
  %3206 = load i32, ptr %3205, align 4, !tbaa !315
  %3207 = and i32 %3206, 256
  %3208 = icmp ne i32 %3207, 0
  br i1 %3208, label %3209, label %3213

3209:                                             ; preds = %3203
  %3210 = load ptr, ptr %10, align 8, !tbaa !5
  %3211 = getelementptr inbounds %struct.ImGuiWindow, ptr %3210, i32 0, i32 1
  %3212 = load ptr, ptr %3211, align 8, !tbaa !186
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef @.str.154, ptr noundef %3212)
  br label %3213

3213:                                             ; preds = %3209, %3203
  br label %3214

3214:                                             ; preds = %3213
  br label %3215

3215:                                             ; preds = %3214
  %3216 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 0, ptr %3216, align 1, !tbaa !96
  %3217 = load ptr, ptr %8, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiContext, ptr %3217, i32 0, i32 151
  store i8 0, ptr %3218, align 8, !tbaa !316
  br label %3219

3219:                                             ; preds = %3215, %3196, %3189, %3186
  %3220 = load i32, ptr %7, align 4, !tbaa !9
  %3221 = and i32 %3220, 1
  %3222 = icmp ne i32 %3221, 0
  br i1 %3222, label %3253, label %3223

3223:                                             ; preds = %3219
  %3224 = load ptr, ptr %10, align 8, !tbaa !5
  %3225 = getelementptr inbounds %struct.ImGuiWindow, ptr %3224, i32 0, i32 106
  %3226 = load i8, ptr %3225, align 1
  %3227 = and i8 %3226, 1
  %3228 = trunc i8 %3227 to i1
  br i1 %3228, label %3253, label %3229

3229:                                             ; preds = %3223
  %3230 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #13
  %3231 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3232 = getelementptr inbounds %struct.ImVec2, ptr %3231, i32 0, i32 0
  %3233 = load float, ptr %3232, align 4, !tbaa !317
  %3234 = load ptr, ptr %10, align 8, !tbaa !5
  %3235 = getelementptr inbounds %struct.ImGuiWindow, ptr %3234, i32 0, i32 19
  %3236 = load float, ptr %3235, align 4, !tbaa !198
  %3237 = fadd float %3233, %3236
  %3238 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3239 = getelementptr inbounds %struct.ImVec2, ptr %3238, i32 0, i32 1
  %3240 = load float, ptr %3239, align 4, !tbaa !318
  %3241 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3242 = getelementptr inbounds %struct.ImVec2, ptr %3241, i32 0, i32 0
  %3243 = load float, ptr %3242, align 4, !tbaa !319
  %3244 = load ptr, ptr %10, align 8, !tbaa !5
  %3245 = getelementptr inbounds %struct.ImGuiWindow, ptr %3244, i32 0, i32 19
  %3246 = load float, ptr %3245, align 4, !tbaa !198
  %3247 = fsub float %3243, %3246
  %3248 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3249 = getelementptr inbounds %struct.ImVec2, ptr %3248, i32 0, i32 1
  %3250 = load float, ptr %3249, align 4, !tbaa !320
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %106, float noundef %3237, float noundef %3240, float noundef %3247, float noundef %3250)
  %3251 = load ptr, ptr %5, align 8, !tbaa !5
  %3252 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %3230, ptr noundef nonnull align 4 dereferenceable(16) %106, ptr noundef %3251, ptr noundef %3252)
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #13
  br label %3253

3253:                                             ; preds = %3229, %3223, %3219
  %3254 = load ptr, ptr %10, align 8, !tbaa !5
  %3255 = getelementptr inbounds %struct.ImGuiWindow, ptr %3254, i32 0, i32 78
  %3256 = getelementptr inbounds %struct.ImVec2ih, ptr %3255, i32 0, i32 1
  store i16 0, ptr %3256, align 2, !tbaa !321
  %3257 = load ptr, ptr %10, align 8, !tbaa !5
  %3258 = getelementptr inbounds %struct.ImGuiWindow, ptr %3257, i32 0, i32 78
  %3259 = getelementptr inbounds %struct.ImVec2ih, ptr %3258, i32 0, i32 0
  store i16 0, ptr %3259, align 8, !tbaa !322
  %3260 = load ptr, ptr %8, align 8, !tbaa !5
  %3261 = getelementptr inbounds %struct.ImGuiContext, ptr %3260, i32 0, i32 2
  %3262 = getelementptr inbounds %struct.ImGuiIO, ptr %3261, i32 0, i32 0
  %3263 = load i32, ptr %3262, align 8, !tbaa !194
  %3264 = and i32 %3263, 64
  %3265 = icmp ne i32 %3264, 0
  br i1 %3265, label %3266, label %3321

3266:                                             ; preds = %3253
  %3267 = load ptr, ptr %8, align 8, !tbaa !5
  %3268 = getelementptr inbounds %struct.ImGuiContext, ptr %3267, i32 0, i32 36
  %3269 = load ptr, ptr %3268, align 8, !tbaa !323
  %3270 = load ptr, ptr %10, align 8, !tbaa !5
  %3271 = icmp eq ptr %3269, %3270
  br i1 %3271, label %3272, label %3282

3272:                                             ; preds = %3266
  %3273 = load ptr, ptr %10, align 8, !tbaa !5
  %3274 = getelementptr inbounds %struct.ImGuiWindow, ptr %3273, i32 0, i32 95
  %3275 = load ptr, ptr %3274, align 8, !tbaa !324
  %3276 = getelementptr inbounds %struct.ImGuiWindow, ptr %3275, i32 0, i32 3
  %3277 = load i32, ptr %3276, align 4, !tbaa !121
  %3278 = and i32 %3277, 524288
  %3279 = icmp eq i32 %3278, 0
  br i1 %3279, label %3280, label %3282

3280:                                             ; preds = %3272
  %3281 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef %3281)
  br label %3282

3282:                                             ; preds = %3280, %3272, %3266
  %3283 = load ptr, ptr %8, align 8, !tbaa !5
  %3284 = getelementptr inbounds %struct.ImGuiContext, ptr %3283, i32 0, i32 155
  %3285 = load i8, ptr %3284, align 8, !tbaa !325, !range !92, !noundef !93
  %3286 = trunc i8 %3285 to i1
  br i1 %3286, label %3287, label %3320

3287:                                             ; preds = %3282
  %3288 = load i32, ptr %7, align 4, !tbaa !9
  %3289 = and i32 %3288, 524288
  %3290 = icmp ne i32 %3289, 0
  br i1 %3290, label %3320, label %3291

3291:                                             ; preds = %3287
  %3292 = load ptr, ptr %8, align 8, !tbaa !5
  %3293 = getelementptr inbounds %struct.ImGuiContext, ptr %3292, i32 0, i32 36
  %3294 = load ptr, ptr %3293, align 8, !tbaa !323
  %3295 = icmp eq ptr %3294, null
  br i1 %3295, label %3304, label %3296

3296:                                             ; preds = %3291
  %3297 = load ptr, ptr %8, align 8, !tbaa !5
  %3298 = getelementptr inbounds %struct.ImGuiContext, ptr %3297, i32 0, i32 36
  %3299 = load ptr, ptr %3298, align 8, !tbaa !323
  %3300 = getelementptr inbounds %struct.ImGuiWindow, ptr %3299, i32 0, i32 95
  %3301 = load ptr, ptr %3300, align 8, !tbaa !324
  %3302 = load ptr, ptr %10, align 8, !tbaa !5
  %3303 = icmp ne ptr %3301, %3302
  br i1 %3303, label %3304, label %3319

3304:                                             ; preds = %3296, %3291
  %3305 = load ptr, ptr %10, align 8, !tbaa !5
  %3306 = load ptr, ptr %10, align 8, !tbaa !5
  %3307 = getelementptr inbounds %struct.ImGuiWindow, ptr %3306, i32 0, i32 95
  %3308 = load ptr, ptr %3307, align 8, !tbaa !324
  %3309 = icmp eq ptr %3305, %3308
  br i1 %3309, label %3310, label %3318

3310:                                             ; preds = %3304
  %3311 = load ptr, ptr %10, align 8, !tbaa !5
  %3312 = getelementptr inbounds %struct.ImGuiWindow, ptr %3311, i32 0, i32 3
  %3313 = load i32, ptr %3312, align 4, !tbaa !121
  %3314 = and i32 %3313, 536870912
  %3315 = icmp ne i32 %3314, 0
  br i1 %3315, label %3318, label %3316

3316:                                             ; preds = %3310
  %3317 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef %3317)
  br label %3318

3318:                                             ; preds = %3316, %3310, %3304
  br label %3319

3319:                                             ; preds = %3318, %3296
  br label %3320

3320:                                             ; preds = %3319, %3287, %3282
  br label %3321

3321:                                             ; preds = %3320, %3253
  %3322 = load ptr, ptr %10, align 8, !tbaa !5
  %3323 = getelementptr inbounds %struct.ImGuiWindow, ptr %3322, i32 0, i32 106
  %3324 = load i8, ptr %3323, align 1
  %3325 = and i8 %3324, 1
  %3326 = trunc i8 %3325 to i1
  br i1 %3326, label %3327, label %3339

3327:                                             ; preds = %3321
  %3328 = load ptr, ptr %10, align 8, !tbaa !5
  %3329 = getelementptr inbounds %struct.ImGuiWindow, ptr %3328, i32 0, i32 27
  %3330 = load i32, ptr %3329, align 4, !tbaa !326
  %3331 = load ptr, ptr %8, align 8, !tbaa !5
  %3332 = getelementptr inbounds %struct.ImGuiContext, ptr %3331, i32 0, i32 76
  %3333 = load i32, ptr %3332, align 8, !tbaa !327
  %3334 = load ptr, ptr %10, align 8, !tbaa !5
  %3335 = getelementptr inbounds %struct.ImGuiWindow, ptr %3334, i32 0, i32 112
  %3336 = load i32, ptr %3335, align 4, !tbaa !328
  %3337 = load ptr, ptr %10, align 8, !tbaa !5
  %3338 = getelementptr inbounds %struct.ImGuiWindow, ptr %3337, i32 0, i32 113
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3330, i32 noundef %3333, i32 noundef %3336, ptr noundef nonnull align 4 dereferenceable(16) %3338)
  br label %3351

3339:                                             ; preds = %3321
  %3340 = load ptr, ptr %10, align 8, !tbaa !5
  %3341 = getelementptr inbounds %struct.ImGuiWindow, ptr %3340, i32 0, i32 27
  %3342 = load i32, ptr %3341, align 4, !tbaa !326
  %3343 = load ptr, ptr %8, align 8, !tbaa !5
  %3344 = getelementptr inbounds %struct.ImGuiContext, ptr %3343, i32 0, i32 76
  %3345 = load i32, ptr %3344, align 8, !tbaa !327
  %3346 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %3347 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  %3348 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3346, ptr noundef nonnull align 4 dereferenceable(8) %3347, i1 noundef zeroext false)
  %3349 = zext i1 %3348 to i64
  %3350 = select i1 %3348, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %3342, i32 noundef %3345, i32 noundef %3350, ptr noundef nonnull align 4 dereferenceable(16) %84)
  br label %3351

3351:                                             ; preds = %3339, %3327
  %3352 = load ptr, ptr %8, align 8, !tbaa !5
  %3353 = getelementptr inbounds %struct.ImGuiContext, ptr %3352, i32 0, i32 77
  %3354 = load i32, ptr %3353, align 4, !tbaa !329
  %3355 = icmp ne i32 %3354, 0
  br i1 %3355, label %3356, label %3373

3356:                                             ; preds = %3351
  %3357 = load ptr, ptr %10, align 8, !tbaa !5
  %3358 = getelementptr inbounds %struct.ImGuiWindow, ptr %3357, i32 0, i32 2
  %3359 = load i32, ptr %3358, align 8, !tbaa !150
  %3360 = load ptr, ptr %8, align 8, !tbaa !5
  %3361 = getelementptr inbounds %struct.ImGuiContext, ptr %3360, i32 0, i32 77
  %3362 = load i32, ptr %3361, align 4, !tbaa !329
  %3363 = icmp eq i32 %3359, %3362
  br i1 %3363, label %3372, label %3364

3364:                                             ; preds = %3356
  %3365 = load ptr, ptr %10, align 8, !tbaa !5
  %3366 = getelementptr inbounds %struct.ImGuiWindow, ptr %3365, i32 0, i32 27
  %3367 = load i32, ptr %3366, align 4, !tbaa !326
  %3368 = load ptr, ptr %8, align 8, !tbaa !5
  %3369 = getelementptr inbounds %struct.ImGuiContext, ptr %3368, i32 0, i32 77
  %3370 = load i32, ptr %3369, align 4, !tbaa !329
  %3371 = icmp eq i32 %3367, %3370
  br i1 %3371, label %3372, label %3373

3372:                                             ; preds = %3364, %3356
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %3373

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

3374:                                             ; preds = %882
  %3375 = load ptr, ptr %10, align 8, !tbaa !5
  %3376 = load ptr, ptr %10, align 8, !tbaa !5
  %3377 = getelementptr inbounds %struct.ImGuiWindow, ptr %3376, i32 0, i32 7
  %3378 = load ptr, ptr %3377, align 8, !tbaa !178
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %3375, ptr noundef %3378)
  %3379 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %3379)
  br label %3380

3380:                                             ; preds = %3374, %3373
  %3381 = load i32, ptr %7, align 4, !tbaa !9
  %3382 = and i32 %3381, 536870912
  %3383 = icmp ne i32 %3382, 0
  br i1 %3383, label %3391, label %3384

3384:                                             ; preds = %3380
  %3385 = load ptr, ptr %10, align 8, !tbaa !5
  %3386 = getelementptr inbounds %struct.ImGuiWindow, ptr %3385, i32 0, i32 73
  %3387 = getelementptr inbounds %struct.ImRect, ptr %3386, i32 0, i32 0
  %3388 = load ptr, ptr %10, align 8, !tbaa !5
  %3389 = getelementptr inbounds %struct.ImGuiWindow, ptr %3388, i32 0, i32 73
  %3390 = getelementptr inbounds %struct.ImRect, ptr %3389, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3387, ptr noundef nonnull align 4 dereferenceable(8) %3390, i1 noundef zeroext true)
  br label %3391

3391:                                             ; preds = %3384, %3380
  %3392 = load ptr, ptr %10, align 8, !tbaa !5
  %3393 = getelementptr inbounds %struct.ImGuiWindow, ptr %3392, i32 0, i32 41
  store i8 0, ptr %3393, align 1, !tbaa !330
  %3394 = load ptr, ptr %10, align 8, !tbaa !5
  %3395 = getelementptr inbounds %struct.ImGuiWindow, ptr %3394, i32 0, i32 52
  %3396 = load i16, ptr %3395, align 8, !tbaa !331
  %3397 = add i16 %3396, 1
  store i16 %3397, ptr %3395, align 8, !tbaa !331
  %3398 = load ptr, ptr %8, align 8, !tbaa !5
  %3399 = getelementptr inbounds %struct.ImGuiContext, ptr %3398, i32 0, i32 80
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(152) %3399)
  %3400 = load i8, ptr %13, align 1, !tbaa !96, !range !92, !noundef !93
  %3401 = trunc i8 %3400 to i1
  br i1 %3401, label %3402, label %3691

3402:                                             ; preds = %3391
  %3403 = load ptr, ptr %10, align 8, !tbaa !5
  %3404 = getelementptr inbounds %struct.ImGuiWindow, ptr %3403, i32 0, i32 106
  %3405 = load i8, ptr %3404, align 1
  %3406 = and i8 %3405, 1
  %3407 = trunc i8 %3406 to i1
  br i1 %3407, label %3408, label %3430

3408:                                             ; preds = %3402
  %3409 = load ptr, ptr %10, align 8, !tbaa !5
  %3410 = getelementptr inbounds %struct.ImGuiWindow, ptr %3409, i32 0, i32 106
  %3411 = load i8, ptr %3410, align 1
  %3412 = lshr i8 %3411, 2
  %3413 = and i8 %3412, 1
  %3414 = trunc i8 %3413 to i1
  br i1 %3414, label %3430, label %3415

3415:                                             ; preds = %3408
  %3416 = load ptr, ptr %10, align 8, !tbaa !5
  %3417 = getelementptr inbounds %struct.ImGuiWindow, ptr %3416, i32 0, i32 81
  %3418 = load i32, ptr %3417, align 4, !tbaa !332
  %3419 = load ptr, ptr %8, align 8, !tbaa !5
  %3420 = getelementptr inbounds %struct.ImGuiContext, ptr %3419, i32 0, i32 12
  %3421 = load i32, ptr %3420, align 8, !tbaa !95
  %3422 = icmp eq i32 %3418, %3421
  br i1 %3422, label %3423, label %3426

3423:                                             ; preds = %3415
  %3424 = load ptr, ptr %10, align 8, !tbaa !5
  %3425 = getelementptr inbounds %struct.ImGuiWindow, ptr %3424, i32 0, i32 63
  store i8 1, ptr %3425, align 1, !tbaa !171
  br label %3429

3426:                                             ; preds = %3415
  %3427 = load ptr, ptr %10, align 8, !tbaa !5
  %3428 = getelementptr inbounds %struct.ImGuiWindow, ptr %3427, i32 0, i32 62
  store i8 1, ptr %3428, align 8, !tbaa !190
  br label %3429

3429:                                             ; preds = %3426, %3423
  br label %3430

3430:                                             ; preds = %3429, %3408, %3402
  %3431 = load i32, ptr %7, align 4, !tbaa !9
  %3432 = and i32 %3431, 16777216
  %3433 = icmp ne i32 %3432, 0
  br i1 %3433, label %3434, label %3568

3434:                                             ; preds = %3430
  %3435 = load i32, ptr %7, align 4, !tbaa !9
  %3436 = and i32 %3435, 268435456
  %3437 = icmp ne i32 %3436, 0
  br i1 %3437, label %3568, label %3438

3438:                                             ; preds = %3434
  %3439 = load i32, ptr %7, align 4, !tbaa !9
  %3440 = and i32 %3439, 1
  %3441 = icmp ne i32 %3440, 0
  br i1 %3441, label %3448, label %3442

3442:                                             ; preds = %3438
  %3443 = load ptr, ptr %10, align 8, !tbaa !5
  %3444 = getelementptr inbounds %struct.ImGuiWindow, ptr %3443, i32 0, i32 106
  %3445 = load i8, ptr %3444, align 1
  %3446 = and i8 %3445, 1
  %3447 = trunc i8 %3446 to i1
  br label %3448

3448:                                             ; preds = %3442, %3438
  %3449 = phi i1 [ true, %3438 ], [ %3447, %3442 ]
  br i1 %3449, label %3450, label %3451

3450:                                             ; preds = %3448
  br label %3453

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

3452:                                             ; No predecessors!
  br label %3453

3453:                                             ; preds = %3452, %3450
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #13
  %3454 = load i32, ptr %7, align 4, !tbaa !9
  %3455 = and i32 %3454, 8388608
  %3456 = icmp ne i32 %3455, 0
  br i1 %3456, label %3457, label %3479

3457:                                             ; preds = %3453
  %3458 = load ptr, ptr %8, align 8, !tbaa !5
  %3459 = getelementptr inbounds %struct.ImGuiContext, ptr %3458, i32 0, i32 121
  %3460 = load i8, ptr %3459, align 4, !tbaa !333, !range !92, !noundef !93
  %3461 = trunc i8 %3460 to i1
  br i1 %3461, label %3462, label %3477

3462:                                             ; preds = %3457
  %3463 = load ptr, ptr %8, align 8, !tbaa !5
  %3464 = getelementptr inbounds %struct.ImGuiContext, ptr %3463, i32 0, i32 102
  %3465 = load ptr, ptr %3464, align 8, !tbaa !276
  %3466 = icmp ne ptr %3465, null
  br i1 %3466, label %3467, label %3477

3467:                                             ; preds = %3462
  %3468 = load ptr, ptr %8, align 8, !tbaa !5
  %3469 = getelementptr inbounds %struct.ImGuiContext, ptr %3468, i32 0, i32 102
  %3470 = load ptr, ptr %3469, align 8, !tbaa !276
  %3471 = getelementptr inbounds %struct.ImGuiWindow, ptr %3470, i32 0, i32 97
  %3472 = load ptr, ptr %3471, align 8, !tbaa !334
  %3473 = load ptr, ptr %10, align 8, !tbaa !5
  %3474 = getelementptr inbounds %struct.ImGuiWindow, ptr %3473, i32 0, i32 97
  %3475 = load ptr, ptr %3474, align 8, !tbaa !334
  %3476 = icmp eq ptr %3472, %3475
  br label %3477

3477:                                             ; preds = %3467, %3462, %3457
  %3478 = phi i1 [ false, %3462 ], [ false, %3457 ], [ %3476, %3467 ]
  br label %3479

3479:                                             ; preds = %3477, %3453
  %3480 = phi i1 [ false, %3453 ], [ %3478, %3477 ]
  %3481 = zext i1 %3480 to i8
  store i8 %3481, ptr %107, align 1, !tbaa !96
  %3482 = load ptr, ptr %8, align 8, !tbaa !5
  %3483 = getelementptr inbounds %struct.ImGuiContext, ptr %3482, i32 0, i32 236
  %3484 = load i8, ptr %3483, align 8, !tbaa !335, !range !92, !noundef !93
  %3485 = trunc i8 %3484 to i1
  br i1 %3485, label %3533, label %3486

3486:                                             ; preds = %3479
  %3487 = load i8, ptr %107, align 1, !tbaa !96, !range !92, !noundef !93
  %3488 = trunc i8 %3487 to i1
  br i1 %3488, label %3533, label %3489

3489:                                             ; preds = %3486
  %3490 = load ptr, ptr %10, align 8, !tbaa !5
  %3491 = getelementptr inbounds %struct.ImGuiWindow, ptr %3490, i32 0, i32 71
  %3492 = getelementptr inbounds %struct.ImRect, ptr %3491, i32 0, i32 0
  %3493 = getelementptr inbounds %struct.ImVec2, ptr %3492, i32 0, i32 0
  %3494 = load float, ptr %3493, align 8, !tbaa !336
  %3495 = load ptr, ptr %10, align 8, !tbaa !5
  %3496 = getelementptr inbounds %struct.ImGuiWindow, ptr %3495, i32 0, i32 71
  %3497 = getelementptr inbounds %struct.ImRect, ptr %3496, i32 0, i32 1
  %3498 = getelementptr inbounds %struct.ImVec2, ptr %3497, i32 0, i32 0
  %3499 = load float, ptr %3498, align 8, !tbaa !337
  %3500 = fcmp oge float %3494, %3499
  br i1 %3500, label %3513, label %3501

3501:                                             ; preds = %3489
  %3502 = load ptr, ptr %10, align 8, !tbaa !5
  %3503 = getelementptr inbounds %struct.ImGuiWindow, ptr %3502, i32 0, i32 71
  %3504 = getelementptr inbounds %struct.ImRect, ptr %3503, i32 0, i32 0
  %3505 = getelementptr inbounds %struct.ImVec2, ptr %3504, i32 0, i32 1
  %3506 = load float, ptr %3505, align 4, !tbaa !245
  %3507 = load ptr, ptr %10, align 8, !tbaa !5
  %3508 = getelementptr inbounds %struct.ImGuiWindow, ptr %3507, i32 0, i32 71
  %3509 = getelementptr inbounds %struct.ImRect, ptr %3508, i32 0, i32 1
  %3510 = getelementptr inbounds %struct.ImVec2, ptr %3509, i32 0, i32 1
  %3511 = load float, ptr %3510, align 4, !tbaa !338
  %3512 = fcmp oge float %3506, %3511
  br i1 %3512, label %3513, label %3532

3513:                                             ; preds = %3501, %3489
  %3514 = load ptr, ptr %10, align 8, !tbaa !5
  %3515 = getelementptr inbounds %struct.ImGuiWindow, ptr %3514, i32 0, i32 58
  %3516 = load i8, ptr %3515, align 8, !tbaa !220
  %3517 = sext i8 %3516 to i32
  %3518 = icmp sgt i32 %3517, 0
  br i1 %3518, label %3525, label %3519

3519:                                             ; preds = %3513
  %3520 = load ptr, ptr %10, align 8, !tbaa !5
  %3521 = getelementptr inbounds %struct.ImGuiWindow, ptr %3520, i32 0, i32 59
  %3522 = load i8, ptr %3521, align 1, !tbaa !221
  %3523 = sext i8 %3522 to i32
  %3524 = icmp sgt i32 %3523, 0
  br i1 %3524, label %3525, label %3528

3525:                                             ; preds = %3519, %3513
  %3526 = load ptr, ptr %10, align 8, !tbaa !5
  %3527 = getelementptr inbounds %struct.ImGuiWindow, ptr %3526, i32 0, i32 63
  store i8 1, ptr %3527, align 1, !tbaa !171
  br label %3531

3528:                                             ; preds = %3519
  %3529 = load ptr, ptr %10, align 8, !tbaa !5
  %3530 = getelementptr inbounds %struct.ImGuiWindow, ptr %3529, i32 0, i32 62
  store i8 1, ptr %3530, align 8, !tbaa !190
  br label %3531

3531:                                             ; preds = %3528, %3525
  br label %3532

3532:                                             ; preds = %3531, %3501
  br label %3533

3533:                                             ; preds = %3532, %3486, %3479
  %3534 = load ptr, ptr %22, align 8, !tbaa !5
  %3535 = icmp ne ptr %3534, null
  br i1 %3535, label %3536, label %3550

3536:                                             ; preds = %3533
  %3537 = load ptr, ptr %22, align 8, !tbaa !5
  %3538 = getelementptr inbounds %struct.ImGuiWindow, ptr %3537, i32 0, i32 42
  %3539 = load i8, ptr %3538, align 2, !tbaa !213, !range !92, !noundef !93
  %3540 = trunc i8 %3539 to i1
  br i1 %3540, label %3547, label %3541

3541:                                             ; preds = %3536
  %3542 = load ptr, ptr %22, align 8, !tbaa !5
  %3543 = getelementptr inbounds %struct.ImGuiWindow, ptr %3542, i32 0, i32 62
  %3544 = load i8, ptr %3543, align 8, !tbaa !190
  %3545 = sext i8 %3544 to i32
  %3546 = icmp sgt i32 %3545, 0
  br i1 %3546, label %3547, label %3550

3547:                                             ; preds = %3541, %3536
  %3548 = load ptr, ptr %10, align 8, !tbaa !5
  %3549 = getelementptr inbounds %struct.ImGuiWindow, ptr %3548, i32 0, i32 62
  store i8 1, ptr %3549, align 8, !tbaa !190
  br label %3550

3550:                                             ; preds = %3547, %3541, %3533
  %3551 = load ptr, ptr %22, align 8, !tbaa !5
  %3552 = icmp ne ptr %3551, null
  br i1 %3552, label %3553, label %3567

3553:                                             ; preds = %3550
  %3554 = load ptr, ptr %22, align 8, !tbaa !5
  %3555 = getelementptr inbounds %struct.ImGuiWindow, ptr %3554, i32 0, i32 42
  %3556 = load i8, ptr %3555, align 2, !tbaa !213, !range !92, !noundef !93
  %3557 = trunc i8 %3556 to i1
  br i1 %3557, label %3564, label %3558

3558:                                             ; preds = %3553
  %3559 = load ptr, ptr %22, align 8, !tbaa !5
  %3560 = getelementptr inbounds %struct.ImGuiWindow, ptr %3559, i32 0, i32 63
  %3561 = load i8, ptr %3560, align 1, !tbaa !171
  %3562 = sext i8 %3561 to i32
  %3563 = icmp sgt i32 %3562, 0
  br i1 %3563, label %3564, label %3567

3564:                                             ; preds = %3558, %3553
  %3565 = load ptr, ptr %10, align 8, !tbaa !5
  %3566 = getelementptr inbounds %struct.ImGuiWindow, ptr %3565, i32 0, i32 63
  store i8 1, ptr %3566, align 1, !tbaa !171
  br label %3567

3567:                                             ; preds = %3564, %3558, %3550
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #13
  br label %3568

3568:                                             ; preds = %3567, %3434, %3430
  %3569 = load ptr, ptr %9, align 8, !tbaa !5
  %3570 = getelementptr inbounds %struct.ImGuiStyle, ptr %3569, i32 0, i32 0
  %3571 = load float, ptr %3570, align 4, !tbaa !339
  %3572 = fcmp ole float %3571, 0.000000e+00
  br i1 %3572, label %3573, label %3576

3573:                                             ; preds = %3568
  %3574 = load ptr, ptr %10, align 8, !tbaa !5
  %3575 = getelementptr inbounds %struct.ImGuiWindow, ptr %3574, i32 0, i32 62
  store i8 1, ptr %3575, align 8, !tbaa !190
  br label %3576

3576:                                             ; preds = %3573, %3568
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #13
  %3577 = load ptr, ptr %10, align 8, !tbaa !5
  %3578 = getelementptr inbounds %struct.ImGuiWindow, ptr %3577, i32 0, i32 62
  %3579 = load i8, ptr %3578, align 8, !tbaa !190
  %3580 = sext i8 %3579 to i32
  %3581 = icmp sgt i32 %3580, 0
  br i1 %3581, label %3588, label %3582

3582:                                             ; preds = %3576
  %3583 = load ptr, ptr %10, align 8, !tbaa !5
  %3584 = getelementptr inbounds %struct.ImGuiWindow, ptr %3583, i32 0, i32 63
  %3585 = load i8, ptr %3584, align 1, !tbaa !171
  %3586 = sext i8 %3585 to i32
  %3587 = icmp sgt i32 %3586, 0
  br label %3588

3588:                                             ; preds = %3582, %3576
  %3589 = phi i1 [ true, %3576 ], [ %3587, %3582 ]
  %3590 = zext i1 %3589 to i8
  store i8 %3590, ptr %108, align 1, !tbaa !96
  %3591 = load i8, ptr %108, align 1, !tbaa !96, !range !92, !noundef !93
  %3592 = trunc i8 %3591 to i1
  br i1 %3592, label %3599, label %3593

3593:                                             ; preds = %3588
  %3594 = load ptr, ptr %10, align 8, !tbaa !5
  %3595 = getelementptr inbounds %struct.ImGuiWindow, ptr %3594, i32 0, i32 64
  %3596 = load i8, ptr %3595, align 2, !tbaa !191
  %3597 = sext i8 %3596 to i32
  %3598 = icmp sgt i32 %3597, 0
  br label %3599

3599:                                             ; preds = %3593, %3588
  %3600 = phi i1 [ true, %3588 ], [ %3598, %3593 ]
  %3601 = load ptr, ptr %10, align 8, !tbaa !5
  %3602 = getelementptr inbounds %struct.ImGuiWindow, ptr %3601, i32 0, i32 46
  %3603 = zext i1 %3600 to i8
  store i8 %3603, ptr %3602, align 2, !tbaa !340
  %3604 = load ptr, ptr %10, align 8, !tbaa !5
  %3605 = getelementptr inbounds %struct.ImGuiWindow, ptr %3604, i32 0, i32 65
  %3606 = load i8, ptr %3605, align 1, !tbaa !341
  %3607 = sext i8 %3606 to i32
  %3608 = icmp sgt i32 %3607, 0
  br i1 %3608, label %3609, label %3618

3609:                                             ; preds = %3599
  %3610 = load ptr, ptr %10, align 8, !tbaa !5
  %3611 = getelementptr inbounds %struct.ImGuiWindow, ptr %3610, i32 0, i32 65
  %3612 = load i8, ptr %3611, align 1, !tbaa !341
  %3613 = add i8 %3612, -1
  store i8 %3613, ptr %3611, align 1, !tbaa !341
  %3614 = load ptr, ptr %10, align 8, !tbaa !5
  %3615 = getelementptr inbounds %struct.ImGuiWindow, ptr %3614, i32 0, i32 3
  %3616 = load i32, ptr %3615, align 4, !tbaa !121
  %3617 = or i32 %3616, 197120
  store i32 %3617, ptr %3615, align 4, !tbaa !121
  br label %3618

3618:                                             ; preds = %3609, %3599
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #13
  store i8 0, ptr %109, align 1, !tbaa !96
  %3619 = load ptr, ptr %10, align 8, !tbaa !5
  %3620 = getelementptr inbounds %struct.ImGuiWindow, ptr %3619, i32 0, i32 42
  %3621 = load i8, ptr %3620, align 2, !tbaa !213, !range !92, !noundef !93
  %3622 = trunc i8 %3621 to i1
  br i1 %3622, label %3631, label %3623

3623:                                             ; preds = %3618
  %3624 = load ptr, ptr %10, align 8, !tbaa !5
  %3625 = getelementptr inbounds %struct.ImGuiWindow, ptr %3624, i32 0, i32 39
  %3626 = load i8, ptr %3625, align 1, !tbaa !172, !range !92, !noundef !93
  %3627 = trunc i8 %3626 to i1
  br i1 %3627, label %3628, label %3631

3628:                                             ; preds = %3623
  %3629 = load i8, ptr %108, align 1, !tbaa !96, !range !92, !noundef !93
  %3630 = trunc i8 %3629 to i1
  br i1 %3630, label %3631, label %3651

3631:                                             ; preds = %3628, %3623, %3618
  %3632 = load ptr, ptr %10, align 8, !tbaa !5
  %3633 = getelementptr inbounds %struct.ImGuiWindow, ptr %3632, i32 0, i32 58
  %3634 = load i8, ptr %3633, align 8, !tbaa !220
  %3635 = sext i8 %3634 to i32
  %3636 = icmp sle i32 %3635, 0
  br i1 %3636, label %3637, label %3650

3637:                                             ; preds = %3631
  %3638 = load ptr, ptr %10, align 8, !tbaa !5
  %3639 = getelementptr inbounds %struct.ImGuiWindow, ptr %3638, i32 0, i32 59
  %3640 = load i8, ptr %3639, align 1, !tbaa !221
  %3641 = sext i8 %3640 to i32
  %3642 = icmp sle i32 %3641, 0
  br i1 %3642, label %3643, label %3650

3643:                                             ; preds = %3637
  %3644 = load ptr, ptr %10, align 8, !tbaa !5
  %3645 = getelementptr inbounds %struct.ImGuiWindow, ptr %3644, i32 0, i32 63
  %3646 = load i8, ptr %3645, align 1, !tbaa !171
  %3647 = sext i8 %3646 to i32
  %3648 = icmp sle i32 %3647, 0
  br i1 %3648, label %3649, label %3650

3649:                                             ; preds = %3643
  store i8 1, ptr %109, align 1, !tbaa !96
  br label %3650

3650:                                             ; preds = %3649, %3643, %3637, %3631
  br label %3651

3651:                                             ; preds = %3650, %3628
  %3652 = load i8, ptr %109, align 1, !tbaa !96, !range !92, !noundef !93
  %3653 = trunc i8 %3652 to i1
  %3654 = load ptr, ptr %10, align 8, !tbaa !5
  %3655 = getelementptr inbounds %struct.ImGuiWindow, ptr %3654, i32 0, i32 44
  %3656 = zext i1 %3653 to i8
  store i8 %3656, ptr %3655, align 8, !tbaa !342
  %3657 = load ptr, ptr %10, align 8, !tbaa !5
  %3658 = getelementptr inbounds %struct.ImGuiWindow, ptr %3657, i32 0, i32 44
  %3659 = load i8, ptr %3658, align 8, !tbaa !342, !range !92, !noundef !93
  %3660 = trunc i8 %3659 to i1
  br i1 %3660, label %3661, label %3669

3661:                                             ; preds = %3651
  %3662 = load ptr, ptr %10, align 8, !tbaa !5
  %3663 = getelementptr inbounds %struct.ImGuiWindow, ptr %3662, i32 0, i32 70
  %3664 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3663, i32 0, i32 16
  %3665 = load i16, ptr %3664, align 4, !tbaa !301
  %3666 = load ptr, ptr %10, align 8, !tbaa !5
  %3667 = getelementptr inbounds %struct.ImGuiWindow, ptr %3666, i32 0, i32 70
  %3668 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3667, i32 0, i32 17
  store i16 %3665, ptr %3668, align 2, !tbaa !300
  br label %3669

3669:                                             ; preds = %3661, %3651
  %3670 = load ptr, ptr %10, align 8, !tbaa !5
  %3671 = getelementptr inbounds %struct.ImGuiWindow, ptr %3670, i32 0, i32 44
  %3672 = load i8, ptr %3671, align 8, !tbaa !342, !range !92, !noundef !93
  %3673 = trunc i8 %3672 to i1
  br i1 %3673, label %3674, label %3690

3674:                                             ; preds = %3669
  %3675 = load ptr, ptr %10, align 8, !tbaa !5
  %3676 = getelementptr inbounds %struct.ImGuiWindow, ptr %3675, i32 0, i32 45
  %3677 = load i8, ptr %3676, align 1, !tbaa !120, !range !92, !noundef !93
  %3678 = trunc i8 %3677 to i1
  br i1 %3678, label %3690, label %3679

3679:                                             ; preds = %3674
  %3680 = load ptr, ptr %10, align 8, !tbaa !5
  %3681 = getelementptr inbounds %struct.ImGuiWindow, ptr %3680, i32 0, i32 45
  %3682 = load i8, ptr %3681, align 1, !tbaa !120, !range !92, !noundef !93
  %3683 = trunc i8 %3682 to i1
  %3684 = zext i1 %3683 to i32
  %3685 = icmp eq i32 %3684, 0
  br i1 %3685, label %3686, label %3687

3686:                                             ; preds = %3679
  br label %3689

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

3688:                                             ; No predecessors!
  br label %3689

3689:                                             ; preds = %3688, %3686
  br label %3690

3690:                                             ; preds = %3689, %3674, %3669
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #13
  br label %3691

3691:                                             ; preds = %3690, %3391
  %3692 = load ptr, ptr %10, align 8, !tbaa !5
  %3693 = getelementptr inbounds %struct.ImGuiWindow, ptr %3692, i32 0, i32 47
  %3694 = load i8, ptr %3693, align 1, !tbaa !114, !range !92, !noundef !93
  %3695 = trunc i8 %3694 to i1
  br i1 %3695, label %3744, label %3696

3696:                                             ; preds = %3691
  %3697 = load ptr, ptr %8, align 8, !tbaa !5
  %3698 = getelementptr inbounds %struct.ImGuiContext, ptr %3697, i32 0, i32 2
  %3699 = getelementptr inbounds %struct.ImGuiIO, ptr %3698, i32 0, i32 35
  %3700 = load i8, ptr %3699, align 8, !tbaa !343, !range !92, !noundef !93
  %3701 = trunc i8 %3700 to i1
  br i1 %3701, label %3702, label %3705

3702:                                             ; preds = %3696
  %3703 = load i8, ptr %11, align 1, !tbaa !96, !range !92, !noundef !93
  %3704 = trunc i8 %3703 to i1
  br i1 %3704, label %3721, label %3705

3705:                                             ; preds = %3702, %3696
  %3706 = load ptr, ptr %8, align 8, !tbaa !5
  %3707 = getelementptr inbounds %struct.ImGuiContext, ptr %3706, i32 0, i32 2
  %3708 = getelementptr inbounds %struct.ImGuiIO, ptr %3707, i32 0, i32 36
  %3709 = load i8, ptr %3708, align 1, !tbaa !344, !range !92, !noundef !93
  %3710 = trunc i8 %3709 to i1
  br i1 %3710, label %3711, label %3744

3711:                                             ; preds = %3705
  %3712 = load ptr, ptr %8, align 8, !tbaa !5
  %3713 = getelementptr inbounds %struct.ImGuiContext, ptr %3712, i32 0, i32 252
  %3714 = load i8, ptr %3713, align 2, !tbaa !345
  %3715 = sext i8 %3714 to i32
  %3716 = load ptr, ptr %8, align 8, !tbaa !5
  %3717 = getelementptr inbounds %struct.ImGuiContext, ptr %3716, i32 0, i32 29
  %3718 = getelementptr inbounds %struct.ImVector.5, ptr %3717, i32 0, i32 0
  %3719 = load i32, ptr %3718, align 8, !tbaa !112
  %3720 = icmp eq i32 %3715, %3719
  br i1 %3720, label %3721, label %3744

3721:                                             ; preds = %3711, %3702
  %3722 = load ptr, ptr %10, align 8, !tbaa !5
  %3723 = getelementptr inbounds %struct.ImGuiWindow, ptr %3722, i32 0, i32 58
  %3724 = load i8, ptr %3723, align 8, !tbaa !220
  %3725 = sext i8 %3724 to i32
  %3726 = icmp sgt i32 %3725, 0
  br i1 %3726, label %3727, label %3732

3727:                                             ; preds = %3721
  %3728 = load ptr, ptr %10, align 8, !tbaa !5
  %3729 = getelementptr inbounds %struct.ImGuiWindow, ptr %3728, i32 0, i32 58
  %3730 = load i8, ptr %3729, align 8, !tbaa !220
  %3731 = add i8 %3730, 1
  store i8 %3731, ptr %3729, align 8, !tbaa !220
  br label %3732

3732:                                             ; preds = %3727, %3721
  %3733 = load ptr, ptr %10, align 8, !tbaa !5
  %3734 = getelementptr inbounds %struct.ImGuiWindow, ptr %3733, i32 0, i32 59
  %3735 = load i8, ptr %3734, align 1, !tbaa !221
  %3736 = sext i8 %3735 to i32
  %3737 = icmp sgt i32 %3736, 0
  br i1 %3737, label %3738, label %3743

3738:                                             ; preds = %3732
  %3739 = load ptr, ptr %10, align 8, !tbaa !5
  %3740 = getelementptr inbounds %struct.ImGuiWindow, ptr %3739, i32 0, i32 59
  %3741 = load i8, ptr %3740, align 1, !tbaa !221
  %3742 = add i8 %3741, 1
  store i8 %3742, ptr %3740, align 1, !tbaa !221
  br label %3743

3743:                                             ; preds = %3738, %3732
  store i1 false, ptr %4, align 1
  store i32 1, ptr %110, align 4
  br label %3750

3744:                                             ; preds = %3711, %3705, %3691
  %3745 = load ptr, ptr %10, align 8, !tbaa !5
  %3746 = getelementptr inbounds %struct.ImGuiWindow, ptr %3745, i32 0, i32 44
  %3747 = load i8, ptr %3746, align 8, !tbaa !342, !range !92, !noundef !93
  %3748 = trunc i8 %3747 to i1
  %3749 = xor i1 %3748, true
  store i1 %3749, ptr %4, align 1
  store i32 1, ptr %110, align 4
  br label %3750

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 16560}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14632, !24, i64 14848, !10, i64 15980, !10, i64 15984, !6, i64 15992, !17, i64 16000, !17, i64 16004, !25, i64 16008, !28, i64 16536, !10, i64 16544, !10, i64 16548, !10, i64 16552, !10, i64 16556, !14, i64 16560, !14, i64 16561, !14, i64 16562, !14, i64 16563, !14, i64 16564, !6, i64 16568, !29, i64 16576, !29, i64 16592, !19, i64 16608, !10, i64 16612, !30, i64 16616, !30, i64 16632, !30, i64 16648, !31, i64 16664, !32, i64 16680, !10, i64 16696, !16, i64 16700, !6, i64 16712, !6, i64 16720, !6, i64 16728, !6, i64 16736, !6, i64 16744, !16, i64 16752, !10, i64 16760, !10, i64 16764, !17, i64 16768, !16, i64 16772, !16, i64 16780, !10, i64 16788, !10, i64 16792, !10, i64 16796, !14, i64 16800, !14, i64 16801, !17, i64 16804, !17, i64 16808, !10, i64 16812, !10, i64 16816, !17, i64 16820, !14, i64 16824, !14, i64 16825, !14, i64 16826, !14, i64 16827, !14, i64 16828, !14, i64 16829, !16, i64 16832, !6, i64 16840, !34, i64 16848, !10, i64 16852, !10, i64 16856, !14, i64 16860, !14, i64 16861, !6, i64 16864, !10, i64 16872, !17, i64 16876, !7, i64 16880, !35, i64 18728, !10, i64 19072, !14, i64 19076, !10, i64 19080, !10, i64 19084, !10, i64 19088, !10, i64 19092, !37, i64 19096, !39, i64 19128, !41, i64 19192, !14, i64 19344, !43, i64 19352, !44, i64 19368, !45, i64 19384, !46, i64 19400, !47, i64 19416, !48, i64 19432, !49, i64 19448, !49, i64 19464, !50, i64 19480, !10, i64 19496, !51, i64 19504, !17, i64 19520, !6, i64 19528, !6, i64 19536, !6, i64 19544, !10, i64 19552, !52, i64 19560, !10, i64 19608, !10, i64 19612, !10, i64 19616, !6, i64 19624, !10, i64 19632, !10, i64 19636, !10, i64 19640, !10, i64 19644, !10, i64 19648, !10, i64 19652, !10, i64 19656, !10, i64 19660, !10, i64 19664, !10, i64 19668, !10, i64 19672, !34, i64 19676, !53, i64 19680, !38, i64 19688, !14, i64 19696, !14, i64 19697, !14, i64 19698, !14, i64 19699, !14, i64 19700, !14, i64 19701, !14, i64 19702, !54, i64 19704, !14, i64 19768, !14, i64 19769, !14, i64 19770, !10, i64 19772, !10, i64 19776, !10, i64 19780, !10, i64 19784, !10, i64 19788, !10, i64 19792, !40, i64 19796, !40, i64 19812, !10, i64 19828, !10, i64 19832, !10, i64 19836, !54, i64 19840, !54, i64 19904, !54, i64 19968, !54, i64 20032, !10, i64 20096, !10, i64 20100, !6, i64 20104, !6, i64 20112, !6, i64 20120, !17, i64 20128, !17, i64 20132, !14, i64 20136, !16, i64 20140, !16, i64 20148, !17, i64 20156, !14, i64 20160, !14, i64 20161, !14, i64 20162, !10, i64 20164, !10, i64 20168, !10, i64 20172, !55, i64 20176, !40, i64 20240, !10, i64 20256, !10, i64 20260, !17, i64 20264, !10, i64 20268, !10, i64 20272, !10, i64 20276, !10, i64 20280, !56, i64 20288, !7, i64 20304, !10, i64 20320, !57, i64 20328, !6, i64 20344, !10, i64 20352, !58, i64 20360, !59, i64 20376, !61, i64 20416, !62, i64 20432, !6, i64 20448, !63, i64 20456, !65, i64 20496, !66, i64 20512, !10, i64 20528, !10, i64 20532, !17, i64 20536, !17, i64 20540, !10, i64 20544, !10, i64 20548, !10, i64 20552, !17, i64 20556, !16, i64 20560, !67, i64 20568, !71, i64 24296, !72, i64 24320, !10, i64 24440, !10, i64 24444, !10, i64 24448, !10, i64 24452, !17, i64 24456, !17, i64 24460, !10, i64 24464, !26, i64 24468, !74, i64 24484, !40, i64 24532, !14, i64 24548, !17, i64 24552, !17, i64 24556, !14, i64 24560, !14, i64 24561, !17, i64 24564, !17, i64 24568, !17, i64 24572, !17, i64 24576, !18, i64 24580, !18, i64 24582, !18, i64 24584, !68, i64 24592, !46, i64 24608, !75, i64 24624, !77, i64 24728, !77, i64 24744, !10, i64 24760, !78, i64 24768, !6, i64 24824, !14, i64 24832, !17, i64 24836, !81, i64 24840, !82, i64 24856, !83, i64 24872, !84, i64 24888, !85, i64 24904, !10, i64 24920, !7, i64 24928, !14, i64 25016, !86, i64 25020, !6, i64 25024, !81, i64 25032, !6, i64 25048, !6, i64 25056, !17, i64 25064, !14, i64 25068, !10, i64 25072, !10, i64 25076, !10, i64 25080, !10, i64 25084, !81, i64 25088, !87, i64 25104, !7, i64 25128, !7, i64 25129, !7, i64 25130, !14, i64 25131, !7, i64 25132, !10, i64 25136, !88, i64 25140, !89, i64 25160, !91, i64 25200, !6, i64 25264, !7, i64 25272, !10, i64 25512, !10, i64 25516, !17, i64 25520, !10, i64 25524, !10, i64 25528, !10, i64 25532, !68, i64 25536}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !17, i64 56, !14, i64 60, !6, i64 64, !16, i64 72, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91, !14, i64 92, !14, i64 93, !14, i64 94, !14, i64 95, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !14, i64 120, !14, i64 121, !14, i64 122, !14, i64 123, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !18, i64 200, !14, i64 202, !14, i64 203, !14, i64 204, !14, i64 205, !14, i64 206, !14, i64 207, !14, i64 208, !17, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !16, i64 232, !7, i64 240, !7, i64 2904, !7, i64 3572, !6, i64 3640, !6, i64 3648, !16, i64 3656, !7, i64 3664, !17, i64 3672, !17, i64 3676, !19, i64 3680, !10, i64 3684, !14, i64 3688, !14, i64 3689, !14, i64 3690, !14, i64 3691, !10, i64 3692, !7, i64 3696, !14, i64 14352, !16, i64 14356, !7, i64 14364, !7, i64 14408, !7, i64 14448, !7, i64 14453, !7, i64 14458, !7, i64 14468, !7, i64 14478, !7, i64 14483, !7, i64 14488, !14, i64 14493, !7, i64 14496, !7, i64 14516, !7, i64 14536, !7, i64 14576, !17, i64 14596, !14, i64 14600, !14, i64 14601, !7, i64 14602, !14, i64 14603, !18, i64 14604, !20, i64 14608}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !22, i64 184, !23, i64 200}
!22 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !10, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !10, i64 156, !16, i64 160, !16, i64 168, !17, i64 176, !16, i64 180, !16, i64 188, !16, i64 196, !16, i64 204, !17, i64 212, !17, i64 216, !14, i64 220, !14, i64 221, !14, i64 222, !17, i64 224, !17, i64 228, !7, i64 232, !17, i64 1112, !17, i64 1116, !17, i64 1120, !10, i64 1124, !10, i64 1128}
!25 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !26, i64 28, !10, i64 44, !27, i64 48, !7, i64 64, !17, i64 448, !7, i64 452, !6, i64 520}
!26 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!27 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"double", !7, i64 0}
!29 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS12ImGuiStorage", !33, i64 0}
!33 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!35 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !36, i64 312, !36, i64 328}
!36 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !17, i64 8, !38, i64 16, !10, i64 24, !14, i64 28}
!38 = !{!"long long", !7, i64 0}
!39 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !40, i64 12, !40, i64 28, !40, i64 44}
!40 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!41 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !16, i64 20, !16, i64 28, !16, i64 36, !16, i64 44, !16, i64 52, !10, i64 60, !14, i64 64, !14, i64 65, !40, i64 68, !6, i64 88, !6, i64 96, !17, i64 104, !10, i64 108, !10, i64 112, !42, i64 116, !16, i64 144}
!42 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 25}
!43 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS20ImGuiPlatformMonitor", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !17, i64 32, !6, i64 40}
!53 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!54 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !40, i64 16, !10, i64 32, !38, i64 40, !17, i64 48, !17, i64 52, !17, i64 56}
!55 = !{!"_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}
!56 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS6ImPoolI10ImGuiTableE", !60, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!60 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !64, i64 0, !32, i64 16, !10, i64 32, !10, i64 36}
!64 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !68, i64 40, !68, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !69, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720}
!68 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !17, i64 28, !70, i64 32}
!70 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!71 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !68, i64 8}
!72 = !{!"_ZTS6ImFont", !61, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !73, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !17, i64 88, !17, i64 92, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !10, i64 112, !7, i64 116}
!73 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS21ImGuiComboPreviewData", !40, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!75 = !{!"_ZTS22ImGuiTypingSelectState", !76, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!76 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!77 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!78 = !{!"_ZTS16ImGuiDockContext", !32, i64 0, !79, i64 16, !80, i64 32, !14, i64 48}
!79 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS15ImGuiTextBuffer", !68, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !68, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !68, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!87 = !{!"_ZTS14ImGuiTextIndex", !47, i64 0, !10, i64 16}
!88 = !{!"_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}
!89 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !90, i64 16, !14, i64 32, !17, i64 36}
!90 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !18, i64 8, !7, i64 12}
!92 = !{i8 0, i8 2}
!93 = !{}
!94 = !{!13, !10, i64 16548}
!95 = !{!13, !10, i64 16544}
!96 = !{!14, !14, i64 0}
!97 = !{!98, !10, i64 672}
!98 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !42, i64 32, !6, i64 64, !10, i64 72, !16, i64 76, !10, i64 84, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !17, i64 168, !17, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !16, i64 224, !16, i64 232, !14, i64 240, !14, i64 241, !14, i64 242, !14, i64 243, !14, i64 244, !14, i64 245, !14, i64 246, !14, i64 247, !14, i64 248, !14, i64 249, !14, i64 250, !14, i64 251, !14, i64 252, !14, i64 253, !7, i64 254, !7, i64 255, !18, i64 256, !18, i64 258, !18, i64 260, !18, i64 262, !18, i64 264, !10, i64 268, !7, i64 272, !7, i64 273, !14, i64 274, !10, i64 276, !7, i64 280, !7, i64 281, !7, i64 282, !7, i64 283, !10, i64 284, !10, i64 285, !10, i64 286, !10, i64 287, !16, i64 288, !16, i64 296, !46, i64 304, !99, i64 320, !40, i64 552, !40, i64 568, !40, i64 584, !40, i64 600, !40, i64 616, !40, i64 632, !40, i64 648, !102, i64 664, !102, i64 668, !10, i64 672, !10, i64 676, !17, i64 680, !17, i64 684, !32, i64 688, !103, i64 704, !17, i64 720, !17, i64 724, !10, i64 728, !6, i64 736, !104, i64 744, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !7, i64 1008, !7, i64 1016, !7, i64 1048, !10, i64 1064, !10, i64 1068, !10, i64 1072, !14, i64 1076, !14, i64 1077, !14, i64 1077, !14, i64 1077, !14, i64 1077, !18, i64 1078, !111, i64 1080, !6, i64 1104, !6, i64 1112, !10, i64 1120, !10, i64 1124, !40, i64 1128}
!99 = !{!"_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, !100, i64 68, !100, i64 72, !100, i64 76, !16, i64 80, !53, i64 88, !18, i64 92, !18, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !101, i64 108, !10, i64 136, !10, i64 140, !30, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !17, i64 188, !17, i64 192, !61, i64 200, !61, i64 216}
!100 = !{!"_ZTS6ImVec1", !17, i64 0}
!101 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!102 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!103 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!104 = !{!"_ZTS10ImDrawList", !105, i64 0, !20, i64 16, !106, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !107, i64 88, !108, i64 104, !27, i64 120, !109, i64 136, !110, i64 168, !17, i64 192}
!105 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!106 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!107 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!108 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!109 = !{!"_ZTS15ImDrawCmdHeader", !26, i64 0, !6, i64 16, !10, i64 24}
!110 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !62, i64 8}
!111 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!112 = !{!13, !10, i64 16664}
!113 = !{!13, !14, i64 16561}
!114 = !{!98, !14, i64 251}
!115 = !{!13, !10, i64 19464}
!116 = !{!98, !10, i64 268}
!117 = !{!118, !10, i64 0}
!118 = !{!"_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}
!119 = !{!118, !6, i64 8}
!120 = !{!98, !14, i64 249}
!121 = !{!98, !10, i64 20}
!122 = !{!98, !10, i64 24}
!123 = !{!13, !10, i64 19192}
!124 = !{!13, !10, i64 19252}
!125 = !{!98, !10, i64 28}
!126 = !{!13, !28, i64 16536}
!127 = !{!98, !17, i64 680}
!128 = !{!98, !18, i64 260}
!129 = !{!13, !10, i64 16696}
!130 = !{!98, !18, i64 262}
!131 = !{!98, !6, i64 1104}
!132 = !{!98, !6, i64 1112}
!133 = !{!13, !10, i64 19304}
!134 = !{!13, !10, i64 19208}
!135 = !{!98, !10, i64 1120}
!136 = !{!137, !6, i64 136}
!137 = !{!"_ZTS13ImGuiDockNode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !138, i64 20, !6, i64 24, !7, i64 32, !30, i64 48, !6, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !139, i64 96, !42, i64 100, !10, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 200, !10, i64 200, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 202, !14, i64 202, !14, i64 202, !14, i64 202}
!138 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!139 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!140 = !{!141, !6, i64 0}
!141 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !39, i64 8, !142, i64 68}
!142 = !{!"_ZTS15ImGuiStackSizes", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16}
!143 = !{!98, !6, i64 944}
!144 = !{!98, !10, i64 304}
!145 = !{!13, !6, i64 16712}
!146 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !147, i64 16, i64 4, !147, i64 20, i64 4, !147, i64 24, i64 4, !147, i64 28, i64 4, !147, i64 32, i64 4, !147, i64 36, i64 4, !147, i64 40, i64 4, !147, i64 44, i64 4, !147, i64 48, i64 4, !147, i64 52, i64 4, !147, i64 56, i64 4, !147}
!147 = !{!17, !17, i64 0}
!148 = !{!13, !10, i64 19496}
!149 = !{!98, !6, i64 952}
!150 = !{!98, !10, i64 16}
!151 = !{!13, !10, i64 19084}
!152 = !{!98, !10, i64 1064}
!153 = !{!98, !53, i64 408}
!154 = !{!118, !10, i64 24}
!155 = !{!13, !10, i64 19196}
!156 = !{i64 0, i64 4, !147, i64 4, i64 4, !147}
!157 = !{!13, !10, i64 19200}
!158 = !{!13, !17, i64 19228}
!159 = !{!13, !17, i64 19232}
!160 = !{!98, !17, i64 104}
!161 = !{!98, !17, i64 108}
!162 = !{!13, !17, i64 19244}
!163 = !{!98, !17, i64 208}
!164 = !{!98, !17, i64 216}
!165 = !{!13, !17, i64 19248}
!166 = !{!98, !17, i64 212}
!167 = !{!98, !17, i64 220}
!168 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 1, !96, i64 25, i64 1, !96}
!169 = !{!13, !14, i64 19257}
!170 = !{!13, !10, i64 19204}
!171 = !{!98, !7, i64 281}
!172 = !{!98, !14, i64 243}
!173 = !{!98, !14, i64 253}
!174 = !{i64 0, i64 4, !147, i64 4, i64 4, !147, i64 8, i64 4, !147, i64 12, i64 4, !147}
!175 = !{!98, !6, i64 736}
!176 = !{!98, !10, i64 496}
!177 = !{!98, !14, i64 1076}
!178 = !{!98, !6, i64 64}
!179 = !{!180, !6, i64 96}
!180 = !{!"_ZTS14ImGuiViewportP", !181, i64 0, !6, i64 96, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !16, i64 120, !17, i64 128, !17, i64 132, !14, i64 136, !18, i64 138, !7, i64 140, !7, i64 152, !182, i64 168, !184, i64 232, !16, i64 264, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296, !16, i64 304, !16, i64 312}
!181 = !{!"_ZTS13ImGuiViewport", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91}
!182 = !{!"_ZTS10ImDrawData", !14, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !183, i64 16, !16, i64 32, !16, i64 40, !16, i64 48, !6, i64 56}
!183 = !{!"_ZTS8ImVectorIP10ImDrawListE", !10, i64 0, !10, i64 4, !6, i64 8}
!184 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !183, i64 16}
!185 = !{!13, !6, i64 20120}
!186 = !{!98, !6, i64 8}
!187 = !{!98, !10, i64 176}
!188 = !{!189, !189, i64 0}
!189 = !{!"long", !7, i64 0}
!190 = !{!98, !7, i64 280}
!191 = !{!98, !7, i64 282}
!192 = !{!98, !17, i64 96}
!193 = !{!98, !17, i64 100}
!194 = !{!13, !10, i64 8}
!195 = !{!181, !17, i64 40}
!196 = !{!98, !17, i64 724}
!197 = !{!24, !17, i64 48}
!198 = !{!98, !17, i64 148}
!199 = !{!24, !17, i64 56}
!200 = !{!24, !17, i64 20}
!201 = !{!24, !17, i64 12}
!202 = !{!98, !17, i64 136}
!203 = !{!24, !17, i64 76}
!204 = !{!13, !17, i64 19336}
!205 = !{!98, !17, i64 420}
!206 = !{!13, !17, i64 19340}
!207 = !{!98, !17, i64 424}
!208 = !{!13, !6, i64 16720}
!209 = !{!13, !10, i64 16792}
!210 = !{!13, !10, i64 16796}
!211 = !{!18, !18, i64 0}
!212 = !{!98, !14, i64 247}
!213 = !{!98, !14, i64 246}
!214 = !{!98, !17, i64 152}
!215 = !{!98, !17, i64 160}
!216 = !{!98, !17, i64 156}
!217 = !{!98, !17, i64 164}
!218 = !{!16, !17, i64 0}
!219 = !{!16, !17, i64 4}
!220 = !{!98, !7, i64 272}
!221 = !{!98, !7, i64 273}
!222 = !{!98, !14, i64 274}
!223 = !{!98, !10, i64 276}
!224 = !{!98, !10, i64 464}
!225 = !{!98, !17, i64 288}
!226 = !{!98, !10, i64 84}
!227 = !{!98, !14, i64 242}
!228 = !{!181, !10, i64 4}
!229 = !{!13, !10, i64 14816}
!230 = !{!98, !17, i64 144}
!231 = !{!24, !17, i64 44}
!232 = !{!24, !17, i64 52}
!233 = !{!24, !17, i64 16}
!234 = !{!13, !14, i64 102}
!235 = !{!13, !17, i64 16000}
!236 = !{!98, !7, i64 254}
!237 = !{!98, !7, i64 255}
!238 = !{!181, !14, i64 89}
!239 = !{!181, !14, i64 90}
!240 = !{!98, !14, i64 241}
!241 = !{!24, !17, i64 116}
!242 = !{!98, !14, i64 240}
!243 = !{!98, !17, i64 232}
!244 = !{!98, !17, i64 236}
!245 = !{!98, !17, i64 556}
!246 = !{!98, !17, i64 88}
!247 = !{!98, !17, i64 568}
!248 = !{!98, !17, i64 92}
!249 = !{!98, !17, i64 572}
!250 = !{!98, !17, i64 576}
!251 = !{!98, !17, i64 580}
!252 = !{!24, !17, i64 72}
!253 = !{!98, !17, i64 584}
!254 = !{!98, !17, i64 588}
!255 = !{!98, !17, i64 592}
!256 = !{!98, !17, i64 596}
!257 = !{!98, !17, i64 684}
!258 = !{!98, !17, i64 112}
!259 = !{!98, !17, i64 200}
!260 = !{!98, !17, i64 116}
!261 = !{!98, !17, i64 140}
!262 = !{!98, !17, i64 204}
!263 = !{!98, !17, i64 172}
!264 = !{!98, !17, i64 168}
!265 = !{!104, !10, i64 0}
!266 = !{!267, !10, i64 32}
!267 = !{!"_ZTS9ImDrawCmd", !26, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!268 = !{!13, !6, i64 15992}
!269 = !{!72, !6, i64 64}
!270 = !{!271, !6, i64 8}
!271 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !14, i64 24, !6, i64 32, !14, i64 40, !14, i64 41, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !16, i64 72, !16, i64 80, !45, i64 88, !272, i64 104, !273, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!272 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!273 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!274 = !{!104, !10, i64 32}
!275 = !{!13, !6, i64 20104}
!276 = !{!13, !6, i64 19624}
!277 = !{!98, !6, i64 984}
!278 = !{!98, !17, i64 128}
!279 = !{!98, !17, i64 132}
!280 = !{!98, !17, i64 192}
!281 = !{!98, !17, i64 600}
!282 = !{!98, !17, i64 196}
!283 = !{!98, !17, i64 604}
!284 = !{!98, !17, i64 608}
!285 = !{!98, !17, i64 612}
!286 = !{!98, !17, i64 648}
!287 = !{!98, !17, i64 652}
!288 = !{!98, !17, i64 656}
!289 = !{!98, !17, i64 660}
!290 = !{!98, !17, i64 388}
!291 = !{!98, !17, i64 396}
!292 = !{!98, !17, i64 392}
!293 = !{!28, !28, i64 0}
!294 = !{!98, !17, i64 336}
!295 = !{!98, !17, i64 340}
!296 = !{!98, !17, i64 380}
!297 = !{!98, !17, i64 376}
!298 = !{!98, !14, i64 385}
!299 = !{!98, !14, i64 384}
!300 = !{!98, !18, i64 414}
!301 = !{!98, !18, i64 412}
!302 = !{!98, !14, i64 416}
!303 = !{!98, !14, i64 417}
!304 = !{!98, !14, i64 418}
!305 = !{!98, !14, i64 419}
!306 = !{!98, !10, i64 456}
!307 = !{!98, !10, i64 460}
!308 = !{!98, !6, i64 480}
!309 = !{!98, !6, i64 488}
!310 = !{!98, !10, i64 500}
!311 = !{!98, !10, i64 504}
!312 = !{!98, !17, i64 508}
!313 = !{!98, !17, i64 512}
!314 = !{!181, !14, i64 91}
!315 = !{!13, !10, i64 25084}
!316 = !{!13, !14, i64 20136}
!317 = !{!40, !17, i64 0}
!318 = !{!40, !17, i64 4}
!319 = !{!40, !17, i64 8}
!320 = !{!40, !17, i64 12}
!321 = !{!98, !18, i64 666}
!322 = !{!98, !18, i64 664}
!323 = !{!13, !6, i64 16736}
!324 = !{!98, !6, i64 976}
!325 = !{!13, !14, i64 20160}
!326 = !{!98, !10, i64 180}
!327 = !{!13, !10, i64 19088}
!328 = !{!98, !10, i64 1124}
!329 = !{!13, !10, i64 19092}
!330 = !{!98, !14, i64 245}
!331 = !{!98, !18, i64 256}
!332 = !{!98, !10, i64 676}
!333 = !{!13, !14, i64 19700}
!334 = !{!98, !6, i64 992}
!335 = !{!13, !14, i64 25016}
!336 = !{!98, !17, i64 552}
!337 = !{!98, !17, i64 560}
!338 = !{!98, !17, i64 564}
!339 = !{!24, !17, i64 0}
!340 = !{!98, !14, i64 250}
!341 = !{!98, !7, i64 283}
!342 = !{!98, !14, i64 248}
!343 = !{!13, !14, i64 128}
!344 = !{!13, !14, i64 129}
!345 = !{!13, !7, i64 25130}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [66 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

54:                                               ; preds = %49
  %55 = getelementptr inbounds i8, ptr %45, i64 16548
  %56 = load i32, ptr %55, align 4, !tbaa !93
  %57 = getelementptr inbounds i8, ptr %45, i64 16544
  %58 = load i32, ptr %57, align 8, !tbaa !94
  %.not393 = icmp eq i32 %56, %58
  br i1 %.not393, label %59, label %60

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

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

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

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

71:                                               ; preds = %65
  tail call void @__assert_fail(ptr noundef nonnull @.str.148, ptr noundef nonnull @.str.3, i32 noundef 6767, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

72:                                               ; preds = %65
  %73 = load i32, ptr %57, align 8, !tbaa !94
  %74 = getelementptr inbounds i8, ptr %66, i64 672
  %75 = load i32, ptr %74, align 8, !tbaa !95
  %.not396 = icmp eq i32 %75, %73
  %76 = getelementptr inbounds i8, ptr %45, i64 16664
  %77 = load i32, ptr %76, align 8, !tbaa !110
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %82

79:                                               ; preds = %72
  %80 = getelementptr inbounds i8, ptr %45, i64 16561
  %81 = load i8, ptr %80, align 1, !tbaa !111, !range !91, !noundef !92
  br label %82

82:                                               ; preds = %79, %72
  %83 = phi i8 [ 0, %72 ], [ %81, %79 ]
  %84 = getelementptr inbounds i8, ptr %66, i64 251
  store i8 %83, ptr %84, align 1, !tbaa !112
  %85 = add nsw i32 %73, -1
  %86 = icmp slt i32 %75, %85
  %87 = and i32 %spec.select, 67108864
  %.not397 = icmp eq i32 %87, 0
  br i1 %.not397, label %102, label %88

88:                                               ; preds = %82
  %89 = getelementptr inbounds i8, ptr %45, i64 19448
  %90 = getelementptr inbounds i8, ptr %45, i64 19464
  %91 = load i32, ptr %90, align 8, !tbaa !113
  %92 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %89, i32 noundef %91)
  %93 = getelementptr inbounds i8, ptr %66, i64 268
  %94 = load i32, ptr %93, align 4, !tbaa !114
  %95 = load i32, ptr %92, align 8, !tbaa !115
  %96 = icmp ne i32 %94, %95
  %97 = getelementptr inbounds i8, ptr %92, i64 8
  %98 = load ptr, ptr %97, align 8, !tbaa !117
  %99 = icmp ne ptr %66, %98
  %100 = or i1 %96, %99
  %101 = or i1 %86, %100
  br label %102

102:                                              ; preds = %88, %82
  %.0345.in = phi i1 [ %101, %88 ], [ %86, %82 ]
  %103 = getelementptr inbounds i8, ptr %66, i64 249
  %104 = load i8, ptr %103, align 1, !tbaa !118, !range !91, !noundef !92
  %105 = trunc nuw i8 %104 to i1
  br i1 %.not396, label %132, label %106

106:                                              ; preds = %102
  tail call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef nonnull %66, i1 noundef zeroext %62, i32 noundef %spec.select)
  %107 = zext i1 %.0345.in to i8
  store i8 %107, ptr %103, align 1, !tbaa !118
  br i1 %.0345.in, label %108, label %109

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

109:                                              ; preds = %108, %106
  %110 = getelementptr inbounds i8, ptr %66, i64 20
  %111 = load i32, ptr %110, align 4, !tbaa !119
  %112 = getelementptr inbounds i8, ptr %66, i64 24
  store i32 %111, ptr %112, align 8, !tbaa !120
  store i32 %spec.select, ptr %110, align 4, !tbaa !119
  %113 = getelementptr inbounds i8, ptr %45, i64 19192
  %114 = load i32, ptr %113, align 8, !tbaa !121
  %115 = and i32 %114, 256
  %.not398 = icmp eq i32 %115, 0
  br i1 %.not398, label %119, label %116

116:                                              ; preds = %109
  %117 = getelementptr inbounds i8, ptr %45, i64 19252
  %118 = load i32, ptr %117, align 4, !tbaa !122
  br label %119

119:                                              ; preds = %109, %116
  %120 = phi i32 [ %118, %116 ], [ 0, %109 ]
  %121 = getelementptr inbounds i8, ptr %66, i64 28
  store i32 %120, ptr %121, align 4, !tbaa !123
  store i32 %73, ptr %74, align 8, !tbaa !95
  %122 = getelementptr inbounds i8, ptr %45, i64 16536
  %123 = load double, ptr %122, align 8, !tbaa !124
  %124 = fptrunc double %123 to float
  %125 = getelementptr inbounds i8, ptr %66, i64 680
  store float %124, ptr %125, align 8, !tbaa !125
  %126 = getelementptr inbounds i8, ptr %66, i64 260
  store i16 0, ptr %126, align 4, !tbaa !126
  %127 = getelementptr inbounds i8, ptr %45, i64 16696
  %128 = load i32, ptr %127, align 8, !tbaa !127
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %127, align 8, !tbaa !127
  %130 = trunc i32 %128 to i16
  %131 = getelementptr inbounds i8, ptr %66, i64 262
  store i16 %130, ptr %131, align 2, !tbaa !128
  br label %135

132:                                              ; preds = %102
  %133 = getelementptr inbounds i8, ptr %66, i64 20
  %134 = load i32, ptr %133, align 4, !tbaa !119
  br label %135

135:                                              ; preds = %132, %119
  %.1 = phi i32 [ %spec.select, %119 ], [ %134, %132 ]
  %136 = getelementptr inbounds i8, ptr %66, i64 1104
  %137 = load ptr, ptr %136, align 8, !tbaa !129
  %138 = icmp eq ptr %137, null
  br i1 %138, label %.critedge2, label %139

139:                                              ; preds = %135
  %140 = getelementptr inbounds i8, ptr %66, i64 1112
  %141 = load ptr, ptr %140, align 8, !tbaa !130
  %142 = icmp eq ptr %141, null
  br i1 %142, label %.critedge2, label %143

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

.critedge2:                                       ; preds = %135, %139
  %144 = getelementptr inbounds i8, ptr %45, i64 19192
  %145 = load i32, ptr %144, align 8, !tbaa !121
  %146 = and i32 %145, 1024
  %.not399 = icmp eq i32 %146, 0
  br i1 %.not399, label %152, label %147

147:                                              ; preds = %.critedge2
  %148 = getelementptr inbounds i8, ptr %45, i64 19304
  %149 = load i32, ptr %148, align 8, !tbaa !131
  %150 = getelementptr inbounds i8, ptr %45, i64 19208
  %151 = load i32, ptr %150, align 8, !tbaa !132
  tail call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef nonnull %66, i32 noundef %149, i32 noundef %151)
  br label %152

152:                                              ; preds = %147, %.critedge2
  br i1 %.not396, label %187, label %153

153:                                              ; preds = %152
  %154 = getelementptr inbounds i8, ptr %66, i64 1120
  %155 = load i32, ptr %154, align 8, !tbaa !133
  %.not400 = icmp eq i32 %155, 0
  br i1 %.not400, label %156, label %.thread.thread

156:                                              ; preds = %153
  %157 = load ptr, ptr %136, align 8, !tbaa !129
  %.not584 = icmp eq ptr %157, null
  br i1 %.not584, label %.thread, label %.thread.thread

.thread.thread:                                   ; preds = %156, %153
  %158 = getelementptr inbounds i8, ptr %66, i64 1077
  %159 = load i8, ptr %158, align 1
  br label %163

.thread:                                          ; preds = %156
  %160 = tail call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef nonnull %66)
  %161 = getelementptr inbounds i8, ptr %66, i64 1077
  %162 = load i8, ptr %161, align 1
  br i1 %160, label %163, label %185

163:                                              ; preds = %.thread.thread, %.thread
  %164 = phi i8 [ %159, %.thread.thread ], [ %162, %.thread ]
  %165 = phi ptr [ %158, %.thread.thread ], [ %161, %.thread ]
  tail call void @_ZN5ImGui11BeginDockedEP11ImGuiWindowPb(ptr noundef nonnull %66, ptr noundef %1)
  %166 = getelementptr inbounds i8, ptr %66, i64 20
  %167 = load i32, ptr %166, align 4, !tbaa !119
  %168 = load i8, ptr %165, align 1
  %169 = trunc i8 %168 to i1
  br i1 %169, label %170, label %176

170:                                              ; preds = %163
  %171 = load ptr, ptr %136, align 8, !tbaa !129
  %.not403 = icmp eq ptr %171, null
  br i1 %.not403, label %172, label %173

172:                                              ; preds = %170
  tail call void @__assert_fail(ptr noundef nonnull @.str.150, ptr noundef nonnull @.str.3, i32 noundef 6820, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

173:                                              ; preds = %170
  %174 = load i32, ptr %144, align 8, !tbaa !121
  %175 = and i32 %174, -17
  store i32 %175, ptr %144, align 8, !tbaa !121
  %.pre = load i8, ptr %165, align 1
  br label %176

176:                                              ; preds = %173, %163
  %177 = phi i8 [ %.pre, %173 ], [ %168, %163 ]
  %178 = and i8 %177, 4
  %.not404 = icmp eq i8 %178, 0
  %179 = and i8 %164, 6
  %180 = icmp ne i8 %179, 2
  %brmerge490 = select i1 %.not404, i1 true, i1 %180
  br i1 %brmerge490, label %187, label %181

181:                                              ; preds = %176
  %182 = load i8, ptr %103, align 1, !tbaa !118, !range !91, !noundef !92
  %183 = trunc nuw i8 %182 to i1
  %brmerge491 = select i1 %183, i1 true, i1 %105
  br i1 %brmerge491, label %187, label %184

184:                                              ; preds = %181
  store i8 1, ptr %103, align 1, !tbaa !118
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %66, i32 noundef 8, i1 noundef zeroext true)
  br label %187

185:                                              ; preds = %.thread
  %186 = and i8 %162, -8
  store i8 %186, ptr %161, align 1
  br label %187

187:                                              ; preds = %185, %184, %176, %181, %152
  %.3 = phi i32 [ %.1, %152 ], [ %167, %181 ], [ %167, %184 ], [ %167, %176 ], [ %.1, %185 ]
  %188 = getelementptr inbounds i8, ptr %66, i64 1077
  %189 = load i8, ptr %188, align 1
  %190 = trunc i8 %189 to i1
  br i1 %190, label %191, label %195

191:                                              ; preds = %187
  %192 = load ptr, ptr %136, align 8, !tbaa !129
  %193 = getelementptr inbounds i8, ptr %192, i64 136
  %194 = load ptr, ptr %193, align 8, !tbaa !134
  %.not405 = icmp eq ptr %194, null
  br i1 %.not405, label %195, label %200

195:                                              ; preds = %191, %187
  %196 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
  br i1 %196, label %200, label %197

197:                                              ; preds = %195
  %198 = tail call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %76)
  %199 = load ptr, ptr %198, align 8, !tbaa !138
  br label %200

200:                                              ; preds = %191, %197, %195
  %201 = phi ptr [ %199, %197 ], [ null, %195 ], [ %194, %191 ]
  br i1 %.not396, label %205, label %202

202:                                              ; preds = %200
  %203 = and i32 %.3, 83886080
  %.not406 = icmp eq i32 %203, 0
  %204 = select i1 %.not406, ptr null, ptr %201
  br label %208

205:                                              ; preds = %200
  %206 = getelementptr inbounds i8, ptr %66, i64 944
  %207 = load ptr, ptr %206, align 8, !tbaa !141
  br label %208

208:                                              ; preds = %205, %202
  %209 = phi ptr [ %204, %202 ], [ %207, %205 ]
  %210 = icmp eq ptr %209, null
  %211 = and i32 %.3, 16777216
  %212 = icmp ne i32 %211, 0
  %.not408 = select i1 %210, i1 %212, i1 false
  br i1 %.not408, label %213, label %214

213:                                              ; preds = %208
  tail call void @__assert_fail(ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.3, i32 noundef 6840, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

214:                                              ; preds = %208
  %215 = getelementptr inbounds i8, ptr %66, i64 304
  %216 = load i32, ptr %215, align 8, !tbaa !142
  %217 = icmp eq i32 %216, 0
  br i1 %217, label %218, label %220

218:                                              ; preds = %214
  %219 = getelementptr inbounds i8, ptr %66, i64 16
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef nonnull align 4 dereferenceable(4) %219)
  br label %220

220:                                              ; preds = %218, %214
  %221 = getelementptr inbounds i8, ptr %45, i64 16712
  store ptr %66, ptr %221, align 8, !tbaa !143
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %5) #14
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %5)
  %222 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %222, ptr %5, align 8, !tbaa !138
  %223 = getelementptr inbounds i8, ptr %45, i64 19128
  %224 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(60) %224, ptr noundef nonnull align 8 dereferenceable(60) %223, i64 60, i1 false), !tbaa.struct !144
  %225 = getelementptr inbounds i8, ptr %5, i64 68
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %225, ptr noundef nonnull %45)
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %76, ptr noundef nonnull align 8 dereferenceable(86) %5)
  %226 = and i32 %.3, 268435456
  %.not409 = icmp eq i32 %226, 0
  br i1 %.not409, label %231, label %227

227:                                              ; preds = %220
  %228 = getelementptr inbounds i8, ptr %45, i64 19496
  %229 = load i32, ptr %228, align 8, !tbaa !147
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %228, align 8, !tbaa !147
  br label %231

231:                                              ; preds = %227, %220
  %.pre600 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not396, label %235, label %232

232:                                              ; preds = %231
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre600, i32 noundef %.3, ptr noundef %209)
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %233, i64 952
  store ptr %201, ptr %234, align 8, !tbaa !148
  br label %235

235:                                              ; preds = %232, %231
  %236 = phi ptr [ %233, %232 ], [ %.pre600, %231 ]
  %237 = getelementptr inbounds i8, ptr %236, i64 16
  %238 = load i32, ptr %237, align 8, !tbaa !149
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %238)
  %239 = getelementptr inbounds i8, ptr %45, i64 19084
  %240 = load i32, ptr %239, align 4, !tbaa !150
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  %242 = getelementptr inbounds i8, ptr %241, i64 1064
  store i32 %240, ptr %242, align 8, !tbaa !151
  store ptr null, ptr %221, align 8, !tbaa !143
  %243 = and i32 %.3, 67108864
  %.not410 = icmp eq i32 %243, 0
  br i1 %.not410, label %257, label %244

244:                                              ; preds = %235
  %245 = getelementptr inbounds i8, ptr %45, i64 19448
  %246 = getelementptr inbounds i8, ptr %45, i64 19464
  %247 = load i32, ptr %246, align 8, !tbaa !113
  %248 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %245, i32 noundef %247)
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds i8, ptr %248, i64 8
  store ptr %249, ptr %250, align 8, !tbaa !117
  %251 = getelementptr inbounds i8, ptr %201, i64 408
  %252 = load i32, ptr %251, align 8, !tbaa !152
  %253 = getelementptr inbounds i8, ptr %248, i64 24
  store i32 %252, ptr %253, align 8, !tbaa !153
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %246, ptr noundef nonnull align 8 dereferenceable(52) %248)
  %254 = load i32, ptr %248, align 8, !tbaa !115
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 268
  store i32 %254, ptr %256, align 4, !tbaa !114
  br label %257

257:                                              ; preds = %244, %235
  %258 = phi ptr [ %255, %244 ], [ %241, %235 ]
  %259 = load i32, ptr %144, align 8, !tbaa !121
  %260 = and i32 %259, 1
  %.not411 = icmp eq i32 %260, 0
  br i1 %.not411, label %287, label %261

261:                                              ; preds = %257
  %262 = getelementptr inbounds i8, ptr %258, i64 284
  %263 = load i32, ptr %262, align 4
  %264 = shl i32 %263, 24
  %265 = ashr exact i32 %264, 24
  %266 = getelementptr inbounds i8, ptr %45, i64 19196
  %267 = load i32, ptr %266, align 4, !tbaa !154
  %268 = and i32 %265, %267
  %269 = icmp ne i32 %268, 0
  br i1 %269, label %270, label %283

270:                                              ; preds = %261
  %271 = getelementptr inbounds i8, ptr %45, i64 19220
  %272 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %271)
  %273 = fcmp ogt float %272, 0x3EE4F8B580000000
  %.pre601 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %273, label %274, label %._crit_edge

._crit_edge:                                      ; preds = %270
  %.pre602 = load i32, ptr %266, align 4, !tbaa !154
  br label %283

274:                                              ; preds = %270
  %275 = getelementptr inbounds i8, ptr %45, i64 19212
  %276 = getelementptr inbounds i8, ptr %.pre601, i64 288
  %277 = load i64, ptr %275, align 4
  store i64 %277, ptr %276, align 8
  %278 = getelementptr inbounds i8, ptr %.pre601, i64 296
  %279 = load i64, ptr %271, align 4
  store i64 %279, ptr %278, align 8
  %280 = getelementptr inbounds i8, ptr %.pre601, i64 284
  %281 = load i32, ptr %280, align 4
  %282 = and i32 %281, -15
  store i32 %282, ptr %280, align 4
  br label %287

283:                                              ; preds = %._crit_edge, %261
  %284 = phi i32 [ %.pre602, %._crit_edge ], [ %267, %261 ]
  %285 = phi ptr [ %.pre601, %._crit_edge ], [ %258, %261 ]
  %286 = getelementptr inbounds i8, ptr %45, i64 19212
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %285, ptr noundef nonnull align 4 dereferenceable(8) %286, i32 noundef %284)
  br label %287

287:                                              ; preds = %274, %283, %257
  %.0346.shrunk = phi i1 [ true, %274 ], [ %269, %283 ], [ false, %257 ]
  %288 = load i32, ptr %144, align 8, !tbaa !121
  %289 = and i32 %288, 2
  %.not412 = icmp eq i32 %289, 0
  br i1 %.not412, label %329, label %290

290:                                              ; preds = %287
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds i8, ptr %291, i64 284
  %293 = load i32, ptr %292, align 4
  %294 = shl i32 %293, 16
  %295 = ashr i32 %294, 24
  %296 = getelementptr inbounds i8, ptr %45, i64 19200
  %297 = load i32, ptr %296, align 8, !tbaa !155
  %298 = and i32 %295, %297
  %.not413 = icmp eq i32 %298, 0
  br i1 %.not413, label %.thread552, label %299

299:                                              ; preds = %290
  %300 = getelementptr inbounds i8, ptr %45, i64 19228
  %301 = load float, ptr %300, align 4, !tbaa !156
  %302 = fcmp ogt float %301, 0.000000e+00
  %303 = getelementptr inbounds i8, ptr %45, i64 19232
  %304 = load float, ptr %303, align 4, !tbaa !157
  %305 = fcmp ogt float %304, 0.000000e+00
  br label %.thread552

.thread552:                                       ; preds = %290, %299
  %306 = phi i1 [ %302, %299 ], [ false, %290 ]
  %307 = phi i1 [ %305, %299 ], [ false, %290 ]
  %308 = getelementptr inbounds i8, ptr %291, i64 28
  %309 = load i32, ptr %308, align 4, !tbaa !123
  %310 = and i32 %309, 4
  %.not415 = icmp ne i32 %310, 0
  %311 = and i32 %293, 1024
  %312 = icmp eq i32 %311, 0
  %or.cond578 = and i1 %312, %.not415
  br i1 %or.cond578, label %313, label %317

313:                                              ; preds = %.thread552
  %314 = getelementptr inbounds i8, ptr %291, i64 104
  %315 = load float, ptr %314, align 8, !tbaa !158
  %316 = getelementptr inbounds i8, ptr %45, i64 19228
  store float %315, ptr %316, align 4, !tbaa !156
  br label %317

317:                                              ; preds = %313, %.thread552
  %318 = and i32 %309, 8
  %.not416 = icmp eq i32 %318, 0
  br i1 %.not416, label %327, label %319

319:                                              ; preds = %317
  %320 = load i32, ptr %292, align 4
  %321 = and i32 %320, 1024
  %322 = icmp eq i32 %321, 0
  br i1 %322, label %323, label %327

323:                                              ; preds = %319
  %324 = getelementptr inbounds i8, ptr %291, i64 108
  %325 = load float, ptr %324, align 4, !tbaa !159
  %326 = getelementptr inbounds i8, ptr %45, i64 19232
  store float %325, ptr %326, align 4, !tbaa !157
  br label %327

327:                                              ; preds = %323, %319, %317
  %328 = getelementptr inbounds i8, ptr %45, i64 19228
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %291, ptr noundef nonnull align 4 dereferenceable(8) %328, i32 noundef %297)
  %.pre603 = load i32, ptr %144, align 8, !tbaa !121
  br label %329

329:                                              ; preds = %327, %287
  %330 = phi i32 [ %.pre603, %327 ], [ %288, %287 ]
  %.0348 = phi i1 [ %307, %327 ], [ false, %287 ]
  %.0347 = phi i1 [ %306, %327 ], [ false, %287 ]
  %331 = and i32 %330, 128
  %.not417 = icmp eq i32 %331, 0
  br i1 %.not417, label %348, label %332

332:                                              ; preds = %329
  %333 = getelementptr inbounds i8, ptr %45, i64 19244
  %334 = load float, ptr %333, align 4, !tbaa !160
  %335 = fcmp ult float %334, 0.000000e+00
  br i1 %335, label %340, label %336

336:                                              ; preds = %332
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 208
  store float %334, ptr %338, align 8, !tbaa !161
  %339 = getelementptr inbounds i8, ptr %337, i64 216
  store float 0.000000e+00, ptr %339, align 8, !tbaa !162
  br label %340

340:                                              ; preds = %336, %332
  %341 = getelementptr inbounds i8, ptr %45, i64 19248
  %342 = load float, ptr %341, align 4, !tbaa !163
  %343 = fcmp ult float %342, 0.000000e+00
  br i1 %343, label %348, label %344

344:                                              ; preds = %340
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds i8, ptr %345, i64 212
  store float %342, ptr %346, align 4, !tbaa !164
  %347 = getelementptr inbounds i8, ptr %345, i64 220
  store float 0.000000e+00, ptr %347, align 4, !tbaa !165
  br label %348

348:                                              ; preds = %340, %344, %329
  %349 = and i32 %330, 4
  %.not418 = icmp eq i32 %349, 0
  br i1 %.not418, label %355, label %350

350:                                              ; preds = %348
  %351 = getelementptr inbounds i8, ptr %45, i64 19236
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds i8, ptr %352, i64 128
  %354 = load i64, ptr %351, align 4
  store i64 %354, ptr %353, align 8
  br label %360

355:                                              ; preds = %348
  br i1 %.not396, label %._crit_edge654, label %356

._crit_edge654:                                   ; preds = %355
  %.pre607.pre650.pre.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %360

356:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds i8, ptr %357, i64 128
  %359 = load i64, ptr %6, align 8
  store i64 %359, ptr %358, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %360

360:                                              ; preds = %._crit_edge654, %356, %350
  %.pre607.pre650.pre = phi ptr [ %.pre607.pre650.pre.pre, %._crit_edge654 ], [ %357, %356 ], [ %352, %350 ]
  %361 = load i32, ptr %144, align 8, !tbaa !121
  %362 = and i32 %361, 2048
  %.not419 = icmp eq i32 %362, 0
  br i1 %.not419, label %366, label %363

363:                                              ; preds = %360
  %364 = getelementptr inbounds i8, ptr %45, i64 19308
  %365 = getelementptr inbounds i8, ptr %.pre607.pre650.pre, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(26) %365, ptr noundef nonnull align 4 dereferenceable(26) %364, i64 26, i1 false), !tbaa.struct !166
  %.pre604 = load i32, ptr %144, align 8, !tbaa !121
  br label %366

366:                                              ; preds = %363, %360
  %367 = phi i32 [ %.pre604, %363 ], [ %361, %360 ]
  %368 = and i32 %367, 8
  %.not420 = icmp eq i32 %368, 0
  br i1 %.not420, label %375, label %369

369:                                              ; preds = %366
  %370 = getelementptr inbounds i8, ptr %45, i64 19257
  %371 = load i8, ptr %370, align 1, !tbaa !168, !range !91, !noundef !92
  %372 = trunc nuw i8 %371 to i1
  %373 = getelementptr inbounds i8, ptr %45, i64 19204
  %374 = load i32, ptr %373, align 4, !tbaa !169
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre607.pre650.pre, i1 noundef zeroext %372, i32 noundef %374)
  %.pre605 = load i32, ptr %144, align 8, !tbaa !121
  %.pre607.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %375

375:                                              ; preds = %369, %366
  %.pre607 = phi ptr [ %.pre607.pre, %369 ], [ %.pre607.pre650.pre, %366 ]
  %376 = phi i32 [ %.pre605, %369 ], [ %367, %366 ]
  %377 = and i32 %376, 32
  %.not421 = icmp eq i32 %377, 0
  br i1 %.not421, label %379, label %378

378:                                              ; preds = %375
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre607, i32 noundef 0)
  %.pre606 = load ptr, ptr %4, align 8, !tbaa !5
  br label %379

379:                                              ; preds = %378, %375
  %380 = phi ptr [ %.pre606, %378 ], [ %.pre607, %375 ]
  %381 = getelementptr inbounds i8, ptr %380, i64 249
  %382 = load i8, ptr %381, align 1, !tbaa !118, !range !91, !noundef !92
  %383 = trunc nuw i8 %382 to i1
  br i1 %383, label %384, label %385

384:                                              ; preds = %379
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %380, i32 noundef 8, i1 noundef zeroext false)
  br label %385

385:                                              ; preds = %384, %379
  br i1 %.not396, label %1646, label %386

386:                                              ; preds = %385
  %387 = and i32 %.3, 50331648
  %388 = icmp eq i32 %387, 50331648
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds i8, ptr %389, i64 281
  %391 = load i8, ptr %390, align 1, !tbaa !170
  %392 = icmp slt i8 %391, 1
  %393 = getelementptr inbounds i8, ptr %389, i64 243
  store i8 1, ptr %393, align 1, !tbaa !171
  %394 = icmp ne ptr %1, null
  %395 = getelementptr inbounds i8, ptr %389, i64 253
  %396 = zext i1 %394 to i8
  store i8 %396, ptr %395, align 1, !tbaa !172
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #14
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds i8, ptr %397, i64 632
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %398, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !173
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %399 = getelementptr inbounds i8, ptr %397, i64 304
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %399, i32 noundef 1)
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds i8, ptr %400, i64 736
  %402 = load ptr, ptr %401, align 8, !tbaa !174
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %402)
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  %404 = getelementptr inbounds i8, ptr %403, i64 496
  store i32 -1, ptr %404, align 8, !tbaa !175
  %405 = and i32 %.3, 536870912
  %.not422 = icmp eq i32 %405, 0
  br i1 %.not422, label %412, label %406

406:                                              ; preds = %386
  %407 = getelementptr inbounds i8, ptr %403, i64 736
  %408 = load ptr, ptr %407, align 8, !tbaa !174
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(196) %408, i32 noundef 2)
  %409 = load ptr, ptr %4, align 8, !tbaa !5
  %410 = getelementptr inbounds i8, ptr %409, i64 736
  %411 = load ptr, ptr %410, align 8, !tbaa !174
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(196) %411, i32 noundef 1)
  %.pre608 = load ptr, ptr %4, align 8, !tbaa !5
  br label %412

412:                                              ; preds = %406, %386
  %413 = phi ptr [ %.pre608, %406 ], [ %403, %386 ]
  %414 = getelementptr inbounds i8, ptr %413, i64 1076
  %415 = load i8, ptr %414, align 4, !tbaa !176, !range !91, !noundef !92
  %416 = trunc nuw i8 %415 to i1
  br i1 %416, label %417, label %418

417:                                              ; preds = %412
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %413)
  %.pre609 = load ptr, ptr %4, align 8, !tbaa !5
  br label %418

418:                                              ; preds = %417, %412
  %419 = phi ptr [ %.pre609, %417 ], [ %413, %412 ]
  %420 = getelementptr inbounds i8, ptr %419, i64 64
  %421 = load ptr, ptr %420, align 8, !tbaa !177
  %.not423 = icmp eq ptr %421, null
  br i1 %.not423, label %426, label %422

422:                                              ; preds = %418
  %423 = getelementptr inbounds i8, ptr %421, i64 96
  %424 = load ptr, ptr %423, align 8, !tbaa !178
  %425 = icmp eq ptr %424, %419
  br i1 %425, label %.critedge496, label %426

426:                                              ; preds = %422, %418
  %427 = getelementptr inbounds i8, ptr %419, i64 1077
  %428 = load i8, ptr %427, align 1
  %429 = trunc i8 %428 to i1
  br i1 %429, label %.critedge496, label %430

430:                                              ; preds = %426
  %431 = getelementptr inbounds i8, ptr %45, i64 20120
  %432 = load ptr, ptr %431, align 8, !tbaa !184
  %.not424 = icmp eq ptr %432, null
  br i1 %.not424, label %.critedge494, label %433

433:                                              ; preds = %430
  %434 = getelementptr inbounds i8, ptr %419, i64 20
  %435 = load i32, ptr %434, align 4, !tbaa !119
  %436 = and i32 %435, 131072
  %437 = icmp ne i32 %436, 0
  %brmerge497 = or i1 %62, %437
  br i1 %brmerge497, label %.critedge494, label %438

.critedge496:                                     ; preds = %422, %426
  br i1 %62, label %.critedge494, label %438

438:                                              ; preds = %433, %.critedge496
  %439 = getelementptr inbounds i8, ptr %419, i64 8
  %440 = load ptr, ptr %439, align 8, !tbaa !185
  %441 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %440) #15
  %.not425 = icmp eq i32 %441, 0
  br i1 %.not425, label %.critedge494, label %442

442:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %443 = getelementptr inbounds i8, ptr %419, i64 176
  %444 = load i32, ptr %443, align 8, !tbaa !186
  %445 = sext i32 %444 to i64
  store i64 %445, ptr %9, align 8, !tbaa !187
  %446 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %440, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds i8, ptr %447, i64 8
  store ptr %446, ptr %448, align 8, !tbaa !185
  %449 = load i64, ptr %9, align 8, !tbaa !187
  %450 = trunc i64 %449 to i32
  %451 = getelementptr inbounds i8, ptr %447, i64 176
  store i32 %450, ptr %451, align 8, !tbaa !186
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %.critedge494

.critedge494:                                     ; preds = %430, %433, %442, %438, %.critedge496
  %452 = phi ptr [ %419, %430 ], [ %419, %433 ], [ %447, %442 ], [ %419, %438 ], [ %419, %.critedge496 ]
  %453 = getelementptr inbounds i8, ptr %452, i64 112
  %454 = getelementptr inbounds i8, ptr %452, i64 120
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef nonnull %452, ptr noundef nonnull %453, ptr noundef nonnull %454)
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds i8, ptr %455, i64 280
  %457 = load i8, ptr %456, align 8, !tbaa !189
  %458 = icmp sgt i8 %457, 0
  br i1 %458, label %459, label %461

459:                                              ; preds = %.critedge494
  %460 = add nsw i8 %457, -1
  store i8 %460, ptr %456, align 8, !tbaa !189
  br label %461

461:                                              ; preds = %459, %.critedge494
  %462 = getelementptr inbounds i8, ptr %455, i64 281
  %463 = load i8, ptr %462, align 1, !tbaa !170
  %464 = icmp sgt i8 %463, 0
  br i1 %464, label %465, label %467

465:                                              ; preds = %461
  %466 = add nsw i8 %463, -1
  store i8 %466, ptr %462, align 1, !tbaa !170
  br label %467

467:                                              ; preds = %465, %461
  %468 = getelementptr inbounds i8, ptr %455, i64 282
  %469 = load i8, ptr %468, align 2, !tbaa !190
  %470 = icmp sgt i8 %469, 0
  br i1 %470, label %471, label %473

471:                                              ; preds = %467
  %472 = add nsw i8 %469, -1
  store i8 %472, ptr %468, align 2, !tbaa !190
  br label %473

473:                                              ; preds = %471, %467
  %.not598 = xor i1 %62, true
  %474 = select i1 %.0347, i1 %.0348, i1 false
  %or.cond599 = select i1 %.not598, i1 true, i1 %474
  br i1 %or.cond599, label %476, label %475

475:                                              ; preds = %473
  store i8 1, ptr %462, align 1, !tbaa !170
  br label %476

476:                                              ; preds = %475, %473
  %477 = and i32 %.3, 100663296
  %.not426 = icmp ne i32 %477, 0
  %or.cond499.not = select i1 %.0345.in, i1 %.not426, i1 false
  br i1 %or.cond499.not, label %478, label %493

478:                                              ; preds = %476
  store i8 1, ptr %462, align 1, !tbaa !170
  %479 = and i32 %.3, 64
  %.not427 = icmp eq i32 %479, 0
  br i1 %.not427, label %493, label %480

480:                                              ; preds = %478
  br i1 %.0347, label %484, label %481

481:                                              ; preds = %480
  %482 = getelementptr inbounds i8, ptr %455, i64 104
  store float 0.000000e+00, ptr %482, align 8, !tbaa !158
  %483 = getelementptr inbounds i8, ptr %455, i64 96
  store float 0.000000e+00, ptr %483, align 8, !tbaa !191
  br label %484

484:                                              ; preds = %481, %480
  br i1 %.0348, label %488, label %485

485:                                              ; preds = %484
  %486 = getelementptr inbounds i8, ptr %455, i64 108
  store float 0.000000e+00, ptr %486, align 4, !tbaa !159
  %487 = getelementptr inbounds i8, ptr %455, i64 100
  store float 0.000000e+00, ptr %487, align 4, !tbaa !192
  br label %488

488:                                              ; preds = %485, %484
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %489, i64 120
  %491 = load i64, ptr %10, align 8
  store i64 %491, ptr %490, align 8
  %492 = getelementptr inbounds i8, ptr %489, i64 112
  store i64 %491, ptr %492, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %493

493:                                              ; preds = %478, %488, %476
  %494 = phi ptr [ %455, %478 ], [ %489, %488 ], [ %455, %476 ]
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef nonnull %494)
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  %496 = getelementptr inbounds i8, ptr %495, i64 64
  %497 = load ptr, ptr %496, align 8, !tbaa !177
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %495, ptr noundef %497)
  %498 = getelementptr inbounds i8, ptr %45, i64 8
  %499 = load i32, ptr %498, align 8, !tbaa !193
  %500 = and i32 %499, 32768
  %.not428 = icmp eq i32 %500, 0
  %.pre610 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not428, label %506, label %501

501:                                              ; preds = %493
  %502 = getelementptr inbounds i8, ptr %.pre610, i64 64
  %503 = load ptr, ptr %502, align 8, !tbaa !177
  %504 = getelementptr inbounds i8, ptr %503, i64 40
  %505 = load float, ptr %504, align 8, !tbaa !194
  br label %506

506:                                              ; preds = %493, %501
  %507 = phi float [ %505, %501 ], [ 1.000000e+00, %493 ]
  %508 = getelementptr inbounds i8, ptr %.pre610, i64 724
  store float %507, ptr %508, align 4, !tbaa !195
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre610)
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = getelementptr inbounds i8, ptr %509, i64 20
  %511 = load i32, ptr %510, align 4, !tbaa !119
  %512 = getelementptr inbounds i8, ptr %509, i64 1077
  %513 = load i8, ptr %512, align 1
  %514 = trunc i8 %513 to i1
  %515 = and i32 %511, 16777216
  %.not429 = icmp eq i32 %515, 0
  %or.cond500 = select i1 %514, i1 true, i1 %.not429
  br i1 %or.cond500, label %516, label %519

516:                                              ; preds = %506
  %517 = and i32 %511, 100663296
  %.not430 = icmp ne i32 %517, 0
  %518 = and i32 %511, 134217728
  %.not431 = icmp eq i32 %518, 0
  %or.cond501 = and i1 %.not430, %.not431
  %.in.v = select i1 %or.cond501, i64 14904, i64 14868
  br label %519

519:                                              ; preds = %506, %516
  %.in.v.sink = phi i64 [ %.in.v, %516 ], [ 14896, %506 ]
  %.in = getelementptr inbounds i8, ptr %45, i64 %.in.v.sink
  %520 = load float, ptr %.in, align 4, !tbaa !146
  %521 = getelementptr inbounds i8, ptr %509, i64 148
  store float %520, ptr %521, align 4
  %522 = getelementptr inbounds i8, ptr %45, i64 14856
  %523 = getelementptr inbounds i8, ptr %509, i64 136
  %524 = load i64, ptr %522, align 4
  store i64 %524, ptr %523, align 8
  %or.cond502.not = xor i1 %or.cond500, true
  %525 = and i32 %511, 67108864
  %.not433 = icmp eq i32 %525, 0
  %or.cond503 = select i1 %or.cond502.not, i1 %.not433, i1 false
  br i1 %or.cond503, label %526, label %541

526:                                              ; preds = %519
  %527 = getelementptr inbounds i8, ptr %509, i64 28
  %528 = load i32, ptr %527, align 4, !tbaa !123
  %529 = and i32 %528, 2
  %.not434 = icmp eq i32 %529, 0
  %530 = fcmp oeq float %520, 0.000000e+00
  %or.cond668 = select i1 %.not434, i1 %530, i1 false
  br i1 %or.cond668, label %531, label %541

531:                                              ; preds = %526
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #14
  %532 = and i32 %511, 1024
  %.not435 = icmp eq i32 %532, 0
  br i1 %.not435, label %536, label %533

533:                                              ; preds = %531
  %534 = getelementptr inbounds i8, ptr %45, i64 14860
  %535 = load float, ptr %534, align 4, !tbaa !196
  br label %536

536:                                              ; preds = %531, %533
  %537 = phi float [ %535, %533 ], [ 0.000000e+00, %531 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %537)
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds i8, ptr %538, i64 136
  %540 = load i64, ptr %11, align 8
  store i64 %540, ptr %539, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #14
  br label %541

541:                                              ; preds = %536, %526, %519
  %.in660.in = phi i64 [ %540, %536 ], [ %524, %526 ], [ %524, %519 ]
  %.in660 = trunc i64 %.in660.in to i32
  %542 = bitcast i32 %.in660 to float
  %543 = getelementptr inbounds i8, ptr %45, i64 14924
  %544 = load float, ptr %543, align 4, !tbaa !197
  %545 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %542, float noundef %544)
  %546 = getelementptr inbounds i8, ptr %45, i64 19336
  %547 = load float, ptr %546, align 8, !tbaa !198
  %548 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %545, float noundef %547)
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = getelementptr inbounds i8, ptr %549, i64 420
  store float %548, ptr %550, align 4, !tbaa !199
  %551 = getelementptr inbounds i8, ptr %45, i64 19340
  %552 = load float, ptr %551, align 4, !tbaa !200
  %553 = getelementptr inbounds i8, ptr %549, i64 424
  store float %552, ptr %553, align 4, !tbaa !201
  %554 = and i32 %511, 1
  %.not436 = icmp eq i32 %554, 0
  %555 = and i32 %511, 33
  %or.cond504 = icmp eq i32 %555, 0
  br i1 %or.cond504, label %556, label %595

556:                                              ; preds = %541
  %557 = getelementptr inbounds i8, ptr %549, i64 1077
  %558 = load i8, ptr %557, align 1
  %559 = trunc i8 %558 to i1
  br i1 %559, label %595, label %560

560:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #14
  %561 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %549)
  %562 = extractvalue { <2 x float>, <2 x float> } %561, 0
  store <2 x float> %562, ptr %12, align 8
  %563 = getelementptr inbounds i8, ptr %12, i64 8
  %564 = extractvalue { <2 x float>, <2 x float> } %561, 1
  store <2 x float> %564, ptr %563, align 8
  %565 = getelementptr inbounds i8, ptr %45, i64 16720
  %566 = load ptr, ptr %565, align 8, !tbaa !202
  %567 = load ptr, ptr %4, align 8, !tbaa !5
  %568 = icmp eq ptr %566, %567
  br i1 %568, label %569, label %585

569:                                              ; preds = %560
  %570 = getelementptr inbounds i8, ptr %45, i64 16792
  %571 = load i32, ptr %570, align 8, !tbaa !203
  %572 = icmp eq i32 %571, 0
  br i1 %572, label %573, label %585

573:                                              ; preds = %569
  %574 = getelementptr inbounds i8, ptr %45, i64 16796
  %575 = load i32, ptr %574, align 4, !tbaa !204
  %576 = icmp eq i32 %575, 0
  br i1 %576, label %577, label %585

577:                                              ; preds = %573
  %578 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %563, i1 noundef zeroext true)
  br i1 %578, label %579, label %._crit_edge611

._crit_edge611:                                   ; preds = %577
  %.pre612 = load ptr, ptr %4, align 8, !tbaa !5
  br label %585

579:                                              ; preds = %577
  %580 = getelementptr inbounds i8, ptr %45, i64 14466
  %581 = load i16, ptr %580, align 2, !tbaa !205
  %582 = icmp eq i16 %581, 2
  %.pre613 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %582, label %583, label %585

583:                                              ; preds = %579
  %584 = getelementptr inbounds i8, ptr %.pre613, i64 247
  store i8 1, ptr %584, align 1, !tbaa !206
  br label %585

585:                                              ; preds = %._crit_edge611, %583, %579, %573, %569, %560
  %586 = phi ptr [ %.pre612, %._crit_edge611 ], [ %.pre613, %583 ], [ %.pre613, %579 ], [ %567, %573 ], [ %567, %569 ], [ %567, %560 ]
  %587 = getelementptr inbounds i8, ptr %586, i64 247
  %588 = load i8, ptr %587, align 1, !tbaa !206, !range !91, !noundef !92
  %589 = trunc nuw i8 %588 to i1
  br i1 %589, label %590, label %594

590:                                              ; preds = %585
  %591 = getelementptr inbounds i8, ptr %586, i64 246
  %592 = load i8, ptr %591, align 2, !tbaa !207, !range !91, !noundef !92
  %593 = xor i8 %592, 1
  store i8 %593, ptr %591, align 2, !tbaa !207
  %.not585.not = icmp ne i8 %592, 0
  %spec.select505 = or i1 %.not585.not, %62
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %586)
  %.pre614.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %594

594:                                              ; preds = %590, %585
  %.pre614 = phi ptr [ %.pre614.pre, %590 ], [ %586, %585 ]
  %.1356 = phi i1 [ %spec.select505, %590 ], [ %62, %585 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #14
  br label %597

595:                                              ; preds = %556, %541
  %596 = getelementptr inbounds i8, ptr %549, i64 246
  store i8 0, ptr %596, align 2, !tbaa !207
  br label %597

597:                                              ; preds = %595, %594
  %598 = phi ptr [ %549, %595 ], [ %.pre614, %594 ]
  %.2357 = phi i1 [ %62, %595 ], [ %.1356, %594 ]
  %599 = getelementptr inbounds i8, ptr %598, i64 247
  store i8 0, ptr %599, align 1, !tbaa !206
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  %600 = getelementptr inbounds i8, ptr %598, i64 232
  %601 = load i64, ptr %600, align 8
  store i64 %601, ptr %13, align 8
  %602 = getelementptr inbounds i8, ptr %598, i64 152
  store float 0.000000e+00, ptr %602, align 8, !tbaa !208
  %603 = getelementptr inbounds i8, ptr %598, i64 160
  store float 0.000000e+00, ptr %603, align 8, !tbaa !209
  %604 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %598)
  %605 = load ptr, ptr %4, align 8, !tbaa !5
  %606 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %605)
  %607 = fadd float %604, %606
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds i8, ptr %608, i64 156
  store float %607, ptr %609, align 4, !tbaa !210
  %610 = getelementptr inbounds i8, ptr %608, i64 164
  store float 0.000000e+00, ptr %610, align 4, !tbaa !211
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %611 = load ptr, ptr %4, align 8, !tbaa !5
  %612 = getelementptr inbounds i8, ptr %611, i64 232
  %613 = load i64, ptr %14, align 8
  store i64 %613, ptr %612, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %614 = getelementptr inbounds i8, ptr %611, i64 120
  %615 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %611, ptr noundef nonnull align 4 dereferenceable(8) %614)
  store <2 x float> %615, ptr %15, align 8
  %616 = and i32 %511, 64
  %.not438.not = icmp eq i32 %616, 0
  %617 = extractelement <2 x float> %615, i64 0
  %618 = extractelement <2 x float> %615, i64 1
  %.pre615 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not438.not, label %629, label %619

619:                                              ; preds = %597
  %620 = getelementptr inbounds i8, ptr %.pre615, i64 246
  %621 = load i8, ptr %620, align 2, !tbaa !207, !range !91, !noundef !92
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %629, label %623

623:                                              ; preds = %619
  br i1 %.0347, label %626, label %624

624:                                              ; preds = %623
  %625 = getelementptr inbounds i8, ptr %.pre615, i64 104
  store float %617, ptr %625, align 8, !tbaa !158
  br label %626

626:                                              ; preds = %624, %623
  %.0350 = phi i1 [ %62, %623 ], [ true, %624 ]
  br i1 %.0348, label %678, label %627

627:                                              ; preds = %626
  %628 = getelementptr inbounds i8, ptr %.pre615, i64 108
  store float %618, ptr %628, align 4, !tbaa !159
  br label %678

629:                                              ; preds = %619, %597
  %630 = getelementptr inbounds i8, ptr %.pre615, i64 272
  %631 = load i8, ptr %630, align 8, !tbaa !212
  %632 = icmp sgt i8 %631, 0
  br i1 %632, label %637, label %633

633:                                              ; preds = %629
  %634 = getelementptr inbounds i8, ptr %.pre615, i64 273
  %635 = load i8, ptr %634, align 1, !tbaa !213
  %636 = icmp sgt i8 %635, 0
  br i1 %636, label %.thread554, label %678

637:                                              ; preds = %629
  br i1 %.0347, label %.thread554, label %638

638:                                              ; preds = %637
  %639 = getelementptr inbounds i8, ptr %.pre615, i64 274
  %640 = load i8, ptr %639, align 2, !tbaa !214, !range !91, !noundef !92
  %641 = trunc nuw i8 %640 to i1
  br i1 %641, label %642, label %646

642:                                              ; preds = %638
  %643 = getelementptr inbounds i8, ptr %.pre615, i64 104
  %644 = load float, ptr %643, align 8, !tbaa !158
  %645 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %644, float noundef %617)
  %.pre616 = load ptr, ptr %4, align 8, !tbaa !5
  br label %646

646:                                              ; preds = %638, %642
  %647 = phi ptr [ %.pre616, %642 ], [ %.pre615, %638 ]
  %648 = phi float [ %645, %642 ], [ %617, %638 ]
  %649 = getelementptr inbounds i8, ptr %647, i64 104
  store float %648, ptr %649, align 8, !tbaa !158
  br label %.thread554

.thread554:                                       ; preds = %633, %646, %637
  %650 = phi ptr [ %.pre615, %637 ], [ %647, %646 ], [ %.pre615, %633 ]
  %.1351 = phi i1 [ %62, %637 ], [ true, %646 ], [ %62, %633 ]
  br i1 %.0348, label %672, label %651

651:                                              ; preds = %.thread554
  %652 = getelementptr inbounds i8, ptr %650, i64 273
  %653 = load i8, ptr %652, align 1, !tbaa !213
  %654 = icmp sgt i8 %653, 0
  br i1 %654, label %655, label %672

655:                                              ; preds = %651
  %656 = getelementptr inbounds i8, ptr %650, i64 274
  %657 = load i8, ptr %656, align 2, !tbaa !214, !range !91, !noundef !92
  %658 = trunc nuw i8 %657 to i1
  br i1 %658, label %659, label %665

659:                                              ; preds = %655
  %660 = getelementptr inbounds i8, ptr %650, i64 108
  %661 = load float, ptr %660, align 4, !tbaa !159
  %662 = getelementptr inbounds i8, ptr %15, i64 4
  %663 = load float, ptr %662, align 4, !tbaa !215
  %664 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %661, float noundef %663)
  %.pre617 = load ptr, ptr %4, align 8, !tbaa !5
  br label %668

665:                                              ; preds = %655
  %666 = getelementptr inbounds i8, ptr %15, i64 4
  %667 = load float, ptr %666, align 4, !tbaa !215
  br label %668

668:                                              ; preds = %665, %659
  %669 = phi ptr [ %.pre617, %659 ], [ %650, %665 ]
  %670 = phi float [ %664, %659 ], [ %667, %665 ]
  %671 = getelementptr inbounds i8, ptr %669, i64 108
  store float %670, ptr %671, align 4, !tbaa !159
  br label %672

672:                                              ; preds = %668, %651, %.thread554
  %673 = phi ptr [ %650, %.thread554 ], [ %669, %668 ], [ %650, %651 ]
  %.3358 = phi i1 [ %.2357, %.thread554 ], [ true, %668 ], [ %.2357, %651 ]
  %674 = getelementptr inbounds i8, ptr %673, i64 246
  %675 = load i8, ptr %674, align 2, !tbaa !207, !range !91, !noundef !92
  %676 = trunc nuw i8 %675 to i1
  br i1 %676, label %678, label %677

677:                                              ; preds = %672
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %673)
  %.pre618 = load ptr, ptr %4, align 8, !tbaa !5
  br label %678

678:                                              ; preds = %633, %677, %672, %626, %627
  %679 = phi ptr [ %673, %672 ], [ %.pre618, %677 ], [ %.pre615, %633 ], [ %.pre615, %626 ], [ %.pre615, %627 ]
  %.4359 = phi i1 [ %.3358, %672 ], [ %.3358, %677 ], [ %.2357, %633 ], [ %.2357, %626 ], [ true, %627 ]
  %.2352 = phi i1 [ %.1351, %672 ], [ %.1351, %677 ], [ %62, %633 ], [ %.0350, %626 ], [ %.0350, %627 ]
  %680 = getelementptr inbounds i8, ptr %679, i64 104
  %681 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %679, ptr noundef nonnull align 4 dereferenceable(8) %680)
  %682 = load ptr, ptr %4, align 8, !tbaa !5
  %683 = getelementptr inbounds i8, ptr %682, i64 104
  store <2 x float> %681, ptr %683, align 8
  %684 = getelementptr inbounds i8, ptr %682, i64 246
  %685 = load i8, ptr %684, align 2, !tbaa !207, !range !91, !noundef !92
  %686 = trunc nuw i8 %685 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #14
  %or.cond506 = select i1 %686, i1 %.not429, i1 false
  br i1 %or.cond506, label %687, label %693

687:                                              ; preds = %678
  %688 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %682)
  %689 = extractvalue { <2 x float>, <2 x float> } %688, 0
  store <2 x float> %689, ptr %16, align 8
  %690 = getelementptr inbounds i8, ptr %16, i64 8
  %691 = extractvalue { <2 x float>, <2 x float> } %688, 1
  store <2 x float> %691, ptr %690, align 8
  %692 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre619 = load ptr, ptr %4, align 8, !tbaa !5
  br label %693

693:                                              ; preds = %678, %687
  %694 = phi ptr [ %.pre619, %687 ], [ %682, %678 ]
  %.sroa.059.0 = phi <2 x float> [ %692, %687 ], [ %681, %678 ]
  %695 = getelementptr inbounds i8, ptr %694, i64 96
  store <2 x float> %.sroa.059.0, ptr %695, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #14
  br i1 %.0345.in, label %696, label %706

696:                                              ; preds = %693
  %697 = getelementptr inbounds i8, ptr %694, i64 276
  store i32 -1, ptr %697, align 4, !tbaa !216
  %698 = and i32 %511, 201326592
  %or.cond507 = icmp ne i32 %698, 67108864
  %brmerge508 = or i1 %.0346.shrunk, %or.cond507
  br i1 %brmerge508, label %706, label %699

699:                                              ; preds = %696
  %700 = getelementptr inbounds i8, ptr %45, i64 19464
  %701 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %700)
  %702 = getelementptr inbounds i8, ptr %701, i64 36
  %703 = load ptr, ptr %4, align 8, !tbaa !5
  %704 = getelementptr inbounds i8, ptr %703, i64 88
  %705 = load i64, ptr %702, align 4
  store i64 %705, ptr %704, align 8
  br label %706

706:                                              ; preds = %696, %699, %693
  %707 = phi ptr [ %694, %696 ], [ %703, %699 ], [ %694, %693 ]
  br i1 %.not429, label %722, label %708

708:                                              ; preds = %706
  br i1 %210, label %.critedge4, label %709

709:                                              ; preds = %708
  %710 = getelementptr inbounds i8, ptr %209, i64 243
  %711 = load i8, ptr %710, align 1, !tbaa !171, !range !91, !noundef !92
  %712 = trunc nuw i8 %711 to i1
  br i1 %712, label %713, label %.critedge4

.critedge4:                                       ; preds = %708, %709
  call void @__assert_fail(ptr noundef nonnull @.str.152, ptr noundef nonnull @.str.3, i32 noundef 7116, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

713:                                              ; preds = %709
  %714 = getelementptr inbounds i8, ptr %209, i64 464
  %715 = load i32, ptr %714, align 8, !tbaa !217
  %716 = trunc i32 %715 to i16
  %717 = getelementptr inbounds i8, ptr %707, i64 260
  store i16 %716, ptr %717, align 4, !tbaa !126
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %714, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not443.not = xor i1 %.not433, true
  %brmerge509 = or i1 %.0346.shrunk, %.not443.not
  %brmerge510 = select i1 %brmerge509, i1 true, i1 %388
  %.pre620 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge510, label %722, label %718

718:                                              ; preds = %713
  %719 = getelementptr inbounds i8, ptr %209, i64 320
  %720 = getelementptr inbounds i8, ptr %.pre620, i64 88
  %721 = load i64, ptr %719, align 8
  store i64 %721, ptr %720, align 8
  br label %722

722:                                              ; preds = %713, %718, %706
  %723 = phi ptr [ %.pre620, %713 ], [ %.pre620, %718 ], [ %707, %706 ]
  %724 = getelementptr inbounds i8, ptr %723, i64 288
  %725 = load float, ptr %724, align 8, !tbaa !218
  %726 = fcmp une float %725, 0x47EFFFFFE0000000
  br i1 %726, label %727, label %.critedge512

727:                                              ; preds = %722
  %728 = getelementptr inbounds i8, ptr %723, i64 281
  %729 = load i8, ptr %728, align 1, !tbaa !170
  %730 = icmp eq i8 %729, 0
  br i1 %730, label %731, label %.critedge512

731:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %732 = getelementptr inbounds i8, ptr %723, i64 96
  %733 = getelementptr inbounds i8, ptr %723, i64 296
  %734 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %732, ptr noundef nonnull align 4 dereferenceable(8) %733)
  store <2 x float> %734, ptr %18, align 8
  %735 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %724, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %735, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %723, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  %.pre621 = load ptr, ptr %4, align 8, !tbaa !5
  br label %752

.critedge512:                                     ; preds = %722, %727
  %736 = and i32 %511, 268435456
  %.not444 = icmp eq i32 %736, 0
  br i1 %.not444, label %741, label %737

737:                                              ; preds = %.critedge512
  %738 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %723)
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  %740 = getelementptr inbounds i8, ptr %739, i64 88
  store <2 x float> %738, ptr %740, align 8
  br label %752

741:                                              ; preds = %.critedge512
  %brmerge513 = or i1 %.0346.shrunk, %.not433
  %brmerge515 = select i1 %brmerge513, i1 true, i1 %392
  br i1 %brmerge515, label %746, label %742

742:                                              ; preds = %741
  %743 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %723)
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %744, i64 88
  store <2 x float> %743, ptr %745, align 8
  br label %752

746:                                              ; preds = %741
  %747 = and i32 %511, 33554432
  %.not446 = icmp eq i32 %747, 0
  %brmerge516 = or i1 %.0346.shrunk, %.not446
  %brmerge517 = select i1 %brmerge516, i1 true, i1 %388
  br i1 %brmerge517, label %752, label %748

748:                                              ; preds = %746
  %749 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %723)
  %750 = load ptr, ptr %4, align 8, !tbaa !5
  %751 = getelementptr inbounds i8, ptr %750, i64 88
  store <2 x float> %749, ptr %751, align 8
  br label %752

752:                                              ; preds = %746, %737, %748, %742, %731
  %753 = phi ptr [ %723, %746 ], [ %739, %737 ], [ %750, %748 ], [ %744, %742 ], [ %.pre621, %731 ]
  %754 = getelementptr inbounds i8, ptr %753, i64 84
  %755 = load i32, ptr %754, align 4, !tbaa !219
  %756 = icmp sgt i32 %755, -1
  br i1 %756, label %757, label %796

757:                                              ; preds = %752
  %758 = getelementptr inbounds i8, ptr %753, i64 242
  %759 = load i8, ptr %758, align 2, !tbaa !220, !range !91, !noundef !92
  %760 = trunc nuw i8 %759 to i1
  br i1 %760, label %796, label %761

761:                                              ; preds = %757
  %762 = getelementptr inbounds i8, ptr %753, i64 64
  %763 = load ptr, ptr %762, align 8, !tbaa !177
  %764 = getelementptr inbounds i8, ptr %763, i64 4
  %765 = load i32, ptr %764, align 4, !tbaa !221
  %766 = and i32 %765, 4096
  %.not447 = icmp eq i32 %766, 0
  br i1 %.not447, label %767, label %796

767:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #14
  %768 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %763)
  %769 = extractvalue { <2 x float>, <2 x float> } %768, 0
  store <2 x float> %769, ptr %19, align 8
  %770 = getelementptr inbounds i8, ptr %19, i64 8
  %771 = extractvalue { <2 x float>, <2 x float> } %768, 1
  store <2 x float> %771, ptr %770, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #14
  %772 = load ptr, ptr %4, align 8, !tbaa !5
  %773 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %772)
  %774 = extractvalue { <2 x float>, <2 x float> } %773, 0
  store <2 x float> %774, ptr %20, align 8
  %775 = getelementptr inbounds i8, ptr %20, i64 8
  %776 = extractvalue { <2 x float>, <2 x float> } %773, 1
  store <2 x float> %776, ptr %775, align 8
  %777 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %19, ptr noundef nonnull align 4 dereferenceable(16) %20)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #14
  %.pre624 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %777, label %796, label %778

778:                                              ; preds = %767
  %779 = getelementptr inbounds i8, ptr %.pre624, i64 16
  %780 = load i32, ptr %779, align 8, !tbaa !149
  %781 = getelementptr inbounds i8, ptr %.pre624, i64 88
  %782 = getelementptr inbounds i8, ptr %.pre624, i64 96
  %783 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %.pre624, i32 noundef %780, ptr noundef nonnull align 4 dereferenceable(8) %781, ptr noundef nonnull align 4 dereferenceable(8) %782, i32 noundef 32)
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds i8, ptr %784, i64 64
  store ptr %783, ptr %785, align 8, !tbaa !177
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %784, ptr noundef %783)
  %786 = load i32, ptr %498, align 8, !tbaa !193
  %787 = and i32 %786, 32768
  %.not448 = icmp eq i32 %787, 0
  %.pre622 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not448, label %793, label %788

788:                                              ; preds = %778
  %789 = getelementptr inbounds i8, ptr %.pre622, i64 64
  %790 = load ptr, ptr %789, align 8, !tbaa !177
  %791 = getelementptr inbounds i8, ptr %790, i64 40
  %792 = load float, ptr %791, align 8, !tbaa !194
  br label %793

793:                                              ; preds = %778, %788
  %794 = phi float [ %792, %788 ], [ 1.000000e+00, %778 ]
  %795 = getelementptr inbounds i8, ptr %.pre622, i64 724
  store float %794, ptr %795, align 4, !tbaa !195
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre622)
  %.pre623 = load ptr, ptr %4, align 8, !tbaa !5
  br label %796

796:                                              ; preds = %767, %793, %761, %757, %752
  %797 = phi ptr [ %.pre624, %767 ], [ %.pre623, %793 ], [ %753, %761 ], [ %753, %757 ], [ %753, %752 ]
  %798 = getelementptr inbounds i8, ptr %797, i64 242
  %799 = load i8, ptr %798, align 2, !tbaa !220, !range !91, !noundef !92
  %800 = trunc nuw i8 %799 to i1
  br i1 %800, label %801, label %802

801:                                              ; preds = %796
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef nonnull %797, ptr noundef %201)
  %.pre625 = load ptr, ptr %4, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %801, %796
  %803 = phi ptr [ %.pre625, %801 ], [ %797, %796 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #14
  %804 = getelementptr inbounds i8, ptr %803, i64 64
  %805 = load ptr, ptr %804, align 8, !tbaa !177
  %806 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %805)
  %807 = extractvalue { <2 x float>, <2 x float> } %806, 0
  store <2 x float> %807, ptr %21, align 8
  %808 = getelementptr inbounds i8, ptr %21, i64 8
  %809 = extractvalue { <2 x float>, <2 x float> } %806, 1
  store <2 x float> %809, ptr %808, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #14
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds i8, ptr %810, i64 64
  %812 = load ptr, ptr %811, align 8, !tbaa !177
  %813 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %812)
  %814 = extractvalue { <2 x float>, <2 x float> } %813, 0
  store <2 x float> %814, ptr %22, align 8
  %815 = getelementptr inbounds i8, ptr %22, i64 8
  %816 = extractvalue { <2 x float>, <2 x float> } %813, 1
  store <2 x float> %816, ptr %815, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  %817 = getelementptr inbounds i8, ptr %45, i64 15044
  %818 = getelementptr inbounds i8, ptr %45, i64 15052
  %819 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %817, ptr noundef nonnull align 4 dereferenceable(8) %818)
  store <2 x float> %819, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  %820 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %820, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #14
  %821 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %815, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %821, ptr %26, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #14
  %.not442.not = xor i1 %.not429, true
  %brmerge518 = or i1 %.0346.shrunk, %.not442.not
  br i1 %brmerge518, label %853, label %822

822:                                              ; preds = %802
  %823 = load ptr, ptr %4, align 8, !tbaa !5
  %824 = getelementptr inbounds i8, ptr %823, i64 242
  %825 = load i8, ptr %824, align 2, !tbaa !220, !range !91, !noundef !92
  %826 = trunc nuw i8 %825 to i1
  br i1 %826, label %833, label %827

827:                                              ; preds = %822
  %828 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %829 = fcmp ogt float %828, 0.000000e+00
  br i1 %829, label %830, label %._crit_edge626

._crit_edge626:                                   ; preds = %827
  %.pre627 = load ptr, ptr %4, align 8, !tbaa !5
  br label %833

830:                                              ; preds = %827
  %831 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %21)
  %832 = fcmp ogt float %831, 0.000000e+00
  %.pre628 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %832, label %.sink.split, label %833

833:                                              ; preds = %._crit_edge626, %830, %822
  %834 = phi ptr [ %.pre627, %._crit_edge626 ], [ %.pre628, %830 ], [ %823, %822 ]
  %835 = getelementptr inbounds i8, ptr %834, i64 242
  %836 = load i8, ptr %835, align 2, !tbaa !220, !range !91, !noundef !92
  %837 = trunc nuw i8 %836 to i1
  br i1 %837, label %838, label %853

838:                                              ; preds = %833
  %839 = getelementptr inbounds i8, ptr %45, i64 14816
  %840 = load i32, ptr %839, align 8, !tbaa !222
  %841 = icmp sgt i32 %840, 0
  br i1 %841, label %842, label %853

842:                                              ; preds = %838
  %843 = getelementptr inbounds i8, ptr %834, i64 64
  %844 = load ptr, ptr %843, align 8, !tbaa !177
  %845 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %844)
  %846 = getelementptr inbounds i8, ptr %845, i64 16
  %847 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %846, ptr noundef nonnull align 4 dereferenceable(8) %23)
  store <2 x float> %847, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  %848 = getelementptr inbounds i8, ptr %845, i64 24
  %849 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %846, ptr noundef nonnull align 4 dereferenceable(8) %848)
  store <2 x float> %849, ptr %27, align 8
  %850 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %23)
  %851 = getelementptr inbounds i8, ptr %24, i64 8
  store <2 x float> %850, ptr %851, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  %852 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %830, %842
  %.pre628.sink = phi ptr [ %852, %842 ], [ %.pre628, %830 ]
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %.pre628.sink, ptr noundef nonnull align 4 dereferenceable(16) %24)
  br label %853

853:                                              ; preds = %.sink.split, %802, %838, %833
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds i8, ptr %854, i64 88
  %856 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %855)
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  %858 = getelementptr inbounds i8, ptr %857, i64 88
  store <2 x float> %856, ptr %858, align 8
  %859 = getelementptr inbounds i8, ptr %857, i64 242
  %860 = load i8, ptr %859, align 2, !tbaa !220, !range !91, !noundef !92
  %861 = trunc nuw i8 %860 to i1
  br i1 %861, label %870, label %862

862:                                              ; preds = %853
  %863 = getelementptr inbounds i8, ptr %857, i64 1077
  %864 = load i8, ptr %863, align 1
  %865 = trunc i8 %864 to i1
  br i1 %865, label %870, label %866

866:                                              ; preds = %862
  %867 = and i32 %511, 201326592
  %or.cond519 = icmp eq i32 %867, 67108864
  %. = select i1 %or.cond519, i64 14900, i64 14864
  %.sink = select i1 %.not429, i64 %., i64 14892
  %868 = getelementptr inbounds i8, ptr %45, i64 %.sink
  %869 = load float, ptr %868, align 4, !tbaa !146
  br label %870

870:                                              ; preds = %853, %862, %866
  %.sink669 = phi float [ %869, %866 ], [ 0.000000e+00, %862 ], [ 0.000000e+00, %853 ]
  %871 = getelementptr inbounds i8, ptr %857, i64 144
  store float %.sink669, ptr %871, align 8, !tbaa !223
  %872 = and i32 %511, 4096
  %.not452 = icmp eq i32 %872, 0
  %or.cond520.not = select i1 %.0345.in, i1 %.not452, i1 false
  %brmerge579.not = select i1 %or.cond520.not, i1 %.not433, i1 false
  br i1 %brmerge579.not, label %873, label %878

873:                                              ; preds = %870
  %874 = getelementptr inbounds i8, ptr %857, i64 1077
  %875 = load i8, ptr %874, align 1
  %876 = trunc i8 %875 to i1
  %or.cond521 = or i1 %.not429, %876
  %877 = and i32 %511, 33554432
  %.not454 = icmp eq i32 %877, 0
  %or.cond522 = select i1 %or.cond521, i1 %.not454, i1 false
  br label %878

878:                                              ; preds = %870, %873
  %.0361 = phi i1 [ %or.cond520.not, %870 ], [ %or.cond522, %873 ]
  %879 = getelementptr inbounds i8, ptr %857, i64 1112
  %880 = load ptr, ptr %879, align 8, !tbaa !130
  %.not455 = icmp eq ptr %880, null
  br i1 %.not455, label %881, label %886

881:                                              ; preds = %878
  %882 = getelementptr inbounds i8, ptr %857, i64 1077
  %883 = load i8, ptr %882, align 1
  %884 = trunc i8 %883 to i1
  %885 = xor i1 %884, true
  br label %886

886:                                              ; preds = %881, %878
  %887 = phi i1 [ true, %878 ], [ %885, %881 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #14
  store i32 -1, ptr %28, align 4, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #14
  store i32 -1, ptr %29, align 4, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %30, i8 0, i64 16, i1 false)
  %888 = getelementptr inbounds i8, ptr %857, i64 20
  %889 = load i32, ptr %888, align 4, !tbaa !119
  %890 = and i32 %889, 16777216
  %.not456 = icmp eq i32 %890, 0
  br i1 %.not456, label %891, label %896

891:                                              ; preds = %886
  %892 = getelementptr inbounds i8, ptr %45, i64 102
  %893 = load i8, ptr %892, align 2, !tbaa !224, !range !91, !noundef !92
  %894 = trunc nuw i8 %893 to i1
  %895 = select i1 %894, i32 2, i32 1
  br label %896

896:                                              ; preds = %886, %891
  %897 = phi i32 [ %895, %891 ], [ 0, %886 ]
  %898 = getelementptr inbounds i8, ptr %45, i64 16000
  %899 = load float, ptr %898, align 8, !tbaa !225
  %900 = fmul float %899, 0x3FF19999A0000000
  %901 = fadd float %.sink669, 1.000000e+00
  %902 = call float @llvm.fmuladd.f32(float %899, float 0x3FC99999A0000000, float %901)
  %903 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %900, float noundef %902)
  %904 = fptosi float %903 to i32
  %905 = sitofp i32 %904 to float
  br i1 %887, label %906, label %916

906:                                              ; preds = %896
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds i8, ptr %907, i64 246
  %909 = load i8, ptr %908, align 2, !tbaa !207, !range !91, !noundef !92
  %910 = trunc nuw i8 %909 to i1
  br i1 %910, label %916, label %911

911:                                              ; preds = %906
  %912 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %907, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %28, ptr noundef nonnull %29, i32 noundef %897, ptr noundef nonnull %30, ptr noundef nonnull align 4 dereferenceable(16) %24)
  %.not457 = icmp eq i32 %912, 0
  br i1 %.not457, label %916, label %913

913:                                              ; preds = %911
  %914 = and i32 %912, 1
  %.not458 = icmp ne i32 %914, 0
  %spec.select523 = or i1 %.not458, %.2352
  %915 = and i32 %912, 2
  %.not459 = icmp ne i32 %915, 0
  %spec.select551 = or i1 %.not459, %.4359
  br label %916

916:                                              ; preds = %913, %911, %906, %896
  %.6 = phi i1 [ %.4359, %906 ], [ %.4359, %896 ], [ %.4359, %911 ], [ %spec.select551, %913 ]
  %.5 = phi i1 [ %.2352, %906 ], [ %.2352, %896 ], [ %.2352, %911 ], [ %spec.select523, %913 ]
  %917 = load i32, ptr %28, align 4, !tbaa !145
  %918 = trunc i32 %917 to i8
  %919 = load ptr, ptr %4, align 8, !tbaa !5
  %920 = getelementptr inbounds i8, ptr %919, i64 254
  store i8 %918, ptr %920, align 2, !tbaa !226
  %921 = load i32, ptr %29, align 4, !tbaa !145
  %922 = trunc i32 %921 to i8
  %923 = getelementptr inbounds i8, ptr %919, i64 255
  store i8 %922, ptr %923, align 1, !tbaa !227
  %924 = getelementptr inbounds i8, ptr %919, i64 242
  %925 = load i8, ptr %924, align 2, !tbaa !220, !range !91, !noundef !92
  %926 = trunc nuw i8 %925 to i1
  br i1 %926, label %927, label %954

927:                                              ; preds = %916
  %928 = getelementptr inbounds i8, ptr %919, i64 64
  %929 = load ptr, ptr %928, align 8, !tbaa !177
  %930 = getelementptr inbounds i8, ptr %929, i64 89
  %931 = load i8, ptr %930, align 1, !tbaa !228, !range !91, !noundef !92
  %932 = trunc nuw i8 %931 to i1
  br i1 %932, label %937, label %933

933:                                              ; preds = %927
  %934 = getelementptr inbounds i8, ptr %919, i64 88
  %935 = getelementptr inbounds i8, ptr %929, i64 8
  %936 = load i64, ptr %934, align 8
  store i64 %936, ptr %935, align 8
  %.pre629 = load ptr, ptr %928, align 8, !tbaa !177
  br label %937

937:                                              ; preds = %933, %927
  %938 = phi ptr [ %.pre629, %933 ], [ %929, %927 ]
  %939 = getelementptr inbounds i8, ptr %938, i64 90
  %940 = load i8, ptr %939, align 2, !tbaa !229, !range !91, !noundef !92
  %941 = trunc nuw i8 %940 to i1
  br i1 %941, label %946, label %942

942:                                              ; preds = %937
  %943 = getelementptr inbounds i8, ptr %919, i64 96
  %944 = getelementptr inbounds i8, ptr %938, i64 16
  %945 = load i64, ptr %943, align 8
  store i64 %945, ptr %944, align 8
  %.pre630 = load ptr, ptr %928, align 8, !tbaa !177
  br label %946

946:                                              ; preds = %942, %937
  %947 = phi ptr [ %.pre630, %942 ], [ %938, %937 ]
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(320) %947)
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds i8, ptr %948, i64 64
  %950 = load ptr, ptr %949, align 8, !tbaa !177
  %951 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(320) %950)
  %952 = extractvalue { <2 x float>, <2 x float> } %951, 0
  %953 = extractvalue { <2 x float>, <2 x float> } %951, 1
  store <2 x float> %952, ptr %21, align 8
  store <2 x float> %953, ptr %808, align 8
  %.pre631 = load ptr, ptr %4, align 8, !tbaa !5
  br label %954

954:                                              ; preds = %946, %916
  %955 = phi ptr [ %.pre631, %946 ], [ %919, %916 ]
  %956 = getelementptr inbounds i8, ptr %955, i64 64
  %957 = load ptr, ptr %956, align 8, !tbaa !177
  %958 = getelementptr inbounds i8, ptr %957, i64 8
  %959 = getelementptr inbounds i8, ptr %955, i64 76
  %960 = load i64, ptr %958, align 8
  store i64 %960, ptr %959, align 4
  %961 = getelementptr inbounds i8, ptr %955, i64 246
  %962 = load i8, ptr %961, align 2, !tbaa !207, !range !91, !noundef !92
  %963 = trunc nuw i8 %962 to i1
  br i1 %963, label %1065, label %964

964:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %965 = getelementptr inbounds i8, ptr %955, i64 104
  %966 = load float, ptr %965, align 8, !tbaa !158
  %967 = getelementptr inbounds i8, ptr %955, i64 108
  %968 = load float, ptr %967, align 4, !tbaa !159
  %969 = getelementptr inbounds i8, ptr %955, i64 156
  %970 = load float, ptr %969, align 4, !tbaa !210
  %971 = getelementptr inbounds i8, ptr %955, i64 164
  %972 = load float, ptr %971, align 4, !tbaa !211
  %973 = fadd float %970, %972
  %974 = fsub float %968, %973
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %966, float noundef %974)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  %975 = load ptr, ptr %4, align 8, !tbaa !5
  %976 = getelementptr inbounds i8, ptr %975, i64 568
  %977 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %976)
  store <2 x float> %977, ptr %32, align 8
  %978 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  br i1 %62, label %979, label %980

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

980:                                              ; preds = %964
  %981 = load ptr, ptr %4, align 8, !tbaa !5
  %982 = getelementptr inbounds i8, ptr %981, i64 112
  %983 = getelementptr inbounds i8, ptr %981, i64 136
  %984 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %983, float noundef 2.000000e+00)
  store <2 x float> %984, ptr %34, align 8
  %985 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %982, ptr noundef nonnull align 4 dereferenceable(8) %34)
  store <2 x float> %985, ptr %33, align 8
  br label %986

986:                                              ; preds = %980, %979
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  %987 = load float, ptr %31, align 4
  %.sroa.035.0.vec.extract = extractelement <2 x float> %978, i64 0
  %988 = select i1 %.5, float %987, float %.sroa.035.0.vec.extract
  %989 = getelementptr inbounds i8, ptr %31, i64 4
  %990 = load float, ptr %989, align 4
  %.sroa.035.4.vec.extract = extractelement <2 x float> %978, i64 1
  %991 = select i1 %.6, float %990, float %.sroa.035.4.vec.extract
  %992 = and i32 %511, 16384
  %.not460 = icmp eq i32 %992, 0
  br i1 %.not460, label %993, label %.thread555

993:                                              ; preds = %986
  %994 = getelementptr inbounds i8, ptr %33, i64 4
  %995 = load float, ptr %994, align 4, !tbaa !215
  %996 = fcmp ogt float %995, %991
  %997 = and i32 %511, 8
  %.not461 = icmp eq i32 %997, 0
  %998 = select i1 %996, i1 %.not461, i1 false
  %999 = load ptr, ptr %4, align 8, !tbaa !5
  %1000 = getelementptr inbounds i8, ptr %999, i64 241
  %1001 = zext i1 %998 to i8
  store i8 %1001, ptr %1000, align 1, !tbaa !230
  %1002 = and i32 %511, 32768
  %.not462 = icmp eq i32 %1002, 0
  br i1 %.not462, label %1008, label %.thread560

.thread555:                                       ; preds = %986
  %1003 = load ptr, ptr %4, align 8, !tbaa !5
  %1004 = getelementptr inbounds i8, ptr %1003, i64 241
  store i8 1, ptr %1004, align 1, !tbaa !230
  %1005 = and i32 %511, 32768
  %.not462556 = icmp eq i32 %1005, 0
  br i1 %.not462556, label %.thread557, label %.thread560.thread

.thread560.thread:                                ; preds = %.thread555
  %1006 = getelementptr inbounds i8, ptr %1003, i64 240
  store i8 1, ptr %1006, align 8, !tbaa !231
  br label %.thread667

.thread557:                                       ; preds = %.thread555
  %1007 = load float, ptr %33, align 8, !tbaa !232
  %.pre658 = and i32 %511, 8
  br label %1010

1008:                                             ; preds = %993
  %1009 = load float, ptr %33, align 8, !tbaa !232
  br i1 %998, label %1010, label %1016

1010:                                             ; preds = %.thread557, %1008
  %.pre656.pre-phi = phi i32 [ %.pre658, %.thread557 ], [ 0, %1008 ]
  %1011 = phi float [ %1007, %.thread557 ], [ %1009, %1008 ]
  %1012 = phi ptr [ %1003, %.thread557 ], [ %999, %1008 ]
  %1013 = phi ptr [ %1004, %.thread557 ], [ %1000, %1008 ]
  %1014 = getelementptr inbounds i8, ptr %45, i64 14964
  %1015 = load float, ptr %1014, align 4, !tbaa !233
  br label %1016

1016:                                             ; preds = %1008, %1010
  %.pre-phi = phi i32 [ %997, %1008 ], [ %.pre656.pre-phi, %1010 ]
  %1017 = phi i8 [ 0, %1008 ], [ 1, %1010 ]
  %1018 = phi float [ %1009, %1008 ], [ %1011, %1010 ]
  %1019 = phi i1 [ false, %1008 ], [ true, %1010 ]
  %1020 = phi ptr [ %999, %1008 ], [ %1012, %1010 ]
  %1021 = phi ptr [ %1000, %1008 ], [ %1013, %1010 ]
  %1022 = phi float [ 0.000000e+00, %1008 ], [ %1015, %1010 ]
  %1023 = fsub float %988, %1022
  %1024 = fcmp ogt float %1018, %1023
  %.not463 = icmp eq i32 %.pre-phi, 0
  %or.cond524 = select i1 %1024, i1 %.not463, i1 false
  br i1 %or.cond524, label %1027, label %.thread561

.thread561:                                       ; preds = %1016
  %1025 = getelementptr inbounds i8, ptr %1020, i64 240
  store i8 0, ptr %1025, align 8, !tbaa !231
  br label %1039

.thread560:                                       ; preds = %993
  %1026 = getelementptr inbounds i8, ptr %999, i64 240
  store i8 1, ptr %1026, align 8, !tbaa !231
  br i1 %998, label %.thread667, label %1031

1027:                                             ; preds = %1016
  %1028 = and i32 %511, 2048
  %.not586 = icmp eq i32 %1028, 0
  %1029 = getelementptr inbounds i8, ptr %1020, i64 240
  %.lobit = lshr exact i32 %1028, 11
  %1030 = trunc nuw nsw i32 %.lobit to i8
  store i8 %1030, ptr %1029, align 8, !tbaa !231
  %brmerge581 = or i1 %.not586, %1019
  %not..not586 = xor i1 %.not586, true
  br i1 %brmerge581, label %1039, label %._crit_edge632

._crit_edge632:                                   ; preds = %1027
  %.phi.trans.insert = getelementptr inbounds i8, ptr %33, i64 4
  %.pre633 = load float, ptr %.phi.trans.insert, align 4, !tbaa !215
  br label %1031

1031:                                             ; preds = %._crit_edge632, %.thread560
  %.pre-phi657 = phi i32 [ 0, %._crit_edge632 ], [ %997, %.thread560 ]
  %1032 = phi float [ %.pre633, %._crit_edge632 ], [ %995, %.thread560 ]
  %1033 = phi ptr [ %1021, %._crit_edge632 ], [ %1000, %.thread560 ]
  %1034 = fcmp ogt float %1032, %991
  %.not464 = icmp eq i32 %.pre-phi657, 0
  %1035 = select i1 %1034, i1 %.not464, i1 false
  %1036 = zext i1 %1035 to i8
  store i8 %1036, ptr %1033, align 1, !tbaa !230
  br label %1039

.thread667:                                       ; preds = %.thread560.thread, %.thread560
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1037 = getelementptr inbounds i8, ptr %45, i64 14964
  %1038 = load float, ptr %1037, align 4, !tbaa !233
  br label %1047

1039:                                             ; preds = %1027, %.thread561, %1031
  %1040 = phi i8 [ %1036, %1031 ], [ %1017, %1027 ], [ %1017, %.thread561 ]
  %1041 = phi i1 [ true, %1031 ], [ %not..not586, %1027 ], [ false, %.thread561 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1042 = trunc nuw i8 %1040 to i1
  br i1 %1042, label %1043, label %1046

1043:                                             ; preds = %1039
  %1044 = getelementptr inbounds i8, ptr %45, i64 14964
  %1045 = load float, ptr %1044, align 4, !tbaa !233
  br i1 %1041, label %1047, label %1051

1046:                                             ; preds = %1039
  br i1 %1041, label %1047, label %1051

1047:                                             ; preds = %.thread667, %1043, %1046
  %1048 = phi float [ %1045, %1043 ], [ 0.000000e+00, %1046 ], [ %1038, %.thread667 ]
  %1049 = getelementptr inbounds i8, ptr %45, i64 14964
  %1050 = load float, ptr %1049, align 4, !tbaa !233
  br label %1051

1051:                                             ; preds = %1043, %1046, %1047
  %1052 = phi float [ %1048, %1047 ], [ 0.000000e+00, %1046 ], [ %1045, %1043 ]
  %1053 = phi float [ %1050, %1047 ], [ 0.000000e+00, %1046 ], [ 0.000000e+00, %1043 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1052, float noundef %1053)
  %1054 = load ptr, ptr %4, align 8, !tbaa !5
  %1055 = getelementptr inbounds i8, ptr %1054, i64 232
  %1056 = load i64, ptr %35, align 8
  store i64 %1056, ptr %1055, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  %1057 = getelementptr inbounds i8, ptr %1054, i64 160
  %1058 = lshr i64 %1056, 32
  %1059 = insertelement <2 x i64> poison, i64 %1056, i64 0
  %1060 = insertelement <2 x i64> %1059, i64 %1058, i64 1
  %1061 = trunc <2 x i64> %1060 to <2 x i32>
  %1062 = bitcast <2 x i32> %1061 to <2 x float>
  %1063 = load <2 x float>, ptr %1057, align 8, !tbaa !146
  %1064 = fadd <2 x float> %1063, %1062
  store <2 x float> %1064, ptr %1057, align 8, !tbaa !146
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  br label %1065

1065:                                             ; preds = %1051, %954
  %1066 = phi ptr [ %1054, %1051 ], [ %955, %954 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  %or.cond526 = select i1 %.not442.not, i1 %.not433, i1 false
  %1067 = getelementptr inbounds i8, ptr %209, i64 632
  %spec.select527 = select i1 %388, ptr %21, ptr %1067
  %1068 = select i1 %or.cond526, ptr %spec.select527, ptr %21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %1068, i64 16, i1 false), !tbaa.struct !173
  %1069 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1066)
  %1070 = extractvalue { <2 x float>, <2 x float> } %1069, 0
  %1071 = extractvalue { <2 x float>, <2 x float> } %1069, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #14
  %1072 = load ptr, ptr %4, align 8, !tbaa !5
  %1073 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1072)
  %1074 = extractvalue { <2 x float>, <2 x float> } %1073, 0
  store <2 x float> %1074, ptr %37, align 8
  %1075 = getelementptr inbounds i8, ptr %37, i64 8
  %1076 = extractvalue { <2 x float>, <2 x float> } %1073, 1
  store <2 x float> %1076, ptr %1075, align 8
  %1077 = load ptr, ptr %4, align 8, !tbaa !5
  %1078 = getelementptr inbounds i8, ptr %1077, i64 552
  store <2 x float> %1070, ptr %1078, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1077, i64 560
  store <2 x float> %1071, ptr %.sroa.4.0..sroa_idx, align 8
  %1079 = getelementptr inbounds i8, ptr %1077, i64 1077
  %1080 = load i8, ptr %1079, align 1
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1082, label %1088

1082:                                             ; preds = %1065
  %1083 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1144) %1077)
  %1084 = load ptr, ptr %4, align 8, !tbaa !5
  %1085 = getelementptr inbounds i8, ptr %1084, i64 556
  %1086 = load float, ptr %1085, align 4, !tbaa !234
  %1087 = fadd float %1083, %1086
  store float %1087, ptr %1085, align 4, !tbaa !234
  br label %1088

1088:                                             ; preds = %1082, %1065
  %1089 = phi ptr [ %1084, %1082 ], [ %1077, %1065 ]
  %1090 = getelementptr inbounds i8, ptr %1089, i64 552
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1090, ptr noundef nonnull align 4 dereferenceable(16) %36)
  %1091 = load ptr, ptr %4, align 8
  %1092 = getelementptr inbounds i8, ptr %1091, i64 88
  %1093 = getelementptr inbounds i8, ptr %1091, i64 152
  %1094 = getelementptr inbounds i8, ptr %1091, i64 568
  %1095 = getelementptr inbounds i8, ptr %1091, i64 96
  %1096 = load <2 x float>, ptr %1092, align 8, !tbaa !146
  %1097 = load <2 x float>, ptr %1095, align 8, !tbaa !146
  %1098 = fadd <2 x float> %1096, %1097
  %1099 = load <4 x float>, ptr %1093, align 8, !tbaa !146
  %1100 = shufflevector <2 x float> %1096, <2 x float> %1098, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %1101 = fadd <4 x float> %1100, %1099
  %1102 = fsub <4 x float> %1100, %1099
  %1103 = shufflevector <4 x float> %1101, <4 x float> %1102, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %1103, ptr %1094, align 8, !tbaa !146
  %1104 = and i32 %511, 1025
  %brmerge528.not = icmp eq i32 %1104, 1
  %1105 = getelementptr inbounds i8, ptr %45, i64 14920
  %1106 = getelementptr inbounds i8, ptr %1091, i64 148
  %.in467 = select i1 %brmerge528.not, ptr %1106, ptr %1105
  %1107 = load float, ptr %.in467, align 4, !tbaa !146
  %1108 = extractelement <4 x float> %1101, i64 0
  %1109 = fadd float %1108, 5.000000e-01
  %1110 = getelementptr inbounds i8, ptr %1091, i64 136
  %1111 = load float, ptr %1110, align 8, !tbaa !235
  %1112 = fmul float %1111, 5.000000e-01
  %1113 = call noundef float @_ZL7ImTruncf(float noundef %1112)
  %1114 = load ptr, ptr %4, align 8, !tbaa !5
  %1115 = getelementptr inbounds i8, ptr %1114, i64 148
  %1116 = load float, ptr %1115, align 4, !tbaa !236
  %1117 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1113, float noundef %1116)
  %1118 = fadd float %1109, %1117
  %1119 = call noundef float @_ZL7ImFloorf(float noundef %1118)
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds i8, ptr %1120, i64 584
  store float %1119, ptr %1121, align 8, !tbaa !237
  %1122 = getelementptr inbounds i8, ptr %1120, i64 572
  %1123 = load float, ptr %1122, align 4, !tbaa !238
  %1124 = fadd float %1123, 5.000000e-01
  %1125 = fadd float %1107, %1124
  %1126 = call noundef float @_ZL7ImFloorf(float noundef %1125)
  %1127 = load ptr, ptr %4, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %1127, i64 588
  store float %1126, ptr %1128, align 4, !tbaa !239
  %1129 = getelementptr inbounds i8, ptr %1127, i64 576
  %1130 = load float, ptr %1129, align 8, !tbaa !240
  %1131 = fadd float %1130, 5.000000e-01
  %1132 = getelementptr inbounds i8, ptr %1127, i64 136
  %1133 = load float, ptr %1132, align 8, !tbaa !235
  %1134 = fmul float %1133, 5.000000e-01
  %1135 = call noundef float @_ZL7ImTruncf(float noundef %1134)
  %1136 = load ptr, ptr %4, align 8, !tbaa !5
  %1137 = getelementptr inbounds i8, ptr %1136, i64 148
  %1138 = load float, ptr %1137, align 4, !tbaa !236
  %1139 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1135, float noundef %1138)
  %1140 = fsub float %1131, %1139
  %1141 = call noundef float @_ZL7ImFloorf(float noundef %1140)
  %1142 = load ptr, ptr %4, align 8, !tbaa !5
  %1143 = getelementptr inbounds i8, ptr %1142, i64 592
  store float %1141, ptr %1143, align 8, !tbaa !241
  %1144 = getelementptr inbounds i8, ptr %1142, i64 580
  %1145 = load float, ptr %1144, align 4, !tbaa !242
  %1146 = fadd float %1145, 5.000000e-01
  %1147 = getelementptr inbounds i8, ptr %1142, i64 148
  %1148 = load float, ptr %1147, align 4, !tbaa !236
  %1149 = fsub float %1146, %1148
  %1150 = call noundef float @_ZL7ImFloorf(float noundef %1149)
  %1151 = load ptr, ptr %4, align 8, !tbaa !5
  %1152 = getelementptr inbounds i8, ptr %1151, i64 596
  store float %1150, ptr %1152, align 4, !tbaa !243
  %1153 = getelementptr inbounds i8, ptr %1151, i64 584
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1153, ptr noundef nonnull align 4 dereferenceable(16) %36)
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds i8, ptr %1154, i64 96
  %1156 = load float, ptr %1155, align 8, !tbaa !191
  %1157 = fcmp ule float %1156, 0.000000e+00
  %1158 = and i32 %511, 33554496
  %1159 = icmp ne i32 %1158, 0
  %brmerge530 = select i1 %1157, i1 true, i1 %1159
  br i1 %brmerge530, label %1162, label %1160

1160:                                             ; preds = %1088
  %1161 = fmul float %1156, 0x3FE4CCCCC0000000
  br label %1165

1162:                                             ; preds = %1088
  %1163 = load float, ptr %898, align 8, !tbaa !225
  %1164 = fmul float %1163, 1.600000e+01
  br label %1165

1165:                                             ; preds = %1162, %1160
  %.sink674 = phi float [ %1164, %1162 ], [ %1161, %1160 ]
  %1166 = call noundef float @_ZL7ImTruncf(float noundef %.sink674)
  %.sink673 = load ptr, ptr %4, align 8, !tbaa !5
  %1167 = getelementptr inbounds i8, ptr %.sink673, i64 684
  store float %1166, ptr %1167, align 4, !tbaa !244
  %1168 = getelementptr inbounds i8, ptr %.sink673, i64 112
  %1169 = load float, ptr %1168, align 8, !tbaa !245
  %1170 = getelementptr inbounds i8, ptr %.sink673, i64 136
  %1171 = load float, ptr %1170, align 8, !tbaa !235
  %1172 = call float @llvm.fmuladd.f32(float %1171, float 2.000000e+00, float %1169)
  %1173 = getelementptr inbounds i8, ptr %.sink673, i64 568
  %1174 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1173)
  %1175 = fsub float %1172, %1174
  %1176 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1175)
  %1177 = load ptr, ptr %4, align 8, !tbaa !5
  %1178 = getelementptr inbounds i8, ptr %1177, i64 200
  store float %1176, ptr %1178, align 8, !tbaa !246
  %1179 = getelementptr inbounds i8, ptr %1177, i64 116
  %1180 = load float, ptr %1179, align 4, !tbaa !247
  %1181 = getelementptr inbounds i8, ptr %1177, i64 140
  %1182 = load float, ptr %1181, align 4, !tbaa !248
  %1183 = call float @llvm.fmuladd.f32(float %1182, float 2.000000e+00, float %1180)
  %1184 = getelementptr inbounds i8, ptr %1177, i64 568
  %1185 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1184)
  %1186 = fsub float %1183, %1185
  %1187 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1186)
  %1188 = load ptr, ptr %4, align 8, !tbaa !5
  %1189 = getelementptr inbounds i8, ptr %1188, i64 204
  store float %1187, ptr %1189, align 4, !tbaa !249
  %1190 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1188)
  %1191 = load ptr, ptr %4, align 8, !tbaa !5
  %1192 = getelementptr inbounds i8, ptr %1191, i64 192
  store <2 x float> %1190, ptr %1192, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds i8, ptr %1193, i64 208
  %1195 = load i64, ptr %38, align 8
  store i64 %1195, ptr %1194, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  %1196 = getelementptr inbounds i8, ptr %1193, i64 168
  store <2 x float> zeroinitializer, ptr %1196, align 8, !tbaa !146
  %1197 = getelementptr inbounds i8, ptr %1193, i64 736
  %1198 = load ptr, ptr %1197, align 8, !tbaa !174
  %1199 = load i32, ptr %1198, align 8, !tbaa !250
  %1200 = icmp eq i32 %1199, 1
  br i1 %1200, label %1201, label %.critedge6

1201:                                             ; preds = %1165
  %1202 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1198, i32 noundef 0)
  %1203 = getelementptr inbounds i8, ptr %1202, i64 32
  %1204 = load i32, ptr %1203, align 8, !tbaa !251
  %1205 = icmp eq i32 %1204, 0
  br i1 %1205, label %1206, label %.critedge6

.critedge6:                                       ; preds = %1165, %1201
  call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.3, i32 noundef 7333, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1206:                                             ; preds = %1201
  %1207 = load ptr, ptr %4, align 8, !tbaa !5
  %1208 = getelementptr inbounds i8, ptr %1207, i64 736
  %1209 = load ptr, ptr %1208, align 8, !tbaa !174
  %1210 = getelementptr inbounds i8, ptr %45, i64 15992
  %1211 = load ptr, ptr %1210, align 8, !tbaa !253
  %1212 = getelementptr inbounds i8, ptr %1211, i64 64
  %1213 = load ptr, ptr %1212, align 8, !tbaa !254
  %1214 = getelementptr inbounds i8, ptr %1213, i64 8
  %1215 = load ptr, ptr %1214, align 8, !tbaa !255
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1209, ptr noundef %1215)
  %1216 = getelementptr inbounds i8, ptr %36, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %1216, i1 noundef zeroext false)
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds i8, ptr %1217, i64 1077
  %1219 = load i8, ptr %1218, align 1
  %1220 = trunc i8 %1219 to i1
  %1221 = and i8 %1219, 4
  %1222 = icmp eq i8 %1221, 0
  %.not590 = and i1 %1222, %1220
  br i1 %.not590, label %1288, label %1223

1223:                                             ; preds = %1206
  %or.cond532.not = xor i1 %or.cond526, true
  %brmerge533 = select i1 %or.cond532.not, i1 true, i1 %388
  br i1 %brmerge533, label %.thread565, label %1224

1224:                                             ; preds = %1223
  %1225 = getelementptr inbounds i8, ptr %209, i64 464
  %1226 = load i32, ptr %1225, align 8, !tbaa !217
  %1227 = icmp sgt i32 %1226, 1
  br i1 %1227, label %1228, label %.thread562

.thread562:                                       ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #14
  br label %1243

1228:                                             ; preds = %1224
  %1229 = add nsw i32 %1226, -2
  %1230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1225, i32 noundef %1229)
  %1231 = load ptr, ptr %1230, align 8, !tbaa !5
  %.not470 = icmp eq ptr %1231, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #14
  br i1 %.not470, label %1243, label %1232

1232:                                             ; preds = %1228
  %1233 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1231)
  %1234 = extractvalue { <2 x float>, <2 x float> } %1233, 0
  store <2 x float> %1234, ptr %39, align 8
  %1235 = getelementptr inbounds i8, ptr %39, i64 8
  %1236 = extractvalue { <2 x float>, <2 x float> } %1233, 1
  store <2 x float> %1236, ptr %1235, align 8
  %1237 = load ptr, ptr %4, align 8, !tbaa !5
  %1238 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1144) %1237)
  %1239 = extractvalue { <2 x float>, <2 x float> } %1238, 0
  store <2 x float> %1239, ptr %40, align 8
  %1240 = getelementptr inbounds i8, ptr %40, i64 8
  %1241 = extractvalue { <2 x float>, <2 x float> } %1238, 1
  store <2 x float> %1241, ptr %1240, align 8
  %1242 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %40)
  br label %1243

1243:                                             ; preds = %.thread562, %1228, %1232
  %1244 = phi i1 [ %1242, %1232 ], [ false, %1228 ], [ false, %.thread562 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  %1245 = getelementptr inbounds i8, ptr %209, i64 736
  %1246 = load ptr, ptr %1245, align 8, !tbaa !174
  %1247 = getelementptr inbounds i8, ptr %1246, i64 32
  %1248 = load i32, ptr %1247, align 8, !tbaa !259
  %1249 = load ptr, ptr %4, align 8, !tbaa !5
  %1250 = getelementptr inbounds i8, ptr %1249, i64 736
  %1251 = load ptr, ptr %1250, align 8, !tbaa !174
  %1252 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1251)
  %1253 = getelementptr inbounds i8, ptr %1252, i64 32
  %1254 = load i32, ptr %1253, align 8, !tbaa !251
  %1255 = icmp ne i32 %1254, 0
  %1256 = icmp eq i32 %1248, 0
  %or.cond534.not593.not596 = select i1 %1255, i1 true, i1 %1256
  %or.cond583.not = or i1 %1244, %or.cond534.not593.not596
  br i1 %or.cond583.not, label %.thread565, label %1257

1257:                                             ; preds = %1243
  %1258 = load ptr, ptr %1245, align 8, !tbaa !174
  %1259 = load ptr, ptr %4, align 8, !tbaa !5
  %1260 = getelementptr inbounds i8, ptr %1259, i64 736
  store ptr %1258, ptr %1260, align 8, !tbaa !174
  br label %.thread565

.thread565:                                       ; preds = %1243, %1223, %1257
  %.1363567 = phi i1 [ true, %1257 ], [ false, %1223 ], [ false, %1243 ]
  %1261 = getelementptr inbounds i8, ptr %45, i64 20104
  %1262 = load ptr, ptr %1261, align 8, !tbaa !260
  %.not471 = icmp eq ptr %1262, null
  br i1 %.not471, label %1263, label %1266

1263:                                             ; preds = %.thread565
  %1264 = getelementptr inbounds i8, ptr %45, i64 19624
  %1265 = load ptr, ptr %1264, align 8, !tbaa !261
  br label %1266

1266:                                             ; preds = %.thread565, %1263
  %1267 = phi ptr [ %1265, %1263 ], [ %1262, %.thread565 ]
  br i1 %.0361, label %._crit_edge634, label %1268

._crit_edge634:                                   ; preds = %1266
  %.pre635 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1282

1268:                                             ; preds = %1266
  %.not472 = icmp eq ptr %1267, null
  %.pre636 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not472, label %1282, label %1269

1269:                                             ; preds = %1268
  %1270 = getelementptr inbounds i8, ptr %.pre636, i64 984
  %1271 = load ptr, ptr %1270, align 8, !tbaa !262
  %1272 = getelementptr inbounds i8, ptr %1267, i64 984
  %1273 = load ptr, ptr %1272, align 8, !tbaa !262
  %1274 = icmp eq ptr %1271, %1273
  br i1 %1274, label %1282, label %1275

1275:                                             ; preds = %1269
  %1276 = getelementptr inbounds i8, ptr %.pre636, i64 1104
  %1277 = load ptr, ptr %1276, align 8, !tbaa !129
  %.not473 = icmp eq ptr %1277, null
  br i1 %.not473, label %1282, label %1278

1278:                                             ; preds = %1275
  %1279 = getelementptr inbounds i8, ptr %1267, i64 1104
  %1280 = load ptr, ptr %1279, align 8, !tbaa !129
  %1281 = icmp eq ptr %1277, %1280
  br label %1282

1282:                                             ; preds = %._crit_edge634, %1268, %1275, %1278, %1269
  %1283 = phi ptr [ %.pre635, %._crit_edge634 ], [ %.pre636, %1268 ], [ %.pre636, %1269 ], [ %.pre636, %1275 ], [ %.pre636, %1278 ]
  %1284 = phi i1 [ true, %._crit_edge634 ], [ false, %1268 ], [ true, %1269 ], [ false, %1275 ], [ %1281, %1278 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1283, ptr noundef nonnull align 4 dereferenceable(16) %37, i1 noundef zeroext %1284, i1 noundef zeroext %887, i32 noundef %897, ptr noundef nonnull %30, float noundef %905)
  %.pre637 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1363567, label %1285, label %1288

1285:                                             ; preds = %1282
  %1286 = getelementptr inbounds i8, ptr %.pre637, i64 744
  %1287 = getelementptr inbounds i8, ptr %.pre637, i64 736
  store ptr %1286, ptr %1287, align 8, !tbaa !174
  br label %1288

1288:                                             ; preds = %1282, %1285, %1206
  %1289 = phi ptr [ %.pre637, %1282 ], [ %.pre637, %1285 ], [ %1217, %1206 ]
  %1290 = and i32 %511, 8
  %.not474 = icmp eq i32 %1290, 0
  %1291 = getelementptr inbounds i8, ptr %1289, i64 128
  %1292 = load float, ptr %1291, align 8, !tbaa !263
  %1293 = fcmp une float %1292, 0.000000e+00
  br i1 %1293, label %1315, label %1294

1294:                                             ; preds = %1288
  %1295 = and i32 %511, 2056
  %1296 = icmp eq i32 %1295, 2048
  br i1 %1296, label %1297, label %1300

1297:                                             ; preds = %1294
  %1298 = getelementptr inbounds i8, ptr %1289, i64 112
  %1299 = load float, ptr %1298, align 8, !tbaa !245
  br label %1300

1300:                                             ; preds = %1294, %1297
  %1301 = phi float [ %1299, %1297 ], [ 0.000000e+00, %1294 ]
  %1302 = getelementptr inbounds i8, ptr %1289, i64 96
  %1303 = load float, ptr %1302, align 8, !tbaa !191
  %1304 = getelementptr inbounds i8, ptr %1289, i64 136
  %1305 = load float, ptr %1304, align 8, !tbaa !235
  %1306 = fneg float %1305
  %1307 = call float @llvm.fmuladd.f32(float %1306, float 2.000000e+00, float %1303)
  %1308 = getelementptr inbounds i8, ptr %1289, i64 152
  %1309 = load float, ptr %1308, align 8, !tbaa !208
  %1310 = getelementptr inbounds i8, ptr %1289, i64 160
  %1311 = load float, ptr %1310, align 8, !tbaa !209
  %1312 = fadd float %1309, %1311
  %1313 = fsub float %1307, %1312
  %1314 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1301, float noundef %1313)
  %.pre638 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1315

1315:                                             ; preds = %1288, %1300
  %1316 = phi ptr [ %.pre638, %1300 ], [ %1289, %1288 ]
  %1317 = phi float [ %1314, %1300 ], [ %1292, %1288 ]
  %1318 = getelementptr inbounds i8, ptr %1316, i64 132
  %1319 = load float, ptr %1318, align 4, !tbaa !264
  %1320 = fcmp une float %1319, 0.000000e+00
  br i1 %1320, label %1340, label %1321

1321:                                             ; preds = %1315
  br i1 %.not474, label %1322, label %1325

1322:                                             ; preds = %1321
  %1323 = getelementptr inbounds i8, ptr %1316, i64 116
  %1324 = load float, ptr %1323, align 4, !tbaa !247
  br label %1325

1325:                                             ; preds = %1321, %1322
  %1326 = phi float [ %1324, %1322 ], [ 0.000000e+00, %1321 ]
  %1327 = getelementptr inbounds i8, ptr %1316, i64 100
  %1328 = load float, ptr %1327, align 4, !tbaa !192
  %1329 = getelementptr inbounds i8, ptr %1316, i64 140
  %1330 = load float, ptr %1329, align 4, !tbaa !248
  %1331 = fneg float %1330
  %1332 = call float @llvm.fmuladd.f32(float %1331, float 2.000000e+00, float %1328)
  %1333 = getelementptr inbounds i8, ptr %1316, i64 156
  %1334 = load float, ptr %1333, align 4, !tbaa !210
  %1335 = getelementptr inbounds i8, ptr %1316, i64 164
  %1336 = load float, ptr %1335, align 4, !tbaa !211
  %1337 = fadd float %1334, %1336
  %1338 = fsub float %1332, %1337
  %1339 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1326, float noundef %1338)
  %.pre639 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1340

1340:                                             ; preds = %1315, %1325
  %1341 = phi ptr [ %.pre639, %1325 ], [ %1316, %1315 ]
  %1342 = phi float [ %1339, %1325 ], [ %1319, %1315 ]
  %1343 = getelementptr inbounds i8, ptr %1341, i64 568
  %1344 = load float, ptr %1343, align 8, !tbaa !265
  %1345 = getelementptr inbounds i8, ptr %1341, i64 192
  %1346 = load float, ptr %1345, align 8, !tbaa !266
  %1347 = fsub float %1344, %1346
  %1348 = getelementptr inbounds i8, ptr %1341, i64 136
  %1349 = load float, ptr %1348, align 8, !tbaa !235
  %1350 = getelementptr inbounds i8, ptr %1341, i64 148
  %1351 = load float, ptr %1350, align 4, !tbaa !236
  %1352 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1349, float noundef %1351)
  %1353 = fadd float %1347, %1352
  %1354 = call noundef float @_ZL7ImTruncf(float noundef %1353)
  %1355 = load ptr, ptr %4, align 8, !tbaa !5
  %1356 = getelementptr inbounds i8, ptr %1355, i64 600
  store float %1354, ptr %1356, align 8, !tbaa !267
  %1357 = getelementptr inbounds i8, ptr %1355, i64 572
  %1358 = load float, ptr %1357, align 4, !tbaa !238
  %1359 = getelementptr inbounds i8, ptr %1355, i64 196
  %1360 = load float, ptr %1359, align 4, !tbaa !268
  %1361 = fsub float %1358, %1360
  %1362 = getelementptr inbounds i8, ptr %1355, i64 140
  %1363 = load float, ptr %1362, align 4, !tbaa !248
  %1364 = getelementptr inbounds i8, ptr %1355, i64 148
  %1365 = load float, ptr %1364, align 4, !tbaa !236
  %1366 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1363, float noundef %1365)
  %1367 = fadd float %1361, %1366
  %1368 = call noundef float @_ZL7ImTruncf(float noundef %1367)
  %1369 = load ptr, ptr %4, align 8, !tbaa !5
  %1370 = getelementptr inbounds i8, ptr %1369, i64 604
  store float %1368, ptr %1370, align 4, !tbaa !269
  %1371 = getelementptr inbounds i8, ptr %1369, i64 600
  %1372 = load float, ptr %1371, align 8, !tbaa !267
  %1373 = getelementptr inbounds i8, ptr %1369, i64 608
  %1374 = insertelement <2 x float> poison, float %1317, i64 0
  %1375 = insertelement <2 x float> %1374, float %1342, i64 1
  %1376 = insertelement <2 x float> poison, float %1372, i64 0
  %1377 = insertelement <2 x float> %1376, float %1368, i64 1
  %1378 = fadd <2 x float> %1375, %1377
  store <2 x float> %1378, ptr %1373, align 8, !tbaa !146
  %1379 = getelementptr inbounds i8, ptr %1369, i64 616
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1379, ptr noundef nonnull align 8 dereferenceable(16) %1371, i64 16, i1 false), !tbaa.struct !173
  %1380 = getelementptr inbounds i8, ptr %1369, i64 88
  %1381 = getelementptr inbounds i8, ptr %1369, i64 192
  %1382 = getelementptr inbounds i8, ptr %1369, i64 136
  %1383 = getelementptr inbounds i8, ptr %1369, i64 152
  %1384 = getelementptr inbounds i8, ptr %1369, i64 648
  %1385 = load <2 x float>, ptr %1380, align 8, !tbaa !146
  %1386 = load <2 x float>, ptr %1381, align 8, !tbaa !146
  %1387 = fsub <2 x float> %1385, %1386
  %1388 = load <2 x float>, ptr %1382, align 8, !tbaa !146
  %1389 = fadd <2 x float> %1387, %1388
  %1390 = load <2 x float>, ptr %1383, align 8, !tbaa !146
  %1391 = fadd <2 x float> %1389, %1390
  store <2 x float> %1391, ptr %1384, align 8, !tbaa !146
  %1392 = getelementptr inbounds i8, ptr %1369, i64 128
  %1393 = load float, ptr %1392, align 8, !tbaa !263
  %1394 = fcmp une float %1393, 0.000000e+00
  br i1 %1394, label %1406, label %1395

1395:                                             ; preds = %1340
  %1396 = getelementptr inbounds i8, ptr %1369, i64 96
  %1397 = load float, ptr %1396, align 8, !tbaa !191
  %1398 = extractelement <2 x float> %1388, i64 0
  %1399 = fneg float %1398
  %1400 = call float @llvm.fmuladd.f32(float %1399, float 2.000000e+00, float %1397)
  %1401 = getelementptr inbounds i8, ptr %1369, i64 160
  %1402 = load float, ptr %1401, align 8, !tbaa !209
  %1403 = extractelement <2 x float> %1390, i64 0
  %1404 = fadd float %1403, %1402
  %1405 = fsub float %1400, %1404
  br label %1406

1406:                                             ; preds = %1340, %1395
  %1407 = phi float [ %1405, %1395 ], [ %1393, %1340 ]
  %1408 = extractelement <2 x float> %1391, i64 0
  %1409 = fadd float %1408, %1407
  %1410 = getelementptr inbounds i8, ptr %1369, i64 656
  store float %1409, ptr %1410, align 8, !tbaa !270
  %1411 = getelementptr inbounds i8, ptr %1369, i64 132
  %1412 = load float, ptr %1411, align 4, !tbaa !264
  %1413 = fcmp une float %1412, 0.000000e+00
  br i1 %1413, label %1425, label %1414

1414:                                             ; preds = %1406
  %1415 = getelementptr inbounds i8, ptr %1369, i64 100
  %1416 = load float, ptr %1415, align 4, !tbaa !192
  %1417 = extractelement <2 x float> %1388, i64 1
  %1418 = fneg float %1417
  %1419 = call float @llvm.fmuladd.f32(float %1418, float 2.000000e+00, float %1416)
  %1420 = getelementptr inbounds i8, ptr %1369, i64 164
  %1421 = load float, ptr %1420, align 4, !tbaa !211
  %1422 = extractelement <2 x float> %1390, i64 1
  %1423 = fadd float %1422, %1421
  %1424 = fsub float %1419, %1423
  br label %1425

1425:                                             ; preds = %1406, %1414
  %1426 = phi float [ %1424, %1414 ], [ %1412, %1406 ]
  %1427 = extractelement <2 x float> %1391, i64 1
  %1428 = fadd float %1427, %1426
  %1429 = getelementptr inbounds i8, ptr %1369, i64 660
  store float %1428, ptr %1429, align 4, !tbaa !271
  %1430 = extractelement <2 x float> %1388, i64 0
  %1431 = extractelement <2 x float> %1390, i64 0
  %1432 = fadd <2 x float> %1388, %1390
  %1433 = extractelement <2 x float> %1386, i64 0
  %1434 = fsub <2 x float> %1432, %1386
  %1435 = extractelement <2 x float> %1434, i64 0
  %1436 = getelementptr inbounds i8, ptr %1369, i64 388
  store float %1435, ptr %1436, align 4, !tbaa !272
  %1437 = getelementptr inbounds i8, ptr %1369, i64 392
  store <2 x float> zeroinitializer, ptr %1437, align 8, !tbaa !146
  %1438 = extractelement <2 x float> %1385, i64 0
  %1439 = fpext float %1438 to double
  %1440 = fpext float %1430 to double
  %1441 = fadd double %1439, %1440
  %1442 = fpext float %1433 to double
  %1443 = fsub double %1441, %1442
  %1444 = fpext float %1431 to double
  %1445 = fadd double %1443, %1444
  %1446 = fadd double %1445, 0.000000e+00
  %1447 = extractelement <2 x float> %1385, i64 1
  %1448 = fpext float %1447 to double
  %1449 = extractelement <2 x float> %1388, i64 1
  %1450 = fpext float %1449 to double
  %1451 = fadd double %1448, %1450
  %1452 = extractelement <2 x float> %1386, i64 1
  %1453 = fpext float %1452 to double
  %1454 = fsub double %1451, %1453
  %1455 = extractelement <2 x float> %1390, i64 1
  %1456 = fpext float %1455 to double
  %1457 = fadd double %1454, %1456
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  %1458 = fptrunc double %1446 to float
  %1459 = fptrunc double %1457 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %1458, float noundef %1459)
  %1460 = load ptr, ptr %4, align 8, !tbaa !5
  %1461 = getelementptr inbounds i8, ptr %1460, i64 336
  %1462 = load i64, ptr %41, align 8
  store i64 %1462, ptr %1461, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  %1463 = trunc i64 %1462 to i32
  %1464 = bitcast i32 %1463 to float
  %1465 = fpext float %1464 to double
  %1466 = fsub double %1446, %1465
  %1467 = fptrunc double %1466 to float
  %1468 = lshr i64 %1462, 32
  %1469 = trunc nuw i64 %1468 to i32
  %1470 = bitcast i32 %1469 to float
  %1471 = fpext float %1470 to double
  %1472 = fsub double %1457, %1471
  %1473 = fptrunc double %1472 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef %1467, float noundef %1473)
  %1474 = load ptr, ptr %4, align 8, !tbaa !5
  %1475 = getelementptr inbounds i8, ptr %1474, i64 400
  %1476 = load i64, ptr %42, align 8
  store i64 %1476, ptr %1475, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #14
  %1477 = getelementptr inbounds i8, ptr %1474, i64 320
  %1478 = getelementptr inbounds i8, ptr %1474, i64 336
  %1479 = load i64, ptr %1478, align 8
  store i64 %1479, ptr %1477, align 8
  %1480 = getelementptr inbounds i8, ptr %1474, i64 328
  store i64 %1479, ptr %1480, align 8
  %1481 = getelementptr inbounds i8, ptr %1474, i64 344
  store i64 %1479, ptr %1481, align 8
  %1482 = getelementptr inbounds i8, ptr %1474, i64 352
  store i64 %1479, ptr %1482, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1483 = load ptr, ptr %4, align 8, !tbaa !5
  %1484 = getelementptr inbounds i8, ptr %1483, i64 368
  %1485 = load i64, ptr %43, align 8
  store i64 %1485, ptr %1484, align 8
  %1486 = getelementptr inbounds i8, ptr %1483, i64 360
  store i64 %1485, ptr %1486, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #14
  %1487 = getelementptr inbounds i8, ptr %1483, i64 376
  %1488 = getelementptr inbounds i8, ptr %1483, i64 408
  store i32 0, ptr %1488, align 8, !tbaa !152
  %1489 = getelementptr inbounds i8, ptr %1483, i64 414
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1487, i8 0, i64 10, i1 false)
  %1490 = load i16, ptr %1489, align 2, !tbaa !273
  %1491 = getelementptr inbounds i8, ptr %1483, i64 412
  store i16 %1490, ptr %1491, align 4, !tbaa !274
  store i16 0, ptr %1489, align 2, !tbaa !273
  %1492 = getelementptr inbounds i8, ptr %1483, i64 416
  store i8 1, ptr %1492, align 8, !tbaa !275
  %1493 = getelementptr inbounds i8, ptr %1483, i64 417
  store i8 0, ptr %1493, align 1, !tbaa !276
  %1494 = getelementptr inbounds i8, ptr %1483, i64 204
  %1495 = load float, ptr %1494, align 4, !tbaa !249
  %1496 = fcmp ogt float %1495, 0.000000e+00
  %1497 = getelementptr inbounds i8, ptr %1483, i64 418
  %1498 = zext i1 %1496 to i8
  store i8 %1498, ptr %1497, align 2, !tbaa !277
  %1499 = getelementptr inbounds i8, ptr %1483, i64 419
  store i8 0, ptr %1499, align 1, !tbaa !278
  %1500 = getelementptr inbounds i8, ptr %1483, i64 428
  %1501 = load float, ptr %543, align 4, !tbaa !197
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1500, float noundef %1501, i1 noundef zeroext %.0345.in)
  %1502 = load ptr, ptr %4, align 8, !tbaa !5
  %1503 = getelementptr inbounds i8, ptr %1502, i64 456
  store i32 0, ptr %1503, align 8, !tbaa !279
  %1504 = getelementptr inbounds i8, ptr %1502, i64 460
  store i32 0, ptr %1504, align 4, !tbaa !280
  %1505 = getelementptr inbounds i8, ptr %1502, i64 464
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1505, i32 noundef 0)
  %1506 = load ptr, ptr %4, align 8, !tbaa !5
  %1507 = getelementptr inbounds i8, ptr %1506, i64 688
  %1508 = getelementptr inbounds i8, ptr %1506, i64 480
  store ptr %1507, ptr %1508, align 8, !tbaa !281
  %1509 = getelementptr inbounds i8, ptr %1506, i64 488
  store ptr null, ptr %1509, align 8, !tbaa !282
  %1510 = getelementptr inbounds i8, ptr %1506, i64 500
  store i32 1, ptr %1510, align 4, !tbaa !283
  br i1 %210, label %1514, label %1511

1511:                                             ; preds = %1425
  %1512 = getelementptr inbounds i8, ptr %209, i64 500
  %1513 = load i32, ptr %1512, align 4, !tbaa !283
  br label %1514

1514:                                             ; preds = %1425, %1511
  %1515 = phi i32 [ %1513, %1511 ], [ 1, %1425 ]
  %1516 = getelementptr inbounds i8, ptr %1506, i64 504
  store i32 %1515, ptr %1516, align 8, !tbaa !284
  %1517 = getelementptr inbounds i8, ptr %1506, i64 684
  %1518 = load float, ptr %1517, align 4, !tbaa !244
  %1519 = getelementptr inbounds i8, ptr %1506, i64 508
  store float %1518, ptr %1519, align 4, !tbaa !285
  %1520 = getelementptr inbounds i8, ptr %1506, i64 512
  store float -1.000000e+00, ptr %1520, align 8, !tbaa !286
  %1521 = getelementptr inbounds i8, ptr %1506, i64 520
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1521, i32 noundef 0)
  %1522 = load ptr, ptr %4, align 8, !tbaa !5
  %1523 = getelementptr inbounds i8, ptr %1522, i64 536
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1523, i32 noundef 0)
  %1524 = load ptr, ptr %4, align 8, !tbaa !5
  %1525 = getelementptr inbounds i8, ptr %1524, i64 272
  %1526 = load i8, ptr %1525, align 8, !tbaa !212
  %1527 = icmp sgt i8 %1526, 0
  br i1 %1527, label %1528, label %1530

1528:                                             ; preds = %1514
  %1529 = add nsw i8 %1526, -1
  store i8 %1529, ptr %1525, align 8, !tbaa !212
  br label %1530

1530:                                             ; preds = %1528, %1514
  %1531 = getelementptr inbounds i8, ptr %1524, i64 273
  %1532 = load i8, ptr %1531, align 1, !tbaa !213
  %1533 = icmp sgt i8 %1532, 0
  br i1 %1533, label %1534, label %1536

1534:                                             ; preds = %1530
  %1535 = add nsw i8 %1532, -1
  store i8 %1535, ptr %1531, align 1, !tbaa !213
  br label %1536

1536:                                             ; preds = %1534, %1530
  br i1 %.0361, label %1537, label %.critedge537

1537:                                             ; preds = %1536
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1524, i32 noundef 2)
  %1538 = load ptr, ptr %4, align 8, !tbaa !5
  %1539 = getelementptr inbounds i8, ptr %45, i64 19624
  %1540 = load ptr, ptr %1539, align 8, !tbaa !261
  %1541 = icmp eq ptr %1538, %1540
  br i1 %1541, label %1542, label %.critedge537

1542:                                             ; preds = %1537
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1538, i1 noundef zeroext false)
  br label %.critedge537

.critedge537:                                     ; preds = %1536, %1542, %1537
  br i1 %394, label %1543, label %1562

1543:                                             ; preds = %.critedge537
  %1544 = load ptr, ptr %4, align 8, !tbaa !5
  %1545 = getelementptr inbounds i8, ptr %1544, i64 64
  %1546 = load ptr, ptr %1545, align 8, !tbaa !177
  %1547 = getelementptr inbounds i8, ptr %1546, i64 91
  %1548 = load i8, ptr %1547, align 1, !tbaa !287, !range !91, !noundef !92
  %1549 = trunc nuw i8 %1548 to i1
  br i1 %1549, label %1550, label %1562

1550:                                             ; preds = %1543
  %1551 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %.not475 = icmp eq ptr %1546, %1551
  br i1 %.not475, label %1562, label %1552

1552:                                             ; preds = %1550
  %1553 = getelementptr inbounds i8, ptr %45, i64 25084
  %1554 = load i32, ptr %1553, align 4, !tbaa !288
  %1555 = and i32 %1554, 256
  %.not476 = icmp eq i32 %1555, 0
  br i1 %.not476, label %1560, label %1556

1556:                                             ; preds = %1552
  %1557 = load ptr, ptr %4, align 8, !tbaa !5
  %1558 = getelementptr inbounds i8, ptr %1557, i64 8
  %1559 = load ptr, ptr %1558, align 8, !tbaa !185
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef nonnull @.str.154, ptr noundef %1559)
  br label %1560

1560:                                             ; preds = %1556, %1552
  store i8 0, ptr %1, align 1, !tbaa !167
  %1561 = getelementptr inbounds i8, ptr %45, i64 20136
  store i8 0, ptr %1561, align 8, !tbaa !289
  br label %1562

1562:                                             ; preds = %1560, %1550, %1543, %.critedge537
  %.pre641 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not436, label %1563, label %1578

1563:                                             ; preds = %1562
  %1564 = getelementptr inbounds i8, ptr %.pre641, i64 1077
  %1565 = load i8, ptr %1564, align 1
  %1566 = trunc i8 %1565 to i1
  br i1 %1566, label %1578, label %1567

1567:                                             ; preds = %1563
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #14
  %1568 = load float, ptr %37, align 8, !tbaa !290
  %1569 = getelementptr inbounds i8, ptr %.pre641, i64 148
  %1570 = load float, ptr %1569, align 4, !tbaa !236
  %1571 = fadd float %1568, %1570
  %1572 = getelementptr inbounds i8, ptr %37, i64 4
  %1573 = load float, ptr %1572, align 4, !tbaa !291
  %1574 = load float, ptr %1075, align 8, !tbaa !292
  %1575 = fsub float %1574, %1570
  %1576 = getelementptr inbounds i8, ptr %37, i64 12
  %1577 = load float, ptr %1576, align 4, !tbaa !293
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %44, float noundef %1571, float noundef %1573, float noundef %1575, float noundef %1577)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef nonnull %.pre641, ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #14
  %.pre640 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1578

1578:                                             ; preds = %1567, %1563, %1562
  %1579 = phi ptr [ %.pre640, %1567 ], [ %.pre641, %1563 ], [ %.pre641, %1562 ]
  %1580 = getelementptr inbounds i8, ptr %1579, i64 666
  store i16 0, ptr %1580, align 2, !tbaa !294
  %1581 = getelementptr inbounds i8, ptr %1579, i64 664
  store i16 0, ptr %1581, align 8, !tbaa !295
  %1582 = load i32, ptr %498, align 8, !tbaa !193
  %1583 = and i32 %1582, 64
  %.not477 = icmp eq i32 %1583, 0
  br i1 %.not477, label %1616, label %1584

1584:                                             ; preds = %1578
  %1585 = getelementptr inbounds i8, ptr %45, i64 16736
  %1586 = load ptr, ptr %1585, align 8, !tbaa !296
  %1587 = icmp eq ptr %1586, %1579
  br i1 %1587, label %1588, label %1596

1588:                                             ; preds = %1584
  %1589 = getelementptr inbounds i8, ptr %1579, i64 976
  %1590 = load ptr, ptr %1589, align 8, !tbaa !297
  %1591 = getelementptr inbounds i8, ptr %1590, i64 20
  %1592 = load i32, ptr %1591, align 4, !tbaa !119
  %1593 = and i32 %1592, 524288
  %1594 = icmp eq i32 %1593, 0
  br i1 %1594, label %1595, label %1596

1595:                                             ; preds = %1588
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef nonnull %1579)
  %.pre644.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1596

1596:                                             ; preds = %1595, %1588, %1584
  %.pre644 = phi ptr [ %.pre644.pre, %1595 ], [ %1579, %1588 ], [ %1579, %1584 ]
  %1597 = getelementptr inbounds i8, ptr %45, i64 20160
  %1598 = load i8, ptr %1597, align 8, !tbaa !298, !range !91, !noundef !92
  %1599 = trunc nuw i8 %1598 to i1
  %1600 = and i32 %511, 524288
  %.not478 = icmp eq i32 %1600, 0
  %or.cond538 = select i1 %1599, i1 %.not478, i1 false
  br i1 %or.cond538, label %1601, label %1616

1601:                                             ; preds = %1596
  %1602 = load ptr, ptr %1585, align 8, !tbaa !296
  %1603 = icmp eq ptr %1602, null
  br i1 %1603, label %1607, label %1604

1604:                                             ; preds = %1601
  %1605 = getelementptr inbounds i8, ptr %1602, i64 976
  %1606 = load ptr, ptr %1605, align 8, !tbaa !297
  %.not479 = icmp eq ptr %1606, %.pre644
  br i1 %.not479, label %1616, label %1607

1607:                                             ; preds = %1604, %1601
  %1608 = getelementptr inbounds i8, ptr %.pre644, i64 976
  %1609 = load ptr, ptr %1608, align 8, !tbaa !297
  %1610 = icmp eq ptr %.pre644, %1609
  br i1 %1610, label %1611, label %1616

1611:                                             ; preds = %1607
  %1612 = getelementptr inbounds i8, ptr %.pre644, i64 20
  %1613 = load i32, ptr %1612, align 4, !tbaa !119
  %1614 = and i32 %1613, 536870912
  %.not480 = icmp eq i32 %1614, 0
  br i1 %.not480, label %1615, label %1616

1615:                                             ; preds = %1611
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef nonnull %.pre644)
  %.pre643 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1616

1616:                                             ; preds = %1596, %1607, %1611, %1615, %1604, %1578
  %1617 = phi ptr [ %.pre644, %1596 ], [ %.pre644, %1607 ], [ %.pre644, %1611 ], [ %.pre643, %1615 ], [ %.pre644, %1604 ], [ %1579, %1578 ]
  %1618 = getelementptr inbounds i8, ptr %1617, i64 1077
  %1619 = load i8, ptr %1618, align 1
  %1620 = trunc i8 %1619 to i1
  %1621 = getelementptr inbounds i8, ptr %1617, i64 180
  %1622 = load i32, ptr %1621, align 4, !tbaa !299
  %1623 = getelementptr inbounds i8, ptr %45, i64 19088
  %1624 = load i32, ptr %1623, align 8, !tbaa !300
  br i1 %1620, label %1625, label %1629

1625:                                             ; preds = %1616
  %1626 = getelementptr inbounds i8, ptr %1617, i64 1124
  %1627 = load i32, ptr %1626, align 4, !tbaa !301
  %1628 = getelementptr inbounds i8, ptr %1617, i64 1128
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1622, i32 noundef %1624, i32 noundef %1627, ptr noundef nonnull align 4 dereferenceable(16) %1628)
  br label %1632

1629:                                             ; preds = %1616
  %1630 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1075, i1 noundef zeroext false)
  %1631 = zext i1 %1630 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1622, i32 noundef %1624, i32 noundef %1631, ptr noundef nonnull align 4 dereferenceable(16) %37)
  br label %1632

1632:                                             ; preds = %1629, %1625
  %1633 = getelementptr inbounds i8, ptr %45, i64 19092
  %1634 = load i32, ptr %1633, align 4, !tbaa !302
  %.not481 = icmp eq i32 %1634, 0
  br i1 %.not481, label %1645, label %1635

1635:                                             ; preds = %1632
  %1636 = load ptr, ptr %4, align 8, !tbaa !5
  %1637 = getelementptr inbounds i8, ptr %1636, i64 16
  %1638 = load i32, ptr %1637, align 8, !tbaa !149
  %1639 = icmp eq i32 %1638, %1634
  br i1 %1639, label %1644, label %1640

1640:                                             ; preds = %1635
  %1641 = getelementptr inbounds i8, ptr %1636, i64 180
  %1642 = load i32, ptr %1641, align 4, !tbaa !299
  %1643 = icmp eq i32 %1642, %1634
  br i1 %1643, label %1644, label %1645

1644:                                             ; preds = %1640, %1635
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1645

1645:                                             ; preds = %1644, %1640, %1632
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  br label %1651

1646:                                             ; preds = %385
  %1647 = load ptr, ptr %4, align 8, !tbaa !5
  %1648 = getelementptr inbounds i8, ptr %1647, i64 64
  %1649 = load ptr, ptr %1648, align 8, !tbaa !177
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1647, ptr noundef %1649)
  %1650 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1650)
  br label %1651

1651:                                             ; preds = %1646, %1645
  %.4 = phi i32 [ %511, %1645 ], [ %.3, %1646 ]
  %1652 = and i32 %.4, 536870912
  %.not482 = icmp eq i32 %1652, 0
  %.pre646 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not482, label %1653, label %1656

1653:                                             ; preds = %1651
  %1654 = getelementptr inbounds i8, ptr %.pre646, i64 584
  %1655 = getelementptr inbounds i8, ptr %.pre646, i64 592
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1654, ptr noundef nonnull align 4 dereferenceable(8) %1655, i1 noundef zeroext true)
  %.pre645 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1656

1656:                                             ; preds = %1653, %1651
  %1657 = phi ptr [ %.pre645, %1653 ], [ %.pre646, %1651 ]
  %1658 = getelementptr inbounds i8, ptr %1657, i64 245
  store i8 0, ptr %1658, align 1, !tbaa !303
  %1659 = getelementptr inbounds i8, ptr %1657, i64 256
  %1660 = load i16, ptr %1659, align 8, !tbaa !304
  %1661 = add i16 %1660, 1
  store i16 %1661, ptr %1659, align 8, !tbaa !304
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(152) %144)
  %.pre649 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not396, label %1790, label %1662

1662:                                             ; preds = %1656
  %1663 = getelementptr inbounds i8, ptr %.pre649, i64 1077
  %1664 = load i8, ptr %1663, align 1
  %1665 = trunc i8 %1664 to i1
  %1666 = and i8 %1664, 4
  %.not483 = icmp eq i8 %1666, 0
  %or.cond539 = and i1 %.not483, %1665
  br i1 %or.cond539, label %1667, label %1676

1667:                                             ; preds = %1662
  %1668 = getelementptr inbounds i8, ptr %.pre649, i64 676
  %1669 = load i32, ptr %1668, align 4, !tbaa !305
  %1670 = load i32, ptr %57, align 8, !tbaa !94
  %1671 = icmp eq i32 %1669, %1670
  br i1 %1671, label %1672, label %1674

1672:                                             ; preds = %1667
  %1673 = getelementptr inbounds i8, ptr %.pre649, i64 281
  store i8 1, ptr %1673, align 1, !tbaa !170
  br label %1676

1674:                                             ; preds = %1667
  %1675 = getelementptr inbounds i8, ptr %.pre649, i64 280
  store i8 1, ptr %1675, align 8, !tbaa !189
  br label %1676

1676:                                             ; preds = %1672, %1674, %1662
  %1677 = and i32 %.4, 285212672
  %or.cond540 = icmp eq i32 %1677, 16777216
  br i1 %or.cond540, label %1678, label %.critedge543

1678:                                             ; preds = %1676
  %1679 = and i32 %.4, 1
  %.not486 = icmp ne i32 %1679, 0
  %brmerge = or i1 %.not486, %1665
  br i1 %brmerge, label %.critedge8, label %1680

1680:                                             ; preds = %1678
  call void @__assert_fail(ptr noundef nonnull @.str.155, ptr noundef nonnull @.str.3, i32 noundef 7541, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

.critedge8:                                       ; preds = %1678
  %1681 = and i32 %.4, 8388608
  %.not487 = icmp eq i32 %1681, 0
  br i1 %.not487, label %1695, label %1682

1682:                                             ; preds = %.critedge8
  %1683 = getelementptr inbounds i8, ptr %45, i64 19700
  %1684 = load i8, ptr %1683, align 4, !tbaa !306, !range !91, !noundef !92
  %1685 = trunc nuw i8 %1684 to i1
  br i1 %1685, label %1686, label %1695

1686:                                             ; preds = %1682
  %1687 = getelementptr inbounds i8, ptr %45, i64 19624
  %1688 = load ptr, ptr %1687, align 8, !tbaa !261
  %.not488 = icmp eq ptr %1688, null
  br i1 %.not488, label %1695, label %1689

1689:                                             ; preds = %1686
  %1690 = getelementptr inbounds i8, ptr %1688, i64 992
  %1691 = load ptr, ptr %1690, align 8, !tbaa !307
  %1692 = getelementptr inbounds i8, ptr %.pre649, i64 992
  %1693 = load ptr, ptr %1692, align 8, !tbaa !307
  %1694 = icmp eq ptr %1691, %1693
  br label %1695

1695:                                             ; preds = %1682, %1686, %1689, %.critedge8
  %1696 = phi i1 [ false, %.critedge8 ], [ false, %1686 ], [ false, %1682 ], [ %1694, %1689 ]
  %1697 = getelementptr inbounds i8, ptr %45, i64 25016
  %1698 = load i8, ptr %1697, align 8, !tbaa !308, !range !91, !noundef !92
  %1699 = trunc nuw i8 %1698 to i1
  %brmerge541 = select i1 %1699, i1 true, i1 %1696
  br i1 %brmerge541, label %1724, label %1700

1700:                                             ; preds = %1695
  %1701 = getelementptr inbounds i8, ptr %.pre649, i64 552
  %1702 = load float, ptr %1701, align 8, !tbaa !309
  %1703 = getelementptr inbounds i8, ptr %.pre649, i64 560
  %1704 = load float, ptr %1703, align 8, !tbaa !310
  %1705 = fcmp ult float %1702, %1704
  br i1 %1705, label %1706, label %1712

1706:                                             ; preds = %1700
  %1707 = getelementptr inbounds i8, ptr %.pre649, i64 556
  %1708 = load float, ptr %1707, align 4, !tbaa !234
  %1709 = getelementptr inbounds i8, ptr %.pre649, i64 564
  %1710 = load float, ptr %1709, align 4, !tbaa !311
  %1711 = fcmp ult float %1708, %1710
  br i1 %1711, label %1724, label %1712

1712:                                             ; preds = %1706, %1700
  %1713 = getelementptr inbounds i8, ptr %.pre649, i64 272
  %1714 = load i8, ptr %1713, align 8, !tbaa !212
  %1715 = icmp sgt i8 %1714, 0
  br i1 %1715, label %1720, label %1716

1716:                                             ; preds = %1712
  %1717 = getelementptr inbounds i8, ptr %.pre649, i64 273
  %1718 = load i8, ptr %1717, align 1, !tbaa !213
  %1719 = icmp sgt i8 %1718, 0
  br i1 %1719, label %1720, label %1722

1720:                                             ; preds = %1716, %1712
  %1721 = getelementptr inbounds i8, ptr %.pre649, i64 281
  store i8 1, ptr %1721, align 1, !tbaa !170
  br label %1724

1722:                                             ; preds = %1716
  %1723 = getelementptr inbounds i8, ptr %.pre649, i64 280
  store i8 1, ptr %1723, align 8, !tbaa !189
  br label %1724

1724:                                             ; preds = %1695, %1706, %1722, %1720
  br i1 %210, label %.critedge543, label %1725

1725:                                             ; preds = %1724
  %1726 = getelementptr inbounds i8, ptr %209, i64 246
  %1727 = load i8, ptr %1726, align 2, !tbaa !207, !range !91, !noundef !92
  %1728 = trunc nuw i8 %1727 to i1
  br i1 %1728, label %.thread569, label %1730

.thread569:                                       ; preds = %1725
  %1729 = getelementptr inbounds i8, ptr %.pre649, i64 280
  store i8 1, ptr %1729, align 8, !tbaa !189
  br label %1739

1730:                                             ; preds = %1725
  %1731 = getelementptr inbounds i8, ptr %209, i64 280
  %1732 = load i8, ptr %1731, align 8, !tbaa !189
  %1733 = icmp sgt i8 %1732, 0
  br i1 %1733, label %1734, label %.thread568

1734:                                             ; preds = %1730
  %1735 = getelementptr inbounds i8, ptr %.pre649, i64 280
  store i8 1, ptr %1735, align 8, !tbaa !189
  br label %.thread568

.thread568:                                       ; preds = %1730, %1734
  %1736 = getelementptr inbounds i8, ptr %209, i64 281
  %1737 = load i8, ptr %1736, align 1, !tbaa !170
  %1738 = icmp sgt i8 %1737, 0
  br i1 %1738, label %1739, label %.critedge543

1739:                                             ; preds = %.thread569, %.thread568
  %1740 = getelementptr inbounds i8, ptr %.pre649, i64 281
  store i8 1, ptr %1740, align 1, !tbaa !170
  br label %.critedge543

.critedge543:                                     ; preds = %.thread568, %1739, %1724, %1676
  %1741 = load float, ptr %46, align 4, !tbaa !312
  %1742 = fcmp ugt float %1741, 0.000000e+00
  %.phi.trans.insert647 = getelementptr inbounds i8, ptr %.pre649, i64 280
  br i1 %1742, label %1743, label %.thread666

.thread666:                                       ; preds = %.critedge543
  store i8 1, ptr %.phi.trans.insert647, align 8, !tbaa !189
  br label %.thread570

1743:                                             ; preds = %.critedge543
  %.pre648 = load i8, ptr %.phi.trans.insert647, align 8, !tbaa !189
  %1744 = icmp sgt i8 %.pre648, 0
  br i1 %1744, label %.thread570, label %1745

1745:                                             ; preds = %1743
  %1746 = getelementptr inbounds i8, ptr %.pre649, i64 281
  %1747 = load i8, ptr %1746, align 1, !tbaa !170
  %1748 = icmp sgt i8 %1747, 0
  br i1 %1748, label %.thread570, label %1749

1749:                                             ; preds = %1745
  %1750 = getelementptr inbounds i8, ptr %.pre649, i64 282
  %1751 = load i8, ptr %1750, align 2, !tbaa !190
  %1752 = icmp sgt i8 %1751, 0
  %1753 = zext i1 %1752 to i8
  br label %.thread570

.thread570:                                       ; preds = %.thread666, %1743, %1749, %1745
  %.not597 = phi i1 [ false, %1745 ], [ true, %1749 ], [ false, %1743 ], [ false, %.thread666 ]
  %1754 = phi i8 [ 1, %1745 ], [ %1753, %1749 ], [ 1, %1743 ], [ 1, %.thread666 ]
  %1755 = getelementptr inbounds i8, ptr %.pre649, i64 250
  store i8 %1754, ptr %1755, align 2, !tbaa !313
  %1756 = getelementptr inbounds i8, ptr %.pre649, i64 283
  %1757 = load i8, ptr %1756, align 1, !tbaa !314
  %1758 = icmp sgt i8 %1757, 0
  br i1 %1758, label %1759, label %1764

1759:                                             ; preds = %.thread570
  %1760 = add nsw i8 %1757, -1
  store i8 %1760, ptr %1756, align 1, !tbaa !314
  %1761 = getelementptr inbounds i8, ptr %.pre649, i64 20
  %1762 = load i32, ptr %1761, align 4, !tbaa !119
  %1763 = or i32 %1762, 197120
  store i32 %1763, ptr %1761, align 4, !tbaa !119
  br label %1764

1764:                                             ; preds = %1759, %.thread570
  %1765 = getelementptr inbounds i8, ptr %.pre649, i64 246
  %1766 = load i8, ptr %1765, align 2, !tbaa !207, !range !91, !noundef !92
  %1767 = trunc nuw i8 %1766 to i1
  br i1 %1767, label %1772, label %1768

1768:                                             ; preds = %1764
  %1769 = getelementptr inbounds i8, ptr %.pre649, i64 243
  %1770 = load i8, ptr %1769, align 1, !tbaa !171, !range !91, !noundef !92
  %1771 = trunc nuw i8 %1770 to i1
  %brmerge545.not = and i1 %.not597, %1771
  br i1 %brmerge545.not, label %.thread572, label %1772

1772:                                             ; preds = %1768, %1764
  %1773 = getelementptr inbounds i8, ptr %.pre649, i64 272
  %1774 = load i8, ptr %1773, align 8, !tbaa !212
  %1775 = icmp slt i8 %1774, 1
  br i1 %1775, label %1776, label %.thread572

1776:                                             ; preds = %1772
  %1777 = getelementptr inbounds i8, ptr %.pre649, i64 273
  %1778 = load i8, ptr %1777, align 1, !tbaa !213
  %1779 = icmp slt i8 %1778, 1
  br i1 %1779, label %1781, label %.thread572

.thread572:                                       ; preds = %1776, %1772, %1768
  %1780 = getelementptr inbounds i8, ptr %.pre649, i64 248
  store i8 0, ptr %1780, align 8, !tbaa !315
  br label %1790

1781:                                             ; preds = %1776
  %1782 = getelementptr inbounds i8, ptr %.pre649, i64 281
  %1783 = load i8, ptr %1782, align 1, !tbaa !170
  %1784 = icmp slt i8 %1783, 1
  %spec.select546 = zext i1 %1784 to i8
  %1785 = getelementptr inbounds i8, ptr %.pre649, i64 248
  store i8 %spec.select546, ptr %1785, align 8, !tbaa !315
  br i1 %1784, label %1786, label %1790

1786:                                             ; preds = %1781
  %1787 = getelementptr inbounds i8, ptr %.pre649, i64 412
  %1788 = load i16, ptr %1787, align 4, !tbaa !274
  %1789 = getelementptr inbounds i8, ptr %.pre649, i64 414
  store i16 %1788, ptr %1789, align 2, !tbaa !273
  br label %1790

1790:                                             ; preds = %.thread572, %1781, %1786, %1656
  %1791 = getelementptr inbounds i8, ptr %.pre649, i64 251
  %1792 = load i8, ptr %1791, align 1, !tbaa !112, !range !91, !noundef !92
  %1793 = trunc nuw i8 %1792 to i1
  br i1 %1793, label %1820, label %1794

1794:                                             ; preds = %1790
  %1795 = getelementptr inbounds i8, ptr %45, i64 128
  %1796 = load i8, ptr %1795, align 8, !tbaa !316, !range !91, !noundef !92
  %1797 = trunc nuw i8 %1796 to i1
  %brmerge549.demorgan = and i1 %62, %1797
  br i1 %brmerge549.demorgan, label %1808, label %1798

1798:                                             ; preds = %1794
  %1799 = getelementptr inbounds i8, ptr %45, i64 129
  %1800 = load i8, ptr %1799, align 1, !tbaa !317, !range !91, !noundef !92
  %1801 = trunc nuw i8 %1800 to i1
  br i1 %1801, label %1802, label %1820

1802:                                             ; preds = %1798
  %1803 = getelementptr inbounds i8, ptr %45, i64 25130
  %1804 = load i8, ptr %1803, align 2, !tbaa !318
  %1805 = sext i8 %1804 to i32
  %1806 = load i32, ptr %76, align 8, !tbaa !110
  %1807 = icmp eq i32 %1806, %1805
  br i1 %1807, label %1808, label %1820

1808:                                             ; preds = %1794, %1802
  %1809 = getelementptr inbounds i8, ptr %.pre649, i64 272
  %1810 = load i8, ptr %1809, align 8, !tbaa !212
  %1811 = icmp sgt i8 %1810, 0
  br i1 %1811, label %1812, label %1814

1812:                                             ; preds = %1808
  %1813 = add nuw i8 %1810, 1
  store i8 %1813, ptr %1809, align 8, !tbaa !212
  br label %1814

1814:                                             ; preds = %1812, %1808
  %1815 = getelementptr inbounds i8, ptr %.pre649, i64 273
  %1816 = load i8, ptr %1815, align 1, !tbaa !213
  %1817 = icmp sgt i8 %1816, 0
  br i1 %1817, label %1818, label %1825

1818:                                             ; preds = %1814
  %1819 = add nuw i8 %1816, 1
  store i8 %1819, ptr %1815, align 1, !tbaa !213
  br label %1825

1820:                                             ; preds = %1802, %1798, %1790
  %1821 = getelementptr inbounds i8, ptr %.pre649, i64 248
  %1822 = load i8, ptr %1821, align 8, !tbaa !315, !range !91, !noundef !92
  %1823 = trunc nuw i8 %1822 to i1
  %1824 = xor i1 %1823, true
  br label %1825

1825:                                             ; preds = %1814, %1818, %1820
  %.0343 = phi i1 [ %1824, %1820 ], [ false, %1818 ], [ false, %1814 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %5) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %.0343
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 16560}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14632, !23, i64 14848, !14, i64 15980, !14, i64 15984, !6, i64 15992, !16, i64 16000, !16, i64 16004, !24, i64 16008, !27, i64 16536, !14, i64 16544, !14, i64 16548, !14, i64 16552, !14, i64 16556, !12, i64 16560, !12, i64 16561, !12, i64 16562, !12, i64 16563, !12, i64 16564, !6, i64 16568, !28, i64 16576, !28, i64 16592, !18, i64 16608, !14, i64 16612, !29, i64 16616, !29, i64 16632, !29, i64 16648, !30, i64 16664, !31, i64 16680, !14, i64 16696, !15, i64 16700, !6, i64 16712, !6, i64 16720, !6, i64 16728, !6, i64 16736, !6, i64 16744, !15, i64 16752, !14, i64 16760, !14, i64 16764, !16, i64 16768, !15, i64 16772, !15, i64 16780, !14, i64 16788, !14, i64 16792, !14, i64 16796, !12, i64 16800, !12, i64 16801, !16, i64 16804, !16, i64 16808, !14, i64 16812, !14, i64 16816, !16, i64 16820, !12, i64 16824, !12, i64 16825, !12, i64 16826, !12, i64 16827, !12, i64 16828, !12, i64 16829, !15, i64 16832, !6, i64 16840, !33, i64 16848, !14, i64 16852, !14, i64 16856, !12, i64 16860, !12, i64 16861, !6, i64 16864, !14, i64 16872, !16, i64 16876, !7, i64 16880, !34, i64 18728, !14, i64 19072, !12, i64 19076, !14, i64 19080, !14, i64 19084, !14, i64 19088, !14, i64 19092, !36, i64 19096, !38, i64 19128, !40, i64 19192, !12, i64 19344, !42, i64 19352, !43, i64 19368, !44, i64 19384, !45, i64 19400, !46, i64 19416, !47, i64 19432, !48, i64 19448, !48, i64 19464, !49, i64 19480, !14, i64 19496, !50, i64 19504, !16, i64 19520, !6, i64 19528, !6, i64 19536, !6, i64 19544, !14, i64 19552, !51, i64 19560, !14, i64 19608, !14, i64 19612, !14, i64 19616, !6, i64 19624, !14, i64 19632, !14, i64 19636, !14, i64 19640, !14, i64 19644, !14, i64 19648, !14, i64 19652, !14, i64 19656, !14, i64 19660, !14, i64 19664, !14, i64 19668, !14, i64 19672, !33, i64 19676, !52, i64 19680, !37, i64 19688, !12, i64 19696, !12, i64 19697, !12, i64 19698, !12, i64 19699, !12, i64 19700, !12, i64 19701, !12, i64 19702, !53, i64 19704, !12, i64 19768, !12, i64 19769, !12, i64 19770, !14, i64 19772, !14, i64 19776, !14, i64 19780, !14, i64 19784, !14, i64 19788, !14, i64 19792, !39, i64 19796, !39, i64 19812, !14, i64 19828, !14, i64 19832, !14, i64 19836, !53, i64 19840, !53, i64 19904, !53, i64 19968, !53, i64 20032, !14, i64 20096, !14, i64 20100, !6, i64 20104, !6, i64 20112, !6, i64 20120, !16, i64 20128, !16, i64 20132, !12, i64 20136, !15, i64 20140, !15, i64 20148, !16, i64 20156, !12, i64 20160, !12, i64 20161, !12, i64 20162, !14, i64 20164, !14, i64 20168, !14, i64 20172, !54, i64 20176, !39, i64 20240, !14, i64 20256, !14, i64 20260, !16, i64 20264, !14, i64 20268, !14, i64 20272, !14, i64 20276, !14, i64 20280, !55, i64 20288, !7, i64 20304, !14, i64 20320, !56, i64 20328, !6, i64 20344, !14, i64 20352, !57, i64 20360, !58, i64 20376, !60, i64 20416, !61, i64 20432, !6, i64 20448, !62, i64 20456, !64, i64 20496, !65, i64 20512, !14, i64 20528, !14, i64 20532, !16, i64 20536, !16, i64 20540, !14, i64 20544, !14, i64 20548, !14, i64 20552, !16, i64 20556, !15, i64 20560, !66, i64 20568, !70, i64 24296, !71, i64 24320, !14, i64 24440, !14, i64 24444, !14, i64 24448, !14, i64 24452, !16, i64 24456, !16, i64 24460, !14, i64 24464, !25, i64 24468, !73, i64 24484, !39, i64 24532, !12, i64 24548, !16, i64 24552, !16, i64 24556, !12, i64 24560, !12, i64 24561, !16, i64 24564, !16, i64 24568, !16, i64 24572, !16, i64 24576, !17, i64 24580, !17, i64 24582, !17, i64 24584, !67, i64 24592, !45, i64 24608, !74, i64 24624, !76, i64 24728, !76, i64 24744, !14, i64 24760, !77, i64 24768, !6, i64 24824, !12, i64 24832, !16, i64 24836, !80, i64 24840, !81, i64 24856, !82, i64 24872, !83, i64 24888, !84, i64 24904, !14, i64 24920, !7, i64 24928, !12, i64 25016, !85, i64 25020, !6, i64 25024, !80, i64 25032, !6, i64 25048, !6, i64 25056, !16, i64 25064, !12, i64 25068, !14, i64 25072, !14, i64 25076, !14, i64 25080, !14, i64 25084, !80, i64 25088, !86, i64 25104, !7, i64 25128, !7, i64 25129, !7, i64 25130, !12, i64 25131, !7, i64 25132, !14, i64 25136, !87, i64 25140, !88, i64 25160, !90, i64 25200, !6, i64 25264, !7, i64 25272, !14, i64 25512, !14, i64 25516, !16, i64 25520, !14, i64 25524, !14, i64 25528, !14, i64 25532, !67, i64 25536}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS7ImGuiIO", !14, i64 0, !14, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !12, i64 60, !6, i64 64, !15, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91, !12, i64 92, !12, i64 93, !12, i64 94, !12, i64 95, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !12, i64 120, !12, i64 121, !12, i64 122, !12, i64 123, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !17, i64 200, !12, i64 202, !12, i64 203, !12, i64 204, !12, i64 205, !12, i64 206, !12, i64 207, !12, i64 208, !16, i64 212, !14, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !15, i64 232, !7, i64 240, !7, i64 2904, !7, i64 3572, !6, i64 3640, !6, i64 3648, !15, i64 3656, !7, i64 3664, !16, i64 3672, !16, i64 3676, !18, i64 3680, !14, i64 3684, !12, i64 3688, !12, i64 3689, !12, i64 3690, !12, i64 3691, !14, i64 3692, !7, i64 3696, !12, i64 14352, !15, i64 14356, !7, i64 14364, !7, i64 14408, !7, i64 14448, !7, i64 14453, !7, i64 14458, !7, i64 14468, !7, i64 14478, !7, i64 14483, !7, i64 14488, !12, i64 14493, !7, i64 14496, !7, i64 14516, !7, i64 14536, !7, i64 14576, !16, i64 14596, !12, i64 14600, !12, i64 14601, !7, i64 14602, !12, i64 14603, !17, i64 14604, !19, i64 14608}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !21, i64 184, !22, i64 200}
!21 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !14, i64 0, !14, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !14, i64 0, !14, i64 4, !6, i64 8}
!23 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !14, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !14, i64 156, !15, i64 160, !15, i64 168, !16, i64 176, !15, i64 180, !15, i64 188, !15, i64 196, !15, i64 204, !16, i64 212, !16, i64 216, !12, i64 220, !12, i64 221, !12, i64 222, !16, i64 224, !16, i64 228, !7, i64 232, !16, i64 1112, !16, i64 1116, !16, i64 1120, !14, i64 1124, !14, i64 1128}
!24 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !25, i64 28, !14, i64 44, !26, i64 48, !7, i64 64, !16, i64 448, !7, i64 452, !6, i64 520}
!25 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!26 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"double", !7, i64 0}
!28 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!31 = !{!"_ZTS12ImGuiStorage", !32, i64 0}
!32 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!34 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !35, i64 312, !35, i64 328}
!35 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!36 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !16, i64 8, !37, i64 16, !14, i64 24, !12, i64 28}
!37 = !{!"long long", !7, i64 0}
!38 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !39, i64 12, !39, i64 28, !39, i64 44}
!39 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!40 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !15, i64 20, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !14, i64 60, !12, i64 64, !12, i64 65, !39, i64 68, !6, i64 88, !6, i64 96, !16, i64 104, !14, i64 108, !14, i64 112, !41, i64 116, !15, i64 144}
!41 = !{!"_ZTS16ImGuiWindowClass", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !12, i64 24, !12, i64 25}
!42 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS20ImGuiPlatformMonitor", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !6, i64 40}
!52 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!53 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !39, i64 16, !14, i64 32, !37, i64 40, !16, i64 48, !16, i64 52, !16, i64 56}
!54 = !{!"_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}
!55 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS6ImPoolI10ImGuiTableE", !59, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!59 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !63, i64 0, !31, i64 16, !14, i64 32, !14, i64 36}
!63 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!66 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !67, i64 40, !67, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !68, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720}
!67 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!68 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !14, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 28, !69, i64 32}
!69 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!70 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !67, i64 8}
!71 = !{!"_ZTS6ImFont", !60, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !72, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !17, i64 86, !16, i64 88, !16, i64 92, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !14, i64 112, !7, i64 116}
!72 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!73 = !{!"_ZTS21ImGuiComboPreviewData", !39, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!74 = !{!"_ZTS22ImGuiTypingSelectState", !75, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!75 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!76 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!77 = !{!"_ZTS16ImGuiDockContext", !31, i64 0, !78, i64 16, !79, i64 32, !12, i64 48}
!78 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !14, i64 0, !14, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!80 = !{!"_ZTS15ImGuiTextBuffer", !67, i64 0}
!81 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!82 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !67, i64 0}
!83 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !67, i64 0}
!84 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!85 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!86 = !{!"_ZTS14ImGuiTextIndex", !46, i64 0, !14, i64 16}
!87 = !{!"_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}
!88 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !89, i64 16, !12, i64 32, !16, i64 36}
!89 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!90 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !17, i64 8, !7, i64 12}
!91 = !{i8 0, i8 2}
!92 = !{}
!93 = !{!11, !14, i64 16548}
!94 = !{!11, !14, i64 16544}
!95 = !{!96, !14, i64 672}
!96 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !41, i64 32, !6, i64 64, !14, i64 72, !15, i64 76, !14, i64 84, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !16, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !15, i64 232, !12, i64 240, !12, i64 241, !12, i64 242, !12, i64 243, !12, i64 244, !12, i64 245, !12, i64 246, !12, i64 247, !12, i64 248, !12, i64 249, !12, i64 250, !12, i64 251, !12, i64 252, !12, i64 253, !7, i64 254, !7, i64 255, !17, i64 256, !17, i64 258, !17, i64 260, !17, i64 262, !17, i64 264, !14, i64 268, !7, i64 272, !7, i64 273, !12, i64 274, !14, i64 276, !7, i64 280, !7, i64 281, !7, i64 282, !7, i64 283, !14, i64 284, !14, i64 285, !14, i64 286, !14, i64 287, !15, i64 288, !15, i64 296, !45, i64 304, !97, i64 320, !39, i64 552, !39, i64 568, !39, i64 584, !39, i64 600, !39, i64 616, !39, i64 632, !39, i64 648, !100, i64 664, !100, i64 668, !14, i64 672, !14, i64 676, !16, i64 680, !16, i64 684, !31, i64 688, !101, i64 704, !16, i64 720, !16, i64 724, !14, i64 728, !6, i64 736, !102, i64 744, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !7, i64 1008, !7, i64 1016, !7, i64 1048, !14, i64 1064, !14, i64 1068, !14, i64 1072, !12, i64 1076, !12, i64 1077, !12, i64 1077, !12, i64 1077, !12, i64 1077, !17, i64 1078, !109, i64 1080, !6, i64 1104, !6, i64 1112, !14, i64 1120, !14, i64 1124, !39, i64 1128}
!97 = !{!"_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, !98, i64 68, !98, i64 72, !98, i64 76, !15, i64 80, !52, i64 88, !17, i64 92, !17, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !99, i64 108, !14, i64 136, !14, i64 140, !29, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !16, i64 188, !16, i64 192, !60, i64 200, !60, i64 216}
!98 = !{!"_ZTS6ImVec1", !16, i64 0}
!99 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !7, i64 18}
!100 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!101 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!102 = !{!"_ZTS10ImDrawList", !103, i64 0, !19, i64 16, !104, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !105, i64 88, !106, i64 104, !26, i64 120, !107, i64 136, !108, i64 168, !16, i64 192}
!103 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!104 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!105 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!106 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!107 = !{!"_ZTS15ImDrawCmdHeader", !25, i64 0, !6, i64 16, !14, i64 24}
!108 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !61, i64 8}
!109 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!110 = !{!11, !14, i64 16664}
!111 = !{!11, !12, i64 16561}
!112 = !{!96, !12, i64 251}
!113 = !{!11, !14, i64 19464}
!114 = !{!96, !14, i64 268}
!115 = !{!116, !14, i64 0}
!116 = !{!"_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}
!117 = !{!116, !6, i64 8}
!118 = !{!96, !12, i64 249}
!119 = !{!96, !14, i64 20}
!120 = !{!96, !14, i64 24}
!121 = !{!11, !14, i64 19192}
!122 = !{!11, !14, i64 19252}
!123 = !{!96, !14, i64 28}
!124 = !{!11, !27, i64 16536}
!125 = !{!96, !16, i64 680}
!126 = !{!96, !17, i64 260}
!127 = !{!11, !14, i64 16696}
!128 = !{!96, !17, i64 262}
!129 = !{!96, !6, i64 1104}
!130 = !{!96, !6, i64 1112}
!131 = !{!11, !14, i64 19304}
!132 = !{!11, !14, i64 19208}
!133 = !{!96, !14, i64 1120}
!134 = !{!135, !6, i64 136}
!135 = !{!"_ZTS13ImGuiDockNode", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !136, i64 20, !6, i64 24, !7, i64 32, !29, i64 48, !6, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !137, i64 96, !41, i64 100, !14, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 200, !14, i64 200, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 202, !12, i64 202, !12, i64 202, !12, i64 202}
!136 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!137 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!138 = !{!139, !6, i64 0}
!139 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !38, i64 8, !140, i64 68}
!140 = !{!"_ZTS15ImGuiStackSizes", !17, i64 0, !17, i64 2, !17, i64 4, !17, i64 6, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16}
!141 = !{!96, !6, i64 944}
!142 = !{!96, !14, i64 304}
!143 = !{!11, !6, i64 16712}
!144 = !{i64 0, i64 4, !145, i64 4, i64 4, !145, i64 8, i64 4, !145, i64 12, i64 4, !146, i64 16, i64 4, !146, i64 20, i64 4, !146, i64 24, i64 4, !146, i64 28, i64 4, !146, i64 32, i64 4, !146, i64 36, i64 4, !146, i64 40, i64 4, !146, i64 44, i64 4, !146, i64 48, i64 4, !146, i64 52, i64 4, !146, i64 56, i64 4, !146}
!145 = !{!14, !14, i64 0}
!146 = !{!16, !16, i64 0}
!147 = !{!11, !14, i64 19496}
!148 = !{!96, !6, i64 952}
!149 = !{!96, !14, i64 16}
!150 = !{!11, !14, i64 19084}
!151 = !{!96, !14, i64 1064}
!152 = !{!96, !52, i64 408}
!153 = !{!116, !14, i64 24}
!154 = !{!11, !14, i64 19196}
!155 = !{!11, !14, i64 19200}
!156 = !{!11, !16, i64 19228}
!157 = !{!11, !16, i64 19232}
!158 = !{!96, !16, i64 104}
!159 = !{!96, !16, i64 108}
!160 = !{!11, !16, i64 19244}
!161 = !{!96, !16, i64 208}
!162 = !{!96, !16, i64 216}
!163 = !{!11, !16, i64 19248}
!164 = !{!96, !16, i64 212}
!165 = !{!96, !16, i64 220}
!166 = !{i64 0, i64 4, !145, i64 4, i64 4, !145, i64 8, i64 4, !145, i64 12, i64 4, !145, i64 16, i64 4, !145, i64 20, i64 4, !145, i64 24, i64 1, !167, i64 25, i64 1, !167}
!167 = !{!12, !12, i64 0}
!168 = !{!11, !12, i64 19257}
!169 = !{!11, !14, i64 19204}
!170 = !{!96, !7, i64 281}
!171 = !{!96, !12, i64 243}
!172 = !{!96, !12, i64 253}
!173 = !{i64 0, i64 4, !146, i64 4, i64 4, !146, i64 8, i64 4, !146, i64 12, i64 4, !146}
!174 = !{!96, !6, i64 736}
!175 = !{!96, !14, i64 496}
!176 = !{!96, !12, i64 1076}
!177 = !{!96, !6, i64 64}
!178 = !{!179, !6, i64 96}
!179 = !{!"_ZTS14ImGuiViewportP", !180, i64 0, !6, i64 96, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !15, i64 120, !16, i64 128, !16, i64 132, !12, i64 136, !17, i64 138, !7, i64 140, !7, i64 152, !181, i64 168, !183, i64 232, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312}
!180 = !{!"_ZTS13ImGuiViewport", !14, i64 0, !14, i64 4, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91}
!181 = !{!"_ZTS10ImDrawData", !12, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !182, i64 16, !15, i64 32, !15, i64 40, !15, i64 48, !6, i64 56}
!182 = !{!"_ZTS8ImVectorIP10ImDrawListE", !14, i64 0, !14, i64 4, !6, i64 8}
!183 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !182, i64 16}
!184 = !{!11, !6, i64 20120}
!185 = !{!96, !6, i64 8}
!186 = !{!96, !14, i64 176}
!187 = !{!188, !188, i64 0}
!188 = !{!"long", !7, i64 0}
!189 = !{!96, !7, i64 280}
!190 = !{!96, !7, i64 282}
!191 = !{!96, !16, i64 96}
!192 = !{!96, !16, i64 100}
!193 = !{!11, !14, i64 8}
!194 = !{!180, !16, i64 40}
!195 = !{!96, !16, i64 724}
!196 = !{!23, !16, i64 12}
!197 = !{!23, !16, i64 76}
!198 = !{!11, !16, i64 19336}
!199 = !{!96, !16, i64 420}
!200 = !{!11, !16, i64 19340}
!201 = !{!96, !16, i64 424}
!202 = !{!11, !6, i64 16720}
!203 = !{!11, !14, i64 16792}
!204 = !{!11, !14, i64 16796}
!205 = !{!17, !17, i64 0}
!206 = !{!96, !12, i64 247}
!207 = !{!96, !12, i64 246}
!208 = !{!96, !16, i64 152}
!209 = !{!96, !16, i64 160}
!210 = !{!96, !16, i64 156}
!211 = !{!96, !16, i64 164}
!212 = !{!96, !7, i64 272}
!213 = !{!96, !7, i64 273}
!214 = !{!96, !12, i64 274}
!215 = !{!15, !16, i64 4}
!216 = !{!96, !14, i64 276}
!217 = !{!96, !14, i64 464}
!218 = !{!96, !16, i64 288}
!219 = !{!96, !14, i64 84}
!220 = !{!96, !12, i64 242}
!221 = !{!180, !14, i64 4}
!222 = !{!11, !14, i64 14816}
!223 = !{!96, !16, i64 144}
!224 = !{!11, !12, i64 102}
!225 = !{!11, !16, i64 16000}
!226 = !{!96, !7, i64 254}
!227 = !{!96, !7, i64 255}
!228 = !{!180, !12, i64 89}
!229 = !{!180, !12, i64 90}
!230 = !{!96, !12, i64 241}
!231 = !{!96, !12, i64 240}
!232 = !{!15, !16, i64 0}
!233 = !{!23, !16, i64 116}
!234 = !{!96, !16, i64 556}
!235 = !{!96, !16, i64 136}
!236 = !{!96, !16, i64 148}
!237 = !{!96, !16, i64 584}
!238 = !{!96, !16, i64 572}
!239 = !{!96, !16, i64 588}
!240 = !{!96, !16, i64 576}
!241 = !{!96, !16, i64 592}
!242 = !{!96, !16, i64 580}
!243 = !{!96, !16, i64 596}
!244 = !{!96, !16, i64 684}
!245 = !{!96, !16, i64 112}
!246 = !{!96, !16, i64 200}
!247 = !{!96, !16, i64 116}
!248 = !{!96, !16, i64 140}
!249 = !{!96, !16, i64 204}
!250 = !{!102, !14, i64 0}
!251 = !{!252, !14, i64 32}
!252 = !{!"_ZTS9ImDrawCmd", !25, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!253 = !{!11, !6, i64 15992}
!254 = !{!71, !6, i64 64}
!255 = !{!256, !6, i64 8}
!256 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !12, i64 24, !6, i64 32, !12, i64 40, !12, i64 41, !6, i64 48, !6, i64 56, !14, i64 64, !14, i64 68, !15, i64 72, !15, i64 80, !44, i64 88, !257, i64 104, !258, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!257 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!258 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!259 = !{!102, !14, i64 32}
!260 = !{!11, !6, i64 20104}
!261 = !{!11, !6, i64 19624}
!262 = !{!96, !6, i64 984}
!263 = !{!96, !16, i64 128}
!264 = !{!96, !16, i64 132}
!265 = !{!96, !16, i64 568}
!266 = !{!96, !16, i64 192}
!267 = !{!96, !16, i64 600}
!268 = !{!96, !16, i64 196}
!269 = !{!96, !16, i64 604}
!270 = !{!96, !16, i64 656}
!271 = !{!96, !16, i64 660}
!272 = !{!96, !16, i64 388}
!273 = !{!96, !17, i64 414}
!274 = !{!96, !17, i64 412}
!275 = !{!96, !12, i64 416}
!276 = !{!96, !12, i64 417}
!277 = !{!96, !12, i64 418}
!278 = !{!96, !12, i64 419}
!279 = !{!96, !14, i64 456}
!280 = !{!96, !14, i64 460}
!281 = !{!96, !6, i64 480}
!282 = !{!96, !6, i64 488}
!283 = !{!96, !14, i64 500}
!284 = !{!96, !14, i64 504}
!285 = !{!96, !16, i64 508}
!286 = !{!96, !16, i64 512}
!287 = !{!180, !12, i64 91}
!288 = !{!11, !14, i64 25084}
!289 = !{!11, !12, i64 20136}
!290 = !{!39, !16, i64 0}
!291 = !{!39, !16, i64 4}
!292 = !{!39, !16, i64 8}
!293 = !{!39, !16, i64 12}
!294 = !{!96, !17, i64 666}
!295 = !{!96, !17, i64 664}
!296 = !{!11, !6, i64 16736}
!297 = !{!96, !6, i64 976}
!298 = !{!11, !12, i64 20160}
!299 = !{!96, !14, i64 180}
!300 = !{!11, !14, i64 19088}
!301 = !{!96, !14, i64 1124}
!302 = !{!11, !14, i64 19092}
!303 = !{!96, !12, i64 245}
!304 = !{!96, !17, i64 256}
!305 = !{!96, !14, i64 676}
!306 = !{!11, !12, i64 19700}
!307 = !{!96, !6, i64 992}
!308 = !{!11, !12, i64 25016}
!309 = !{!96, !16, i64 552}
!310 = !{!96, !16, i64 560}
!311 = !{!96, !16, i64 564}
!312 = !{!23, !16, i64 0}
!313 = !{!96, !12, i64 250}
!314 = !{!96, !7, i64 283}
!315 = !{!96, !12, i64 248}
!316 = !{!11, !12, i64 128}
!317 = !{!11, !12, i64 129}
!318 = !{!11, !7, i64 25130}


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