; LLVM IR from Overload-Technologies/Overload :: Dependencies/ImGui/src/imgui.ll (ZN5ImGui5BeginEPKcPbi)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, ptr, float, float, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i32, i8, i8, i8, i8, ptr, [16 x i8], %struct.ImVector.3, %struct.ImVector.3, i32, i32, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.4, %struct.ImVector.5, %struct.ImGuiStorage, i32, float, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i32, i32, float, float, i8, i8, i8, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, %struct.ImGuiDeactivatedItemData, %struct.ImGuiDataTypeStorage, i32, float, double, double, double, %struct.ImBitArray, [155 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, ptr, ptr, ptr, i32, %struct.ImGuiPlatformMonitor, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i32, ptr, i32, i32, i32, i32, i32, i32, %struct.ImVector.11, i32, float, i32, i32, i32, i64, i8, i8, i8, i8, %struct.ImGuiNavItemData, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, i32, i32, i8, i8, i32, i32, ptr, ptr, ptr, float, float, i8, i32, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.17, [16 x i8], i32, %struct.ImVector.18, ptr, i32, i32, %struct.ImVector.19, %struct.ImPool, %struct.ImVector.21, %struct.ImVector.22, ptr, %struct.ImPool.23, %struct.ImVector.25, %struct.ImVector.26, %struct.ImGuiBoxSelectState, ptr, i32, %struct.ImVector.27, %struct.ImPool.28, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, %struct.ImGuiDataTypeStorage, i32, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, i16, float, float, float, i8, i8, float, float, float, i16, i16, ptr, %struct.ImVector.30, %struct.ImVector.32, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i32, [4 x i8], %struct.ImGuiDockContext, ptr, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.35, %struct.ImChunkStream, %struct.ImChunkStream.36, %struct.ImVector.37, i32, [13 x ptr], i8, i32, ptr, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, ptr, ptr, %struct.ImVec2, i8, i32, %struct.ImGuiErrorRecoveryState, ptr, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, ptr, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.30, [64 x i8] }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i32, i8, i8, i8, i8, i32, [155 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 double], [5 x i8], [5 x i8], i8, i8, [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], float, i8, i8, i16, %struct.ImVector, ptr, ptr, ptr }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, ptr, ptr, 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, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, float, float, [58 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, ptr, float, float, float, float, float, i32, %struct.ImVec4, %struct.ImVector.2, [48 x %struct.ImVec2], float, [64 x i8], [4 x i8] }>
%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.ImGuiDeactivatedItemData = type { i32, i32, i8, i8 }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [155 x i16], %struct.ImVector.7, %struct.ImVector.7 }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i32, [4 x i8], i64, float, i32, i32, i8, i8, %struct.ImGuiDataTypeStorage, [2 x i8], i32, [4 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32 }
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i32, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2, i32 }
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float, i64 }
%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.ImGuiBoxSelectState = type <{ i32, i8, i8, i8, i8, i8, i16, i8, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8], ptr, i8, [3 x i8], %struct.ImRect, %struct.ImRect, %struct.ImRect, [4 x i8] }>
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImPool.28 = type { %struct.ImVector.29, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVector.30, %struct.ImVector.30, %struct.ImVector.30, i32, %struct.ImVec2, float, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.30 }
%struct.ImFont = type <{ %struct.ImVector.21, float, float, %struct.ImVector, %struct.ImVector.31, ptr, ptr, ptr, i16, i16, i16, i16, float, float, float, float, float, i32, i8, [1 x i8], [6 x i8] }>
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImGuiDataTypeStorage = type { [8 x i8] }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.32 = 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.33, %struct.ImVector.34, i8, [7 x i8] }>
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.30 }
%struct.ImChunkStream.36 = type { %struct.ImVector.30 }
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImGuiErrorRecoveryState = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.30 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.12, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.38, i8, float, %struct.ImGuiTextBuffer }
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.30 = 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, float, float, i32, 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, i8, i8, i8, i8, i16, i16, i16, i16, i16, i8, i8, i8, [3 x i8], i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector.32, %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.41, float, float, float, float, i32, [4 x i8], ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, i8, i16, %struct.ImGuiWindowDockStyle, ptr, ptr, i32, [4 x i8] }>
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.4, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, 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.41 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.42, %struct.ImVector, %struct.ImVector.43, i32, i32, ptr, ptr, ptr, %struct.ImVector.2, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, %struct.ImVector.44, %struct.ImVector.45, %struct.ImVector.17, float, ptr }
%struct.ImVector.42 = type { i32, i32, ptr }
%struct.ImVector.43 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, i64, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.22 }
%struct.ImVector.44 = type { i32, i32, ptr }
%struct.ImVector.45 = type { i32, i32, ptr }
%struct.ImGuiWindowDockStyle = type { [8 x i32] }
%struct.ImGuiPopupData = type <{ i32, [4 x i8], ptr, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiDockNode = type <{ i32, i32, i32, i32, i32, i32, ptr, [2 x ptr], %struct.ImVector.4, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, %struct.ImGuiWindowClass, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i16, i8, [5 x i8] }>
%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiErrorRecoveryState, i8, i8, float, [4 x i8] }>
%struct.ImGuiViewportP = type { %struct.ImGuiViewport.base, ptr, i32, i32, i32, i32, %struct.ImVec2, %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.52, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, ptr }
%struct.ImVector.52 = type { i32, i32, ptr }
%struct.ImDrawDataBuilder = type { [2 x ptr], %struct.ImVector.52 }
%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, i64, i32, i32, i32, ptr, ptr, i32, i32 }
%struct.ImFontAtlas = type <{ i32, [4 x i8], i64, i32, i32, ptr, i8, i8, i8, [5 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.10, %struct.ImVector.53, %struct.ImVector.54, [33 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.53 = type { i32, i32, ptr }
%struct.ImVector.54 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.164 = 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: mustprogress uwtable
declare dso_local void @_ZN5ImGui8DebugLogEPKcz(ptr noundef, ...) #7

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216), i64 noundef) #10

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %0, ptr noundef %1, i32 noundef %2) #9 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca 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 ptr, 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.ImRect, 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 i8, align 1
  %82 = alloca i8, align 1
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImRect, align 4
  %85 = alloca %struct.ImRect, align 4
  %86 = alloca %struct.ImRect, align 4
  %87 = alloca float, align 4
  %88 = alloca %struct.ImVec2, align 4
  %89 = alloca %struct.ImVec2, align 4
  %90 = alloca i8, align 1
  %91 = alloca i8, align 1
  %92 = alloca ptr, align 8
  %93 = alloca i8, align 1
  %94 = alloca %struct.ImRect, align 4
  %95 = alloca %struct.ImRect, align 4
  %96 = alloca i8, align 1
  %97 = alloca ptr, align 8
  %98 = alloca i8, align 1
  %99 = alloca i8, align 1
  %100 = alloca i8, align 1
  %101 = alloca float, align 4
  %102 = alloca float, align 4
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca %struct.ImVec2, align 4
  %106 = alloca %struct.ImVec2, align 4
  %107 = alloca %struct.ImVec2, align 4
  %108 = alloca %struct.ImRect, align 4
  %109 = alloca %struct.ImRect, align 4
  %110 = alloca i8, align 1
  %111 = alloca i8, align 1
  %112 = alloca i8, align 1
  %113 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #12
  %114 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %114, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #12
  %115 = load ptr, ptr %8, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.ImGuiContext, ptr %115, i32 0, i32 4
  store ptr %116, ptr %9, align 8, !tbaa !5
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = icmp ne ptr %117, null
  br i1 %118, label %119, label %125

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

125:                                              ; preds = %119, %3
  %126 = phi i1 [ false, %3 ], [ %124, %119 ]
  br i1 %126, label %127, label %128

127:                                              ; preds = %125
  br label %130

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

129:                                              ; No predecessors!
  br label %130

130:                                              ; preds = %129, %127
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ImGuiContext, ptr %131, i32 0, i32 19
  %133 = load i8, ptr %132, align 4, !tbaa !12, !range !100, !noundef !101
  %134 = trunc i8 %133 to i1
  br i1 %134, label %135, label %136

135:                                              ; preds = %130
  br label %138

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

137:                                              ; No predecessors!
  br label %138

138:                                              ; preds = %137, %135
  %139 = load ptr, ptr %8, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.ImGuiContext, ptr %139, i32 0, i32 15
  %141 = load i32, ptr %140, align 4, !tbaa !102
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.ImGuiContext, ptr %142, i32 0, i32 14
  %144 = load i32, ptr %143, align 8, !tbaa !103
  %145 = icmp ne i32 %141, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %138
  br label %149

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

148:                                              ; No predecessors!
  br label %149

149:                                              ; preds = %148, %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #12
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = call noundef ptr @_ZN5ImGui16FindWindowByNameEPKc(ptr noundef %150)
  store ptr %151, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #12
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = icmp eq ptr %152, null
  %154 = zext i1 %153 to i8
  store i8 %154, ptr %11, align 1, !tbaa !104
  %155 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %156 = trunc i8 %155 to i1
  br i1 %156, label %157, label %161

157:                                              ; preds = %149
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  %159 = load i32, ptr %7, align 4, !tbaa !9
  %160 = call noundef ptr @_ZL15CreateNewWindowPKci(ptr noundef %158, i32 noundef %159)
  store ptr %160, ptr %10, align 8, !tbaa !5
  br label %161

161:                                              ; preds = %157, %149
  %162 = load ptr, ptr %8, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.ImGuiContext, ptr %162, i32 0, i32 36
  %164 = load i32, ptr %163, align 8, !tbaa !105
  %165 = load ptr, ptr %10, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.ImGuiWindow, ptr %165, i32 0, i32 2
  %167 = load i32, ptr %166, align 8, !tbaa !106
  %168 = icmp eq i32 %164, %167
  br i1 %168, label %169, label %170

169:                                              ; preds = %161
  call void @llvm.debugtrap()
  br label %170

170:                                              ; preds = %169, %161
  %171 = load i32, ptr %7, align 4, !tbaa !9
  %172 = and i32 %171, 197120
  %173 = icmp eq i32 %172, 197120
  br i1 %173, label %174, label %177

174:                                              ; preds = %170
  %175 = load i32, ptr %7, align 4, !tbaa !9
  %176 = or i32 %175, 6
  store i32 %176, ptr %7, align 4, !tbaa !9
  br label %177

177:                                              ; preds = %174, %170
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ImGuiContext, ptr %178, i32 0, i32 14
  %180 = load i32, ptr %179, align 8, !tbaa !103
  store i32 %180, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #12
  %181 = load ptr, ptr %10, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.ImGuiWindow, ptr %181, i32 0, i32 88
  %183 = load i32, ptr %182, align 8, !tbaa !121
  %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 !104
  %187 = load ptr, ptr %8, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.ImGuiContext, ptr %187, i32 0, i32 32
  %189 = getelementptr inbounds %struct.ImVector.5, ptr %188, i32 0, i32 0
  %190 = load i32, ptr %189, align 8, !tbaa !122
  %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 20
  %195 = load i8, ptr %194, align 1, !tbaa !123, !range !100, !noundef !101
  %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 53
  %201 = zext i1 %198 to i8
  store i8 %201, ptr %200, align 2, !tbaa !124
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #12
  %202 = load ptr, ptr %10, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.ImGuiWindow, ptr %202, i32 0, i32 88
  %204 = load i32, ptr %203, align 8, !tbaa !121
  %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 !104
  %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) #12
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.ImGuiContext, ptr %213, i32 0, i32 101
  %215 = load ptr, ptr %8, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.ImGuiContext, ptr %215, i32 0, i32 102
  %217 = getelementptr inbounds %struct.ImVector.14, ptr %216, i32 0, i32 0
  %218 = load i32, ptr %217, align 8, !tbaa !125
  %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 32
  %222 = load i32, ptr %221, align 8, !tbaa !126
  %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 !127
  %226 = icmp ne i32 %222, %225
  %227 = zext i1 %226 to i32
  %228 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %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 !104
  %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 !129
  %238 = icmp ne ptr %234, %237
  %239 = zext i1 %238 to i32
  %240 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %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 !104
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  br label %246

246:                                              ; preds = %212, %197
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #12
  %247 = load ptr, ptr %10, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.ImGuiWindow, ptr %247, i32 0, i32 51
  %249 = load i8, ptr %248, align 8, !tbaa !130, !range !100, !noundef !101
  %250 = trunc i8 %249 to i1
  %251 = zext i1 %250 to i8
  store i8 %251, ptr %16, align 1, !tbaa !104
  %252 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %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 !104, !range !100, !noundef !101
  %257 = trunc i8 %256 to i1
  %258 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef %255, i1 noundef zeroext %257, i32 noundef %258)
  %259 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %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 51
  %263 = zext i1 %260 to i8
  store i8 %263, ptr %262, align 8, !tbaa !130
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiWindow, ptr %264, i32 0, i32 51
  %266 = load i8, ptr %265, align 8, !tbaa !130, !range !100, !noundef !101
  %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 !131
  %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 !132
  %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 !131
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.ImGuiContext, ptr %279, i32 0, i32 92
  %281 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %280, i32 0, i32 0
  %282 = load i32, ptr %281, align 8, !tbaa !133
  %283 = and i32 %282, 512
  %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 92
  %288 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %287, i32 0, i32 11
  %289 = load i32, ptr %288, align 8, !tbaa !134
  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 !135
  %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 88
  store i32 %295, ptr %297, align 8, !tbaa !121
  %298 = load ptr, ptr %8, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiContext, ptr %298, i32 0, i32 13
  %300 = load double, ptr %299, align 8, !tbaa !136
  %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 90
  store float %301, ptr %303, align 8, !tbaa !137
  %304 = load ptr, ptr %10, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiWindow, ptr %304, i32 0, i32 61
  store i16 0, ptr %305, align 4, !tbaa !138
  %306 = load ptr, ptr %8, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ImGuiContext, ptr %306, i32 0, i32 34
  %308 = load i32, ptr %307, align 8, !tbaa !139
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %307, align 8, !tbaa !139
  %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 62
  store i16 %310, ptr %312, align 2, !tbaa !140
  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 !131
  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 121
  %320 = load ptr, ptr %319, align 8, !tbaa !141
  %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 122
  %325 = load ptr, ptr %324, align 8, !tbaa !142
  %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.155, ptr noundef @.str.3, i32 noundef 7458, 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 92
  %335 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %334, i32 0, i32 0
  %336 = load i32, ptr %335, align 8, !tbaa !133
  %337 = and i32 %336, 4096
  %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 92
  %343 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %342, i32 0, i32 19
  %344 = load i32, ptr %343, align 8, !tbaa !143
  %345 = load ptr, ptr %8, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ImGuiContext, ptr %345, i32 0, i32 92
  %347 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %346, i32 0, i32 4
  %348 = load i32, ptr %347, align 8, !tbaa !144
  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 !104, !range !100, !noundef !101
  %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) #12
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.ImGuiWindow, ptr %353, i32 0, i32 123
  %355 = load i32, ptr %354, align 8, !tbaa !145
  %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 121
  %360 = load ptr, ptr %359, align 8, !tbaa !141
  %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 !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #12
  %365 = load i8, ptr %17, align 1, !tbaa !104, !range !100, !noundef !101
  %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 !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #12
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiWindow, ptr %373, i32 0, i32 118
  %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 !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiWindow, ptr %380, i32 0, i32 118
  %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 !104
  %387 = load i8, ptr %17, align 1, !tbaa !104, !range !100, !noundef !101
  %388 = trunc i8 %387 to i1
  br i1 %388, label %392, label %389

389:                                              ; preds = %370
  %390 = load i8, ptr %18, align 1, !tbaa !104, !range !100, !noundef !101
  %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 !131
  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 118
  %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 121
  %406 = load ptr, ptr %405, align 8, !tbaa !141
  %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.156, ptr noundef @.str.3, i32 noundef 7473, 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 92
  %414 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %413, i32 0, i32 0
  %415 = load i32, ptr %414, align 8, !tbaa !133
  %416 = and i32 %415, -17
  store i32 %416, ptr %414, align 8, !tbaa !133
  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 118
  %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 !104, !range !100, !noundef !101
  %426 = trunc i8 %425 to i1
  br i1 %426, label %442, label %427

427:                                              ; preds = %424
  %428 = load i8, ptr %19, align 1, !tbaa !104, !range !100, !noundef !101
  %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 51
  %433 = load i8, ptr %432, align 8, !tbaa !130, !range !100, !noundef !101
  %434 = trunc i8 %433 to i1
  br i1 %434, label %442, label %435

435:                                              ; preds = %430
  %436 = load i8, ptr %16, align 1, !tbaa !104, !range !100, !noundef !101
  %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 51
  store i8 1, ptr %440, align 8, !tbaa !130
  %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 118
  %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 118
  %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 118
  %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) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #12
  br label %460

460:                                              ; preds = %459, %349
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #12
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.ImGuiWindow, ptr %461, i32 0, i32 118
  %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 121
  %469 = load ptr, ptr %468, align 8, !tbaa !141
  %470 = getelementptr inbounds %struct.ImGuiDockNode, ptr %469, i32 0, i32 16
  %471 = load ptr, ptr %470, align 8, !tbaa !146
  %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 121
  %476 = load ptr, ptr %475, align 8, !tbaa !141
  %477 = getelementptr inbounds %struct.ImGuiDockNode, ptr %476, i32 0, i32 16
  %478 = load ptr, ptr %477, align 8, !tbaa !146
  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 32
  %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 32
  %487 = call noundef nonnull align 8 dereferenceable(116) 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 !150
  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) #12
  %494 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %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 102
  %508 = load ptr, ptr %507, align 8, !tbaa !152
  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.157, ptr noundef @.str.3, i32 noundef 7493, 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 77
  %526 = getelementptr inbounds %struct.ImVector.32, ptr %525, i32 0, i32 0
  %527 = load i32, ptr %526, align 8, !tbaa !153
  %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 77
  %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 37
  store ptr %535, ptr %537, align 8, !tbaa !154
  %538 = load ptr, ptr %8, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiContext, ptr %538, i32 0, i32 32
  %540 = load ptr, ptr %8, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 32
  %542 = getelementptr inbounds %struct.ImVector.5, ptr %541, i32 0, i32 0
  %543 = load i32, ptr %542, align 8, !tbaa !122
  %544 = add nsw i32 %543, 1
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %539, i32 noundef %544)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  %545 = load ptr, ptr %8, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 32
  %547 = call noundef nonnull align 8 dereferenceable(116) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %546)
  store ptr %547, ptr %23, align 8, !tbaa !5
  %548 = load ptr, ptr %10, align 8, !tbaa !5
  %549 = load ptr, ptr %23, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %549, i32 0, i32 0
  store ptr %548, ptr %550, align 8, !tbaa !150
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiContext, ptr %551, i32 0, i32 91
  %553 = load ptr, ptr %23, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %553, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %554, ptr align 8 %552, i64 80, i1 false), !tbaa.struct !155
  %555 = load i32, ptr %7, align 4, !tbaa !9
  %556 = and i32 %555, 33554432
  %557 = icmp ne i32 %556, 0
  br i1 %557, label %558, label %564

558:                                              ; preds = %534
  %559 = load ptr, ptr %8, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.ImGuiContext, ptr %559, i32 0, i32 88
  %561 = load i32, ptr %560, align 8, !tbaa !157
  %562 = and i32 %561, 1024
  %563 = icmp ne i32 %562, 0
  br label %564

564:                                              ; preds = %558, %534
  %565 = phi i1 [ false, %534 ], [ %563, %558 ]
  %566 = load ptr, ptr %23, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %566, i32 0, i32 3
  %568 = zext i1 %565 to i8
  store i8 %568, ptr %567, align 2, !tbaa !158
  %569 = load ptr, ptr %23, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %569, i32 0, i32 5
  store float 0.000000e+00, ptr %570, align 8, !tbaa !159
  %571 = load ptr, ptr %23, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %571, i32 0, i32 2
  call void @_ZN5ImGui23ErrorRecoveryStoreStateEP23ImGuiErrorRecoveryState(ptr noundef %572)
  %573 = load ptr, ptr %23, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %573, i32 0, i32 2
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiContext, ptr %575, i32 0, i32 285
  store ptr %574, ptr %576, align 8, !tbaa !160
  %577 = load i32, ptr %7, align 4, !tbaa !9
  %578 = and i32 %577, 268435456
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %580, label %585

580:                                              ; preds = %564
  %581 = load ptr, ptr %8, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiContext, ptr %581, i32 0, i32 225
  %583 = load i32, ptr %582, align 4, !tbaa !161
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr %582, align 4, !tbaa !161
  br label %585

585:                                              ; preds = %580, %564
  %586 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %587 = trunc i8 %586 to i1
  br i1 %587, label %588, label %671

588:                                              ; preds = %585
  %589 = load ptr, ptr %10, align 8, !tbaa !5
  %590 = load i32, ptr %7, align 4, !tbaa !9
  %591 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %589, i32 noundef %590, ptr noundef %591)
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = load ptr, ptr %10, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiWindow, ptr %593, i32 0, i32 103
  store ptr %592, ptr %594, align 8, !tbaa !162
  %595 = load ptr, ptr %10, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.ImGuiWindow, ptr %595, i32 0, i32 104
  %597 = load ptr, ptr %596, align 8, !tbaa !163
  %598 = load ptr, ptr %10, align 8, !tbaa !5
  %599 = icmp ne ptr %597, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %588
  %601 = load ptr, ptr %21, align 8, !tbaa !5
  br label %603

602:                                              ; preds = %588
  br label %603

603:                                              ; preds = %602, %600
  %604 = phi ptr [ %601, %600 ], [ null, %602 ]
  %605 = load ptr, ptr %10, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImGuiWindow, ptr %605, i32 0, i32 109
  store ptr %604, ptr %606, align 8, !tbaa !164
  %607 = load ptr, ptr %10, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.ImGuiWindow, ptr %607, i32 0, i32 109
  %609 = load ptr, ptr %608, align 8, !tbaa !164
  %610 = icmp eq ptr %609, null
  br i1 %610, label %611, label %633

611:                                              ; preds = %603
  %612 = load ptr, ptr %10, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImGuiWindow, ptr %612, i32 0, i32 121
  %614 = load ptr, ptr %613, align 8, !tbaa !141
  %615 = icmp ne ptr %614, null
  br i1 %615, label %616, label %633

616:                                              ; preds = %611
  %617 = load ptr, ptr %10, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImGuiWindow, ptr %617, i32 0, i32 121
  %619 = load ptr, ptr %618, align 8, !tbaa !141
  %620 = getelementptr inbounds %struct.ImGuiDockNode, ptr %619, i32 0, i32 4
  %621 = load i32, ptr %620, align 8, !tbaa !165
  %622 = and i32 %621, 262144
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %624, label %632

624:                                              ; preds = %616
  %625 = load ptr, ptr %10, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiWindow, ptr %625, i32 0, i32 121
  %627 = load ptr, ptr %626, align 8, !tbaa !141
  %628 = getelementptr inbounds %struct.ImGuiDockNode, ptr %627, i32 0, i32 16
  %629 = load ptr, ptr %628, align 8, !tbaa !146
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiWindow, ptr %630, i32 0, i32 109
  store ptr %629, ptr %631, align 8, !tbaa !164
  br label %632

632:                                              ; preds = %624, %616
  br label %633

633:                                              ; preds = %632, %611, %603
  %634 = load ptr, ptr %10, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ImGuiWindow, ptr %634, i32 0, i32 6
  %636 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %635, i32 0, i32 2
  %637 = load i32, ptr %636, align 8, !tbaa !166
  %638 = icmp ne i32 %637, 0
  br i1 %638, label %639, label %655

639:                                              ; preds = %633
  %640 = load ptr, ptr %10, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiWindow, ptr %640, i32 0, i32 6
  %642 = getelementptr inbounds %struct.ImGuiWindowClass, ptr %641, i32 0, i32 2
  %643 = load i32, ptr %642, align 8, !tbaa !166
  %644 = call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %643)
  %645 = load ptr, ptr %10, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.ImGuiWindow, ptr %645, i32 0, i32 109
  store ptr %644, ptr %646, align 8, !tbaa !164
  %647 = load ptr, ptr %10, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.ImGuiWindow, ptr %647, i32 0, i32 109
  %649 = load ptr, ptr %648, align 8, !tbaa !164
  %650 = icmp ne ptr %649, null
  br i1 %650, label %651, label %652

651:                                              ; preds = %639
  br label %654

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

653:                                              ; No predecessors!
  br label %654

654:                                              ; preds = %653, %651
  br label %655

655:                                              ; preds = %654, %633
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = icmp ne ptr %656, null
  br i1 %657, label %658, label %666

658:                                              ; preds = %655
  %659 = load ptr, ptr %22, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiWindow, ptr %659, i32 0, i32 95
  %661 = load float, ptr %660, align 4, !tbaa !167
  %662 = load ptr, ptr %22, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImGuiWindow, ptr %662, i32 0, i32 94
  %664 = load float, ptr %663, align 8, !tbaa !168
  %665 = fmul float %661, %664
  br label %667

666:                                              ; preds = %655
  br label %667

667:                                              ; preds = %666, %658
  %668 = phi float [ %665, %658 ], [ 1.000000e+00, %666 ]
  %669 = load ptr, ptr %10, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.ImGuiWindow, ptr %669, i32 0, i32 95
  store float %668, ptr %670, align 4, !tbaa !167
  br label %671

671:                                              ; preds = %667, %585
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiWindow, ptr %672, i32 0, i32 5
  %674 = load i32, ptr %673, align 4, !tbaa !135
  %675 = and i32 %674, 256
  %676 = icmp ne i32 %675, 0
  br i1 %676, label %677, label %681

677:                                              ; preds = %671
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiContext, ptr %678, i32 0, i32 87
  %680 = load i32, ptr %679, align 4, !tbaa !169
  br label %685

681:                                              ; preds = %671
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.ImGuiWindow, ptr %682, i32 0, i32 2
  %684 = load i32, ptr %683, align 8, !tbaa !106
  br label %685

685:                                              ; preds = %681, %677
  %686 = phi i32 [ %680, %677 ], [ %684, %681 ]
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %686)
  %687 = load ptr, ptr %8, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.ImGuiContext, ptr %687, i32 0, i32 87
  %689 = load i32, ptr %688, align 4, !tbaa !169
  %690 = load ptr, ptr %10, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiWindow, ptr %690, i32 0, i32 114
  store i32 %689, ptr %691, align 8, !tbaa !170
  %692 = load i32, ptr %7, align 4, !tbaa !9
  %693 = and i32 %692, 67108864
  %694 = icmp ne i32 %693, 0
  br i1 %694, label %695, label %720

695:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #12
  %696 = load ptr, ptr %8, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.ImGuiContext, ptr %696, i32 0, i32 101
  %698 = load ptr, ptr %8, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.ImGuiContext, ptr %698, i32 0, i32 102
  %700 = getelementptr inbounds %struct.ImVector.14, ptr %699, i32 0, i32 0
  %701 = load i32, ptr %700, align 8, !tbaa !125
  %702 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %697, i32 noundef %701)
  store ptr %702, ptr %24, align 8, !tbaa !5
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = load ptr, ptr %24, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiPopupData, ptr %704, i32 0, i32 2
  store ptr %703, ptr %705, align 8, !tbaa !129
  %706 = load ptr, ptr %21, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.ImGuiWindow, ptr %706, i32 0, i32 78
  %708 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %707, i32 0, i32 15
  %709 = load i32, ptr %708, align 8, !tbaa !171
  %710 = load ptr, ptr %24, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImGuiPopupData, ptr %710, i32 0, i32 4
  store i32 %709, ptr %711, align 8, !tbaa !172
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ImGuiContext, ptr %712, i32 0, i32 102
  %714 = load ptr, ptr %24, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %713, ptr noundef nonnull align 8 dereferenceable(52) %714)
  %715 = load ptr, ptr %24, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiPopupData, ptr %715, i32 0, i32 0
  %717 = load i32, ptr %716, align 8, !tbaa !127
  %718 = load ptr, ptr %10, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.ImGuiWindow, ptr %718, i32 0, i32 32
  store i32 %717, ptr %719, align 8, !tbaa !126
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  br label %720

720:                                              ; preds = %695, %685
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #12
  store i8 0, ptr %25, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #12
  store i8 0, ptr %26, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #12
  store i8 0, ptr %27, align 1, !tbaa !104
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiContext, ptr %721, i32 0, i32 92
  %723 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %722, i32 0, i32 0
  %724 = load i32, ptr %723, align 8, !tbaa !133
  %725 = and i32 %724, 1
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %781

727:                                              ; preds = %720
  %728 = load ptr, ptr %10, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 73
  %730 = load i32, ptr %729, align 8
  %731 = shl i32 %730, 24
  %732 = ashr i32 %731, 24
  %733 = load ptr, ptr %8, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiContext, ptr %733, i32 0, i32 92
  %735 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %734, i32 0, i32 1
  %736 = load i32, ptr %735, align 4, !tbaa !173
  %737 = and i32 %732, %736
  %738 = icmp ne i32 %737, 0
  %739 = zext i1 %738 to i8
  store i8 %739, ptr %25, align 1, !tbaa !104
  %740 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %771

742:                                              ; preds = %727
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiContext, ptr %743, i32 0, i32 92
  %745 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %744, i32 0, i32 6
  %746 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %745)
  %747 = fcmp ogt float %746, 0x3EE4F8B580000000
  br i1 %747, label %748, label %771

748:                                              ; preds = %742
  %749 = load ptr, ptr %8, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImGuiContext, ptr %749, i32 0, i32 92
  %751 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %750, i32 0, i32 5
  %752 = load ptr, ptr %10, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiWindow, ptr %752, i32 0, i32 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %753, ptr align 4 %751, i64 8, i1 false), !tbaa.struct !174
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.ImGuiContext, ptr %754, i32 0, i32 92
  %756 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %755, i32 0, i32 6
  %757 = load ptr, ptr %10, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ImGuiWindow, ptr %757, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %758, ptr align 4 %756, i64 8, i1 false), !tbaa.struct !174
  %759 = load ptr, ptr %10, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.ImGuiWindow, ptr %759, i32 0, i32 73
  %761 = load i32, ptr %760, align 8
  %762 = shl i32 %761, 24
  %763 = ashr i32 %762, 24
  %764 = and i32 %763, -15
  %765 = load i32, ptr %760, align 8
  %766 = and i32 %764, 255
  %767 = and i32 %765, -256
  %768 = or i32 %767, %766
  store i32 %768, ptr %760, align 8
  %769 = shl i32 %766, 24
  %770 = ashr i32 %769, 24
  br label %780

771:                                              ; preds = %742, %727
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = load ptr, ptr %8, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImGuiContext, ptr %773, i32 0, i32 92
  %775 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %774, i32 0, i32 5
  %776 = load ptr, ptr %8, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiContext, ptr %776, i32 0, i32 92
  %778 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %777, i32 0, i32 1
  %779 = load i32, ptr %778, align 4, !tbaa !173
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %772, ptr noundef nonnull align 4 dereferenceable(8) %775, i32 noundef %779)
  br label %780

780:                                              ; preds = %771, %748
  br label %781

781:                                              ; preds = %780, %720
  %782 = load ptr, ptr %8, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiContext, ptr %782, i32 0, i32 92
  %784 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %783, i32 0, i32 0
  %785 = load i32, ptr %784, align 8, !tbaa !133
  %786 = and i32 %785, 2
  %787 = icmp ne i32 %786, 0
  br i1 %787, label %788, label %885

788:                                              ; preds = %781
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiWindow, ptr %789, i32 0, i32 73
  %791 = load i32, ptr %790, align 8
  %792 = shl i32 %791, 16
  %793 = ashr i32 %792, 24
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiContext, ptr %794, i32 0, i32 92
  %796 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %795, i32 0, i32 2
  %797 = load i32, ptr %796, align 8, !tbaa !175
  %798 = and i32 %793, %797
  %799 = icmp ne i32 %798, 0
  br i1 %799, label %800, label %807

800:                                              ; preds = %788
  %801 = load ptr, ptr %8, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.ImGuiContext, ptr %801, i32 0, i32 92
  %803 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %802, i32 0, i32 7
  %804 = getelementptr inbounds %struct.ImVec2, ptr %803, i32 0, i32 0
  %805 = load float, ptr %804, align 4, !tbaa !176
  %806 = fcmp ogt float %805, 0.000000e+00
  br label %807

807:                                              ; preds = %800, %788
  %808 = phi i1 [ false, %788 ], [ %806, %800 ]
  %809 = zext i1 %808 to i8
  store i8 %809, ptr %26, align 1, !tbaa !104
  %810 = load ptr, ptr %10, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.ImGuiWindow, ptr %810, i32 0, i32 73
  %812 = load i32, ptr %811, align 8
  %813 = shl i32 %812, 16
  %814 = ashr i32 %813, 24
  %815 = load ptr, ptr %8, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.ImGuiContext, ptr %815, i32 0, i32 92
  %817 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %816, i32 0, i32 2
  %818 = load i32, ptr %817, align 8, !tbaa !175
  %819 = and i32 %814, %818
  %820 = icmp ne i32 %819, 0
  br i1 %820, label %821, label %828

821:                                              ; preds = %807
  %822 = load ptr, ptr %8, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ImGuiContext, ptr %822, i32 0, i32 92
  %824 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %823, i32 0, i32 7
  %825 = getelementptr inbounds %struct.ImVec2, ptr %824, i32 0, i32 1
  %826 = load float, ptr %825, align 4, !tbaa !177
  %827 = fcmp ogt float %826, 0.000000e+00
  br label %828

828:                                              ; preds = %821, %807
  %829 = phi i1 [ false, %807 ], [ %827, %821 ]
  %830 = zext i1 %829 to i8
  store i8 %830, ptr %27, align 1, !tbaa !104
  %831 = load ptr, ptr %10, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 5
  %833 = load i32, ptr %832, align 4, !tbaa !135
  %834 = and i32 %833, 4
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %853

836:                                              ; preds = %828
  %837 = load ptr, ptr %10, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.ImGuiWindow, ptr %837, i32 0, i32 73
  %839 = load i32, ptr %838, align 8
  %840 = shl i32 %839, 16
  %841 = ashr i32 %840, 24
  %842 = and i32 %841, 4
  %843 = icmp eq i32 %842, 0
  br i1 %843, label %844, label %853

844:                                              ; preds = %836
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 13
  %847 = getelementptr inbounds %struct.ImVec2, ptr %846, i32 0, i32 0
  %848 = load float, ptr %847, align 8, !tbaa !178
  %849 = load ptr, ptr %8, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiContext, ptr %849, i32 0, i32 92
  %851 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %850, i32 0, i32 7
  %852 = getelementptr inbounds %struct.ImVec2, ptr %851, i32 0, i32 0
  store float %848, ptr %852, align 4, !tbaa !176
  br label %853

853:                                              ; preds = %844, %836, %828
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiWindow, ptr %854, i32 0, i32 5
  %856 = load i32, ptr %855, align 4, !tbaa !135
  %857 = and i32 %856, 8
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %859, label %876

859:                                              ; preds = %853
  %860 = load ptr, ptr %10, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.ImGuiWindow, ptr %860, i32 0, i32 73
  %862 = load i32, ptr %861, align 8
  %863 = shl i32 %862, 16
  %864 = ashr i32 %863, 24
  %865 = and i32 %864, 4
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %876

867:                                              ; preds = %859
  %868 = load ptr, ptr %10, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.ImGuiWindow, ptr %868, i32 0, i32 13
  %870 = getelementptr inbounds %struct.ImVec2, ptr %869, i32 0, i32 1
  %871 = load float, ptr %870, align 4, !tbaa !179
  %872 = load ptr, ptr %8, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImGuiContext, ptr %872, i32 0, i32 92
  %874 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %873, i32 0, i32 7
  %875 = getelementptr inbounds %struct.ImVec2, ptr %874, i32 0, i32 1
  store float %871, ptr %875, align 4, !tbaa !177
  br label %876

876:                                              ; preds = %867, %859, %853
  %877 = load ptr, ptr %10, align 8, !tbaa !5
  %878 = load ptr, ptr %8, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ImGuiContext, ptr %878, i32 0, i32 92
  %880 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %879, i32 0, i32 7
  %881 = load ptr, ptr %8, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiContext, ptr %881, i32 0, i32 92
  %883 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %882, i32 0, i32 2
  %884 = load i32, ptr %883, align 8, !tbaa !175
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %877, ptr noundef nonnull align 4 dereferenceable(8) %880, i32 noundef %884)
  br label %885

885:                                              ; preds = %876, %781
  %886 = load ptr, ptr %8, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiContext, ptr %886, i32 0, i32 92
  %888 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %887, i32 0, i32 0
  %889 = load i32, ptr %888, align 8, !tbaa !133
  %890 = and i32 %889, 128
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %931

892:                                              ; preds = %885
  %893 = load ptr, ptr %8, align 8, !tbaa !5
  %894 = getelementptr inbounds %struct.ImGuiContext, ptr %893, i32 0, i32 92
  %895 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %894, i32 0, i32 9
  %896 = getelementptr inbounds %struct.ImVec2, ptr %895, i32 0, i32 0
  %897 = load float, ptr %896, align 4, !tbaa !180
  %898 = fcmp oge float %897, 0.000000e+00
  br i1 %898, label %899, label %911

899:                                              ; preds = %892
  %900 = load ptr, ptr %8, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiContext, ptr %900, i32 0, i32 92
  %902 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %901, i32 0, i32 9
  %903 = getelementptr inbounds %struct.ImVec2, ptr %902, i32 0, i32 0
  %904 = load float, ptr %903, align 4, !tbaa !180
  %905 = load ptr, ptr %10, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.ImGuiWindow, ptr %905, i32 0, i32 35
  %907 = getelementptr inbounds %struct.ImVec2, ptr %906, i32 0, i32 0
  store float %904, ptr %907, align 4, !tbaa !181
  %908 = load ptr, ptr %10, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImGuiWindow, ptr %908, i32 0, i32 36
  %910 = getelementptr inbounds %struct.ImVec2, ptr %909, i32 0, i32 0
  store float 0.000000e+00, ptr %910, align 4, !tbaa !182
  br label %911

911:                                              ; preds = %899, %892
  %912 = load ptr, ptr %8, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.ImGuiContext, ptr %912, i32 0, i32 92
  %914 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %913, i32 0, i32 9
  %915 = getelementptr inbounds %struct.ImVec2, ptr %914, i32 0, i32 1
  %916 = load float, ptr %915, align 4, !tbaa !183
  %917 = fcmp oge float %916, 0.000000e+00
  br i1 %917, label %918, label %930

918:                                              ; preds = %911
  %919 = load ptr, ptr %8, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.ImGuiContext, ptr %919, i32 0, i32 92
  %921 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %920, i32 0, i32 9
  %922 = getelementptr inbounds %struct.ImVec2, ptr %921, i32 0, i32 1
  %923 = load float, ptr %922, align 4, !tbaa !183
  %924 = load ptr, ptr %10, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImGuiWindow, ptr %924, i32 0, i32 35
  %926 = getelementptr inbounds %struct.ImVec2, ptr %925, i32 0, i32 1
  store float %923, ptr %926, align 4, !tbaa !184
  %927 = load ptr, ptr %10, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiWindow, ptr %927, i32 0, i32 36
  %929 = getelementptr inbounds %struct.ImVec2, ptr %928, i32 0, i32 1
  store float 0.000000e+00, ptr %929, align 4, !tbaa !185
  br label %930

930:                                              ; preds = %918, %911
  br label %931

931:                                              ; preds = %930, %885
  %932 = load ptr, ptr %8, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiContext, ptr %932, i32 0, i32 92
  %934 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %933, i32 0, i32 0
  %935 = load i32, ptr %934, align 8, !tbaa !133
  %936 = and i32 %935, 4
  %937 = icmp ne i32 %936, 0
  br i1 %937, label %938, label %944

938:                                              ; preds = %931
  %939 = load ptr, ptr %8, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImGuiContext, ptr %939, i32 0, i32 92
  %941 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %940, i32 0, i32 8
  %942 = load ptr, ptr %10, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiWindow, ptr %942, i32 0, i32 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %943, ptr align 4 %941, i64 8, i1 false), !tbaa.struct !174
  br label %951

944:                                              ; preds = %931
  %945 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %946 = trunc i8 %945 to i1
  br i1 %946, label %947, label %950

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

950:                                              ; preds = %947, %944
  br label %951

951:                                              ; preds = %950, %938
  %952 = load ptr, ptr %8, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImGuiContext, ptr %952, i32 0, i32 92
  %954 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %953, i32 0, i32 0
  %955 = load i32, ptr %954, align 8, !tbaa !133
  %956 = and i32 %955, 8192
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %964

958:                                              ; preds = %951
  %959 = load ptr, ptr %8, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiContext, ptr %959, i32 0, i32 92
  %961 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %960, i32 0, i32 20
  %962 = load ptr, ptr %10, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.ImGuiWindow, ptr %962, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %963, ptr align 4 %961, i64 30, i1 false), !tbaa.struct !186
  br label %964

964:                                              ; preds = %958, %951
  %965 = load ptr, ptr %8, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.ImGuiContext, ptr %965, i32 0, i32 92
  %967 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %966, i32 0, i32 0
  %968 = load i32, ptr %967, align 8, !tbaa !133
  %969 = and i32 %968, 8
  %970 = icmp ne i32 %969, 0
  br i1 %970, label %971, label %982

971:                                              ; preds = %964
  %972 = load ptr, ptr %10, align 8, !tbaa !5
  %973 = load ptr, ptr %8, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiContext, ptr %973, i32 0, i32 92
  %975 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %974, i32 0, i32 13
  %976 = load i8, ptr %975, align 1, !tbaa !187, !range !100, !noundef !101
  %977 = trunc i8 %976 to i1
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.ImGuiContext, ptr %978, i32 0, i32 92
  %980 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %979, i32 0, i32 3
  %981 = load i32, ptr %980, align 4, !tbaa !188
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %972, i1 noundef zeroext %977, i32 noundef %981)
  br label %982

982:                                              ; preds = %971, %964
  %983 = load ptr, ptr %8, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiContext, ptr %983, i32 0, i32 92
  %985 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %984, i32 0, i32 0
  %986 = load i32, ptr %985, align 8, !tbaa !133
  %987 = and i32 %986, 32
  %988 = icmp ne i32 %987, 0
  br i1 %988, label %989, label %991

989:                                              ; preds = %982
  %990 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %990, i32 noundef 0)
  br label %991

991:                                              ; preds = %989, %982
  %992 = load ptr, ptr %10, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiWindow, ptr %992, i32 0, i32 51
  %994 = load i8, ptr %993, align 8, !tbaa !130, !range !100, !noundef !101
  %995 = trunc i8 %994 to i1
  br i1 %995, label %996, label %998

996:                                              ; preds = %991
  %997 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %997, i32 noundef 8, i1 noundef zeroext false)
  br label %998

998:                                              ; preds = %996, %991
  %999 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %999)
  %1000 = load ptr, ptr %23, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %1000, i32 0, i32 3
  %1002 = load i8, ptr %1001, align 2, !tbaa !158, !range !100, !noundef !101
  %1003 = trunc i8 %1002 to i1
  br i1 %1003, label %1004, label %1011

1004:                                             ; preds = %998
  %1005 = load ptr, ptr %10, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.ImGuiWindow, ptr %1005, i32 0, i32 104
  %1007 = load ptr, ptr %1006, align 8, !tbaa !163
  %1008 = load ptr, ptr %10, align 8, !tbaa !5
  %1009 = icmp eq ptr %1007, %1008
  br i1 %1009, label %1010, label %1011

1010:                                             ; preds = %1004
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  br label %1011

1011:                                             ; preds = %1010, %1004, %998
  %1012 = load ptr, ptr %8, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.ImGuiContext, ptr %1012, i32 0, i32 37
  store ptr null, ptr %1013, align 8, !tbaa !154
  %1014 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %1015 = trunc i8 %1014 to i1
  br i1 %1015, label %1016, label %3713

1016:                                             ; preds = %1011
  %1017 = load ptr, ptr %10, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImGuiWindow, ptr %1017, i32 0, i32 50
  %1019 = load i8, ptr %1018, align 1, !tbaa !189, !range !100, !noundef !101
  %1020 = trunc i8 %1019 to i1
  br i1 %1020, label %3713, label %1021

1021:                                             ; preds = %1016
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #12
  %1022 = load i32, ptr %7, align 4, !tbaa !9
  %1023 = and i32 %1022, 16777216
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1025, label %1029

1025:                                             ; preds = %1021
  %1026 = load i32, ptr %7, align 4, !tbaa !9
  %1027 = and i32 %1026, 33554432
  %1028 = icmp ne i32 %1027, 0
  br label %1029

1029:                                             ; preds = %1025, %1021
  %1030 = phi i1 [ false, %1021 ], [ %1028, %1025 ]
  %1031 = zext i1 %1030 to i8
  store i8 %1031, ptr %29, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #12
  %1032 = load ptr, ptr %10, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.ImGuiWindow, ptr %1032, i32 0, i32 70
  %1034 = load i8, ptr %1033, align 1, !tbaa !190
  %1035 = sext i8 %1034 to i32
  %1036 = icmp sgt i32 %1035, 0
  %1037 = zext i1 %1036 to i8
  store i8 %1037, ptr %30, align 1, !tbaa !104
  %1038 = load ptr, ptr %10, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.ImGuiWindow, ptr %1038, i32 0, i32 44
  store i8 1, ptr %1039, align 1, !tbaa !191
  %1040 = load ptr, ptr %6, align 8, !tbaa !5
  %1041 = icmp ne ptr %1040, null
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.ImGuiWindow, ptr %1042, i32 0, i32 55
  %1044 = zext i1 %1041 to i8
  store i8 %1044, ptr %1043, align 4, !tbaa !192
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %1045 = load ptr, ptr %10, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.ImGuiWindow, ptr %1045, i32 0, i32 84
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1046, ptr align 4 %31, i64 16, i1 false), !tbaa.struct !193
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #12
  %1047 = load ptr, ptr %10, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiWindow, ptr %1047, i32 0, i32 77
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1048, i32 noundef 1)
  %1049 = load ptr, ptr %10, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiWindow, ptr %1049, i32 0, i32 100
  %1051 = load ptr, ptr %1050, align 8, !tbaa !194
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(216) %1051)
  %1052 = load ptr, ptr %10, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.ImGuiWindow, ptr %1052, i32 0, i32 78
  %1054 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1053, i32 0, i32 29
  store i32 -1, ptr %1054, align 8, !tbaa !195
  %1055 = load i32, ptr %7, align 4, !tbaa !9
  %1056 = and i32 %1055, 8388608
  %1057 = icmp ne i32 %1056, 0
  br i1 %1057, label %1058, label %1065

1058:                                             ; preds = %1029
  %1059 = load ptr, ptr %10, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImGuiWindow, ptr %1059, i32 0, i32 100
  %1061 = load ptr, ptr %1060, align 8, !tbaa !194
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(216) %1061, i32 noundef 2)
  %1062 = load ptr, ptr %10, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiWindow, ptr %1062, i32 0, i32 100
  %1064 = load ptr, ptr %1063, align 8, !tbaa !194
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(216) %1064, i32 noundef 1)
  br label %1065

1065:                                             ; preds = %1058, %1029
  %1066 = load ptr, ptr %10, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiWindow, ptr %1066, i32 0, i32 117
  %1068 = load i8, ptr %1067, align 4, !tbaa !196, !range !100, !noundef !101
  %1069 = trunc i8 %1068 to i1
  br i1 %1069, label %1070, label %1072

1070:                                             ; preds = %1065
  %1071 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %1071)
  br label %1072

1072:                                             ; preds = %1070, %1065
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  store i8 0, ptr %33, align 1, !tbaa !104
  %1073 = load ptr, ptr %10, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiWindow, ptr %1073, i32 0, i32 7
  %1075 = load ptr, ptr %1074, align 8, !tbaa !197
  %1076 = icmp ne ptr %1075, null
  br i1 %1076, label %1077, label %1085

1077:                                             ; preds = %1072
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiWindow, ptr %1078, i32 0, i32 7
  %1080 = load ptr, ptr %1079, align 8, !tbaa !197
  %1081 = getelementptr inbounds %struct.ImGuiViewportP, ptr %1080, i32 0, i32 1
  %1082 = load ptr, ptr %1081, align 8, !tbaa !198
  %1083 = load ptr, ptr %10, align 8, !tbaa !5
  %1084 = icmp eq ptr %1082, %1083
  br i1 %1084, label %1091, label %1085

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

1091:                                             ; preds = %1085, %1077
  store i8 1, ptr %33, align 1, !tbaa !104
  br label %1109

1092:                                             ; preds = %1085
  %1093 = load ptr, ptr %8, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiContext, ptr %1093, i32 0, i32 166
  %1095 = load ptr, ptr %1094, align 8, !tbaa !204
  %1096 = icmp ne ptr %1095, null
  br i1 %1096, label %1097, label %1102

1097:                                             ; preds = %1092
  %1098 = load i32, ptr %7, align 4, !tbaa !9
  %1099 = and i32 %1098, 131072
  %1100 = icmp eq i32 %1099, 0
  br i1 %1100, label %1101, label %1102

1101:                                             ; preds = %1097
  store i8 1, ptr %33, align 1, !tbaa !104
  br label %1108

1102:                                             ; preds = %1097, %1092
  %1103 = load i32, ptr %7, align 4, !tbaa !9
  %1104 = and i32 %1103, 268435456
  %1105 = icmp ne i32 %1104, 0
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1102
  store i8 1, ptr %33, align 1, !tbaa !104
  br label %1107

1107:                                             ; preds = %1106, %1102
  br label %1108

1108:                                             ; preds = %1107, %1101
  br label %1109

1109:                                             ; preds = %1108, %1091
  %1110 = load i8, ptr %33, align 1, !tbaa !104, !range !100, !noundef !101
  %1111 = trunc i8 %1110 to i1
  br i1 %1111, label %1112, label %1138

1112:                                             ; preds = %1109
  %1113 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %1114 = trunc i8 %1113 to i1
  br i1 %1114, label %1138, label %1115

1115:                                             ; preds = %1112
  %1116 = load ptr, ptr %5, align 8, !tbaa !5
  %1117 = load ptr, ptr %10, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.ImGuiWindow, ptr %1117, i32 0, i32 1
  %1119 = load ptr, ptr %1118, align 8, !tbaa !205
  %1120 = call i32 @strcmp(ptr noundef %1116, ptr noundef %1119) #15
  %1121 = icmp ne i32 %1120, 0
  br i1 %1121, label %1122, label %1138

1122:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #12
  %1123 = load ptr, ptr %10, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiWindow, ptr %1123, i32 0, i32 28
  %1125 = load i32, ptr %1124, align 8, !tbaa !206
  %1126 = sext i32 %1125 to i64
  store i64 %1126, ptr %34, align 8, !tbaa !207
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiWindow, ptr %1127, i32 0, i32 1
  %1129 = load ptr, ptr %1128, align 8, !tbaa !205
  %1130 = load ptr, ptr %5, align 8, !tbaa !5
  %1131 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %1129, ptr noundef %34, ptr noundef %1130)
  %1132 = load ptr, ptr %10, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.ImGuiWindow, ptr %1132, i32 0, i32 1
  store ptr %1131, ptr %1133, align 8, !tbaa !205
  %1134 = load i64, ptr %34, align 8, !tbaa !207
  %1135 = trunc i64 %1134 to i32
  %1136 = load ptr, ptr %10, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiWindow, ptr %1136, i32 0, i32 28
  store i32 %1135, ptr %1137, align 8, !tbaa !206
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #12
  br label %1138

1138:                                             ; preds = %1122, %1115, %1112, %1109
  %1139 = load ptr, ptr %10, align 8, !tbaa !5
  %1140 = load ptr, ptr %10, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.ImGuiWindow, ptr %1140, i32 0, i32 14
  %1142 = load ptr, ptr %10, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiWindow, ptr %1142, i32 0, i32 15
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %1139, ptr noundef %1141, ptr noundef %1143)
  %1144 = load ptr, ptr %10, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 69
  %1146 = load i8, ptr %1145, align 4, !tbaa !209
  %1147 = sext i8 %1146 to i32
  %1148 = icmp sgt i32 %1147, 0
  br i1 %1148, label %1149, label %1154

1149:                                             ; preds = %1138
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 69
  %1152 = load i8, ptr %1151, align 4, !tbaa !209
  %1153 = add i8 %1152, -1
  store i8 %1153, ptr %1151, align 4, !tbaa !209
  br label %1154

1154:                                             ; preds = %1149, %1138
  %1155 = load ptr, ptr %10, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiWindow, ptr %1155, i32 0, i32 70
  %1157 = load i8, ptr %1156, align 1, !tbaa !190
  %1158 = sext i8 %1157 to i32
  %1159 = icmp sgt i32 %1158, 0
  br i1 %1159, label %1160, label %1165

1160:                                             ; preds = %1154
  %1161 = load ptr, ptr %10, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.ImGuiWindow, ptr %1161, i32 0, i32 70
  %1163 = load i8, ptr %1162, align 1, !tbaa !190
  %1164 = add i8 %1163, -1
  store i8 %1164, ptr %1162, align 1, !tbaa !190
  br label %1165

1165:                                             ; preds = %1160, %1154
  %1166 = load ptr, ptr %10, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiWindow, ptr %1166, i32 0, i32 71
  %1168 = load i8, ptr %1167, align 2, !tbaa !210
  %1169 = sext i8 %1168 to i32
  %1170 = icmp sgt i32 %1169, 0
  br i1 %1170, label %1171, label %1176

1171:                                             ; preds = %1165
  %1172 = load ptr, ptr %10, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiWindow, ptr %1172, i32 0, i32 71
  %1174 = load i8, ptr %1173, align 2, !tbaa !210
  %1175 = add i8 %1174, -1
  store i8 %1175, ptr %1173, align 2, !tbaa !210
  br label %1176

1176:                                             ; preds = %1171, %1165
  %1177 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %1178 = trunc i8 %1177 to i1
  br i1 %1178, label %1179, label %1188

1179:                                             ; preds = %1176
  %1180 = load i8, ptr %26, align 1, !tbaa !104, !range !100, !noundef !101
  %1181 = trunc i8 %1180 to i1
  br i1 %1181, label %1182, label %1185

1182:                                             ; preds = %1179
  %1183 = load i8, ptr %27, align 1, !tbaa !104, !range !100, !noundef !101
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1188, label %1185

1185:                                             ; preds = %1182, %1179
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.ImGuiWindow, ptr %1186, i32 0, i32 70
  store i8 1, ptr %1187, align 1, !tbaa !190
  br label %1188

1188:                                             ; preds = %1185, %1182, %1176
  %1189 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %1190 = trunc i8 %1189 to i1
  br i1 %1190, label %1191, label %1227

1191:                                             ; preds = %1188
  %1192 = load i32, ptr %7, align 4, !tbaa !9
  %1193 = and i32 %1192, 100663296
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1195, label %1227

1195:                                             ; preds = %1191
  %1196 = load ptr, ptr %10, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.ImGuiWindow, ptr %1196, i32 0, i32 70
  store i8 1, ptr %1197, align 1, !tbaa !190
  %1198 = load i32, ptr %7, align 4, !tbaa !9
  %1199 = and i32 %1198, 64
  %1200 = icmp ne i32 %1199, 0
  br i1 %1200, label %1201, label %1226

1201:                                             ; preds = %1195
  %1202 = load i8, ptr %26, align 1, !tbaa !104, !range !100, !noundef !101
  %1203 = trunc i8 %1202 to i1
  br i1 %1203, label %1211, label %1204

1204:                                             ; preds = %1201
  %1205 = load ptr, ptr %10, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiWindow, ptr %1205, i32 0, i32 13
  %1207 = getelementptr inbounds %struct.ImVec2, ptr %1206, i32 0, i32 0
  store float 0.000000e+00, ptr %1207, align 8, !tbaa !178
  %1208 = load ptr, ptr %10, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.ImGuiWindow, ptr %1208, i32 0, i32 12
  %1210 = getelementptr inbounds %struct.ImVec2, ptr %1209, i32 0, i32 0
  store float 0.000000e+00, ptr %1210, align 8, !tbaa !211
  br label %1211

1211:                                             ; preds = %1204, %1201
  %1212 = load i8, ptr %27, align 1, !tbaa !104, !range !100, !noundef !101
  %1213 = trunc i8 %1212 to i1
  br i1 %1213, label %1221, label %1214

1214:                                             ; preds = %1211
  %1215 = load ptr, ptr %10, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImGuiWindow, ptr %1215, i32 0, i32 13
  %1217 = getelementptr inbounds %struct.ImVec2, ptr %1216, i32 0, i32 1
  store float 0.000000e+00, ptr %1217, align 4, !tbaa !179
  %1218 = load ptr, ptr %10, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiWindow, ptr %1218, i32 0, i32 12
  %1220 = getelementptr inbounds %struct.ImVec2, ptr %1219, i32 0, i32 1
  store float 0.000000e+00, ptr %1220, align 4, !tbaa !212
  br label %1221

1221:                                             ; preds = %1214, %1211
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 15
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1223, ptr align 4 %35, i64 8, i1 false), !tbaa.struct !174
  %1224 = load ptr, ptr %10, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiWindow, ptr %1224, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1225, ptr align 4 %1223, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #12
  br label %1226

1226:                                             ; preds = %1221, %1195
  br label %1227

1227:                                             ; preds = %1226, %1191, %1188
  %1228 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef %1228)
  %1229 = load ptr, ptr %10, align 8, !tbaa !5
  %1230 = load ptr, ptr %10, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.ImGuiWindow, ptr %1230, i32 0, i32 7
  %1232 = load ptr, ptr %1231, align 8, !tbaa !197
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1229, ptr noundef %1232)
  %1233 = load ptr, ptr %8, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImGuiContext, ptr %1233, i32 0, i32 2
  %1235 = getelementptr inbounds %struct.ImGuiIO, ptr %1234, i32 0, i32 0
  %1236 = load i32, ptr %1235, align 8, !tbaa !213
  %1237 = and i32 %1236, 32768
  %1238 = icmp ne i32 %1237, 0
  br i1 %1238, label %1239, label %1245

1239:                                             ; preds = %1227
  %1240 = load ptr, ptr %10, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.ImGuiWindow, ptr %1240, i32 0, i32 7
  %1242 = load ptr, ptr %1241, align 8, !tbaa !197
  %1243 = getelementptr inbounds %struct.ImGuiViewport, ptr %1242, i32 0, i32 6
  %1244 = load float, ptr %1243, align 8, !tbaa !214
  br label %1246

1245:                                             ; preds = %1227
  br label %1246

1246:                                             ; preds = %1245, %1239
  %1247 = phi float [ %1244, %1239 ], [ 1.000000e+00, %1245 ]
  %1248 = load ptr, ptr %10, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiWindow, ptr %1248, i32 0, i32 96
  store float %1247, ptr %1249, align 8, !tbaa !215
  %1250 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1250)
  %1251 = load ptr, ptr %10, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.ImGuiWindow, ptr %1251, i32 0, i32 3
  %1253 = load i32, ptr %1252, align 4, !tbaa !131
  store i32 %1253, ptr %7, align 4, !tbaa !9
  %1254 = load ptr, ptr %10, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiWindow, ptr %1254, i32 0, i32 118
  %1256 = load i8, ptr %1255, align 1
  %1257 = and i8 %1256, 1
  %1258 = trunc i8 %1257 to i1
  br i1 %1258, label %1269, label %1259

1259:                                             ; preds = %1246
  %1260 = load i32, ptr %7, align 4, !tbaa !9
  %1261 = and i32 %1260, 16777216
  %1262 = icmp ne i32 %1261, 0
  br i1 %1262, label %1263, label %1269

1263:                                             ; preds = %1259
  %1264 = load ptr, ptr %9, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiStyle, ptr %1264, i32 0, i32 10
  %1266 = load float, ptr %1265, align 4, !tbaa !216
  %1267 = load ptr, ptr %10, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiWindow, ptr %1267, i32 0, i32 19
  store float %1266, ptr %1268, align 4, !tbaa !217
  br label %1289

1269:                                             ; preds = %1259, %1246
  %1270 = load i32, ptr %7, align 4, !tbaa !9
  %1271 = and i32 %1270, 100663296
  %1272 = icmp ne i32 %1271, 0
  br i1 %1272, label %1273, label %1281

1273:                                             ; preds = %1269
  %1274 = load i32, ptr %7, align 4, !tbaa !9
  %1275 = and i32 %1274, 134217728
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1281, label %1277

1277:                                             ; preds = %1273
  %1278 = load ptr, ptr %9, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiStyle, ptr %1278, i32 0, i32 12
  %1280 = load float, ptr %1279, align 4, !tbaa !218
  br label %1285

1281:                                             ; preds = %1273, %1269
  %1282 = load ptr, ptr %9, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.ImGuiStyle, ptr %1282, i32 0, i32 4
  %1284 = load float, ptr %1283, align 4, !tbaa !219
  br label %1285

1285:                                             ; preds = %1281, %1277
  %1286 = phi float [ %1280, %1277 ], [ %1284, %1281 ]
  %1287 = load ptr, ptr %10, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.ImGuiWindow, ptr %1287, i32 0, i32 19
  store float %1286, ptr %1288, align 4, !tbaa !217
  br label %1289

1289:                                             ; preds = %1285, %1263
  %1290 = load ptr, ptr %9, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiStyle, ptr %1290, i32 0, i32 2
  %1292 = load ptr, ptr %10, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ImGuiWindow, ptr %1292, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1293, ptr align 4 %1291, i64 8, i1 false), !tbaa.struct !174
  %1294 = load ptr, ptr %10, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiWindow, ptr %1294, i32 0, i32 118
  %1296 = load i8, ptr %1295, align 1
  %1297 = and i8 %1296, 1
  %1298 = trunc i8 %1297 to i1
  br i1 %1298, label %1332, label %1299

1299:                                             ; preds = %1289
  %1300 = load i32, ptr %7, align 4, !tbaa !9
  %1301 = and i32 %1300, 16777216
  %1302 = icmp ne i32 %1301, 0
  br i1 %1302, label %1303, label %1332

1303:                                             ; preds = %1299
  %1304 = load i32, ptr %7, align 4, !tbaa !9
  %1305 = and i32 %1304, 67108864
  %1306 = icmp ne i32 %1305, 0
  br i1 %1306, label %1332, label %1307

1307:                                             ; preds = %1303
  %1308 = load ptr, ptr %10, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.ImGuiWindow, ptr %1308, i32 0, i32 5
  %1310 = load i32, ptr %1309, align 4, !tbaa !135
  %1311 = and i32 %1310, 2
  %1312 = icmp ne i32 %1311, 0
  br i1 %1312, label %1332, label %1313

1313:                                             ; preds = %1307
  %1314 = load ptr, ptr %10, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiWindow, ptr %1314, i32 0, i32 19
  %1316 = load float, ptr %1315, align 4, !tbaa !217
  %1317 = fcmp oeq float %1316, 0.000000e+00
  br i1 %1317, label %1318, label %1332

1318:                                             ; preds = %1313
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %1319 = load i32, ptr %7, align 4, !tbaa !9
  %1320 = and i32 %1319, 1024
  %1321 = icmp ne i32 %1320, 0
  br i1 %1321, label %1322, label %1327

1322:                                             ; preds = %1318
  %1323 = load ptr, ptr %9, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiStyle, ptr %1323, i32 0, i32 2
  %1325 = getelementptr inbounds %struct.ImVec2, ptr %1324, i32 0, i32 1
  %1326 = load float, ptr %1325, align 4, !tbaa !220
  br label %1328

1327:                                             ; preds = %1318
  br label %1328

1328:                                             ; preds = %1327, %1322
  %1329 = phi float [ %1326, %1322 ], [ 0.000000e+00, %1327 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef 0.000000e+00, float noundef %1329)
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1331, ptr align 4 %36, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  br label %1332

1332:                                             ; preds = %1328, %1313, %1307, %1303, %1299, %1289
  %1333 = load ptr, ptr %10, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.ImGuiWindow, ptr %1333, i32 0, i32 17
  %1335 = getelementptr inbounds %struct.ImVec2, ptr %1334, i32 0, i32 0
  %1336 = load float, ptr %1335, align 8, !tbaa !221
  %1337 = load ptr, ptr %9, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.ImGuiStyle, ptr %1337, i32 0, i32 16
  %1339 = getelementptr inbounds %struct.ImVec2, ptr %1338, i32 0, i32 0
  %1340 = load float, ptr %1339, align 4, !tbaa !222
  %1341 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1336, float noundef %1340)
  %1342 = load ptr, ptr %8, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.ImGuiContext, ptr %1342, i32 0, i32 92
  %1344 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1343, i32 0, i32 21
  %1345 = getelementptr inbounds %struct.ImVec2, ptr %1344, i32 0, i32 0
  %1346 = load float, ptr %1345, align 4, !tbaa !223
  %1347 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1341, float noundef %1346)
  %1348 = load ptr, ptr %10, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.ImGuiWindow, ptr %1348, i32 0, i32 78
  %1350 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1349, i32 0, i32 22
  %1351 = getelementptr inbounds %struct.ImVec2, ptr %1350, i32 0, i32 0
  store float %1347, ptr %1351, align 4, !tbaa !224
  %1352 = load ptr, ptr %8, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiContext, ptr %1352, i32 0, i32 92
  %1354 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %1353, i32 0, i32 21
  %1355 = getelementptr inbounds %struct.ImVec2, ptr %1354, i32 0, i32 1
  %1356 = load float, ptr %1355, align 4, !tbaa !225
  %1357 = load ptr, ptr %10, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.ImGuiWindow, ptr %1357, i32 0, i32 78
  %1359 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1358, i32 0, i32 22
  %1360 = getelementptr inbounds %struct.ImVec2, ptr %1359, i32 0, i32 1
  store float %1356, ptr %1360, align 4, !tbaa !226
  %1361 = load i32, ptr %7, align 4, !tbaa !9
  %1362 = and i32 %1361, 1
  %1363 = icmp ne i32 %1362, 0
  br i1 %1363, label %1364, label %1365

1364:                                             ; preds = %1332
  br label %1375

1365:                                             ; preds = %1332
  %1366 = load ptr, ptr %8, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiContext, ptr %1366, i32 0, i32 8
  %1368 = load float, ptr %1367, align 8, !tbaa !227
  %1369 = load ptr, ptr %8, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiContext, ptr %1369, i32 0, i32 4
  %1371 = getelementptr inbounds %struct.ImGuiStyle, ptr %1370, i32 0, i32 13
  %1372 = getelementptr inbounds %struct.ImVec2, ptr %1371, i32 0, i32 1
  %1373 = load float, ptr %1372, align 4, !tbaa !228
  %1374 = call float @llvm.fmuladd.f32(float %1373, float 2.000000e+00, float %1368)
  br label %1375

1375:                                             ; preds = %1365, %1364
  %1376 = phi float [ 0.000000e+00, %1364 ], [ %1374, %1365 ]
  %1377 = load ptr, ptr %10, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImGuiWindow, ptr %1377, i32 0, i32 20
  store float %1376, ptr %1378, align 8, !tbaa !229
  %1379 = load i32, ptr %7, align 4, !tbaa !9
  %1380 = and i32 %1379, 1024
  %1381 = icmp ne i32 %1380, 0
  br i1 %1381, label %1382, label %1398

1382:                                             ; preds = %1375
  %1383 = load ptr, ptr %10, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.ImGuiWindow, ptr %1383, i32 0, i32 78
  %1385 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1384, i32 0, i32 22
  %1386 = getelementptr inbounds %struct.ImVec2, ptr %1385, i32 0, i32 1
  %1387 = load float, ptr %1386, align 4, !tbaa !226
  %1388 = load ptr, ptr %8, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.ImGuiContext, ptr %1388, i32 0, i32 8
  %1390 = load float, ptr %1389, align 8, !tbaa !227
  %1391 = fadd float %1387, %1390
  %1392 = load ptr, ptr %8, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.ImGuiContext, ptr %1392, i32 0, i32 4
  %1394 = getelementptr inbounds %struct.ImGuiStyle, ptr %1393, i32 0, i32 13
  %1395 = getelementptr inbounds %struct.ImVec2, ptr %1394, i32 0, i32 1
  %1396 = load float, ptr %1395, align 4, !tbaa !228
  %1397 = call float @llvm.fmuladd.f32(float %1396, float 2.000000e+00, float %1391)
  br label %1399

1398:                                             ; preds = %1375
  br label %1399

1399:                                             ; preds = %1398, %1382
  %1400 = phi float [ %1397, %1382 ], [ 0.000000e+00, %1398 ]
  %1401 = load ptr, ptr %10, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.ImGuiWindow, ptr %1401, i32 0, i32 21
  store float %1400, ptr %1402, align 4, !tbaa !230
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiContext, ptr %1403, i32 0, i32 8
  %1405 = load float, ptr %1404, align 8, !tbaa !227
  %1406 = load ptr, ptr %10, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.ImGuiWindow, ptr %1406, i32 0, i32 97
  store float %1405, ptr %1407, align 4, !tbaa !231
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #12
  %1408 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %1409 = trunc i8 %1408 to i1
  %1410 = zext i1 %1409 to i8
  store i8 %1410, ptr %37, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #12
  %1411 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %1412 = trunc i8 %1411 to i1
  %1413 = zext i1 %1412 to i8
  store i8 %1413, ptr %38, align 1, !tbaa !104
  %1414 = load i8, ptr %26, align 1, !tbaa !104, !range !100, !noundef !101
  %1415 = trunc i8 %1414 to i1
  br i1 %1415, label %1416, label %1423

1416:                                             ; preds = %1399
  %1417 = load ptr, ptr %10, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiWindow, ptr %1417, i32 0, i32 16
  %1419 = getelementptr inbounds %struct.ImVec2, ptr %1418, i32 0, i32 0
  %1420 = load float, ptr %1419, align 8, !tbaa !232
  %1421 = fcmp une float %1420, 0.000000e+00
  br i1 %1421, label %1422, label %1423

1422:                                             ; preds = %1416
  store i8 1, ptr %37, align 1, !tbaa !104
  br label %1423

1423:                                             ; preds = %1422, %1416, %1399
  %1424 = load i8, ptr %27, align 1, !tbaa !104, !range !100, !noundef !101
  %1425 = trunc i8 %1424 to i1
  br i1 %1425, label %1426, label %1433

1426:                                             ; preds = %1423
  %1427 = load ptr, ptr %10, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.ImGuiWindow, ptr %1427, i32 0, i32 16
  %1429 = getelementptr inbounds %struct.ImVec2, ptr %1428, i32 0, i32 1
  %1430 = load float, ptr %1429, align 4, !tbaa !233
  %1431 = fcmp une float %1430, 0.000000e+00
  br i1 %1431, label %1432, label %1433

1432:                                             ; preds = %1426
  store i8 1, ptr %38, align 1, !tbaa !104
  br label %1433

1433:                                             ; preds = %1432, %1426, %1423
  %1434 = load i32, ptr %7, align 4, !tbaa !9
  %1435 = and i32 %1434, 1
  %1436 = icmp ne i32 %1435, 0
  br i1 %1436, label %1515, label %1437

1437:                                             ; preds = %1433
  %1438 = load i32, ptr %7, align 4, !tbaa !9
  %1439 = and i32 %1438, 32
  %1440 = icmp ne i32 %1439, 0
  br i1 %1440, label %1515, label %1441

1441:                                             ; preds = %1437
  %1442 = load ptr, ptr %10, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.ImGuiWindow, ptr %1442, i32 0, i32 118
  %1444 = load i8, ptr %1443, align 1
  %1445 = and i8 %1444, 1
  %1446 = trunc i8 %1445 to i1
  br i1 %1446, label %1515, label %1447

1447:                                             ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #12
  %1448 = load ptr, ptr %10, align 8, !tbaa !5
  %1449 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1448)
  %1450 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 0
  %1451 = extractvalue { <2 x float>, <2 x float> } %1449, 0
  store <2 x float> %1451, ptr %1450, align 4
  %1452 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %39, i32 0, i32 1
  %1453 = extractvalue { <2 x float>, <2 x float> } %1449, 1
  store <2 x float> %1453, ptr %1452, align 4
  %1454 = load ptr, ptr %8, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.ImGuiContext, ptr %1454, i32 0, i32 38
  %1456 = load ptr, ptr %1455, align 8, !tbaa !234
  %1457 = load ptr, ptr %10, align 8, !tbaa !5
  %1458 = icmp eq ptr %1456, %1457
  br i1 %1458, label %1459, label %1493

1459:                                             ; preds = %1447
  %1460 = load ptr, ptr %8, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.ImGuiContext, ptr %1460, i32 0, i32 51
  %1462 = load i32, ptr %1461, align 4, !tbaa !235
  %1463 = icmp eq i32 %1462, 0
  br i1 %1463, label %1464, label %1493

1464:                                             ; preds = %1459
  %1465 = load ptr, ptr %8, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.ImGuiContext, ptr %1465, i32 0, i32 52
  %1467 = load i32, ptr %1466, align 8, !tbaa !236
  %1468 = icmp eq i32 %1467, 0
  br i1 %1468, label %1469, label %1493

1469:                                             ; preds = %1464
  %1470 = load ptr, ptr %8, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiContext, ptr %1470, i32 0, i32 59
  %1472 = load i32, ptr %1471, align 4, !tbaa !237
  %1473 = icmp eq i32 %1472, 0
  br i1 %1473, label %1474, label %1493

1474:                                             ; preds = %1469
  %1475 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 0
  %1476 = getelementptr inbounds %struct.ImRect, ptr %39, i32 0, i32 1
  %1477 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1475, ptr noundef nonnull align 4 dereferenceable(8) %1476, i1 noundef zeroext true)
  br i1 %1477, label %1478, label %1493

1478:                                             ; preds = %1474
  %1479 = load ptr, ptr %8, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImGuiContext, ptr %1479, i32 0, i32 2
  %1481 = getelementptr inbounds %struct.ImGuiIO, ptr %1480, i32 0, i32 92
  %1482 = getelementptr inbounds [5 x i16], ptr %1481, i64 0, i64 0
  %1483 = load i16, ptr %1482, align 2, !tbaa !238
  %1484 = zext i16 %1483 to i32
  %1485 = icmp eq i32 %1484, 2
  br i1 %1485, label %1486, label %1492

1486:                                             ; preds = %1478
  %1487 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 656)
  %1488 = icmp eq i32 %1487, -1
  br i1 %1488, label %1489, label %1492

1489:                                             ; preds = %1486
  %1490 = load ptr, ptr %10, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.ImGuiWindow, ptr %1490, i32 0, i32 48
  store i8 1, ptr %1491, align 1, !tbaa !239
  br label %1492

1492:                                             ; preds = %1489, %1486, %1478
  br label %1493

1493:                                             ; preds = %1492, %1474, %1469, %1464, %1459, %1447
  %1494 = load ptr, ptr %10, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiWindow, ptr %1494, i32 0, i32 48
  %1496 = load i8, ptr %1495, align 1, !tbaa !239, !range !100, !noundef !101
  %1497 = trunc i8 %1496 to i1
  br i1 %1497, label %1498, label %1514

1498:                                             ; preds = %1493
  %1499 = load ptr, ptr %10, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.ImGuiWindow, ptr %1499, i32 0, i32 47
  %1501 = load i8, ptr %1500, align 4, !tbaa !240, !range !100, !noundef !101
  %1502 = trunc i8 %1501 to i1
  %1503 = xor i1 %1502, true
  %1504 = load ptr, ptr %10, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiWindow, ptr %1504, i32 0, i32 47
  %1506 = zext i1 %1503 to i8
  store i8 %1506, ptr %1505, align 4, !tbaa !240
  %1507 = load ptr, ptr %10, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.ImGuiWindow, ptr %1507, i32 0, i32 47
  %1509 = load i8, ptr %1508, align 4, !tbaa !240, !range !100, !noundef !101
  %1510 = trunc i8 %1509 to i1
  br i1 %1510, label %1512, label %1511

1511:                                             ; preds = %1498
  store i8 1, ptr %38, align 1, !tbaa !104
  br label %1512

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

1514:                                             ; preds = %1512, %1493
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #12
  br label %1518

1515:                                             ; preds = %1441, %1437, %1433
  %1516 = load ptr, ptr %10, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.ImGuiWindow, ptr %1516, i32 0, i32 47
  store i8 0, ptr %1517, align 4, !tbaa !240
  br label %1518

1518:                                             ; preds = %1515, %1514
  %1519 = load ptr, ptr %10, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.ImGuiWindow, ptr %1519, i32 0, i32 48
  store i8 0, ptr %1520, align 1, !tbaa !239
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %1521 = load ptr, ptr %10, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiWindow, ptr %1521, i32 0, i32 38
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 %1522, i64 8, i1 false), !tbaa.struct !174
  %1523 = load ptr, ptr %10, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.ImGuiWindow, ptr %1523, i32 0, i32 22
  store float 0.000000e+00, ptr %1524, align 8, !tbaa !241
  %1525 = load ptr, ptr %10, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.ImGuiWindow, ptr %1525, i32 0, i32 24
  store float 0.000000e+00, ptr %1526, align 8, !tbaa !242
  %1527 = load ptr, ptr %10, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiWindow, ptr %1527, i32 0, i32 20
  %1529 = load float, ptr %1528, align 8, !tbaa !229
  %1530 = load ptr, ptr %10, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.ImGuiWindow, ptr %1530, i32 0, i32 21
  %1532 = load float, ptr %1531, align 4, !tbaa !230
  %1533 = fadd float %1529, %1532
  %1534 = load ptr, ptr %10, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiWindow, ptr %1534, i32 0, i32 23
  store float %1533, ptr %1535, align 4, !tbaa !243
  %1536 = load ptr, ptr %10, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.ImGuiWindow, ptr %1536, i32 0, i32 25
  store float 0.000000e+00, ptr %1537, align 4, !tbaa !244
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1538 = load ptr, ptr %10, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.ImGuiWindow, ptr %1538, i32 0, i32 38
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1539, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  %1540 = load ptr, ptr %10, align 8, !tbaa !5
  %1541 = load ptr, ptr %10, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ImGuiWindow, ptr %1541, i32 0, i32 15
  %1543 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1540, ptr noundef nonnull align 4 dereferenceable(8) %1542)
  store <2 x float> %1543, ptr %42, align 4
  %1544 = load i32, ptr %7, align 4, !tbaa !9
  %1545 = and i32 %1544, 64
  %1546 = icmp ne i32 %1545, 0
  br i1 %1546, label %1547, label %1571

1547:                                             ; preds = %1518
  %1548 = load ptr, ptr %10, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.ImGuiWindow, ptr %1548, i32 0, i32 47
  %1550 = load i8, ptr %1549, align 4, !tbaa !240, !range !100, !noundef !101
  %1551 = trunc i8 %1550 to i1
  br i1 %1551, label %1571, label %1552

1552:                                             ; preds = %1547
  %1553 = load i8, ptr %26, align 1, !tbaa !104, !range !100, !noundef !101
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1561, label %1555

1555:                                             ; preds = %1552
  %1556 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1557 = load float, ptr %1556, align 4, !tbaa !245
  %1558 = load ptr, ptr %10, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.ImGuiWindow, ptr %1558, i32 0, i32 13
  %1560 = getelementptr inbounds %struct.ImVec2, ptr %1559, i32 0, i32 0
  store float %1557, ptr %1560, align 8, !tbaa !178
  store i8 1, ptr %37, align 1, !tbaa !104
  br label %1561

1561:                                             ; preds = %1555, %1552
  %1562 = load i8, ptr %27, align 1, !tbaa !104, !range !100, !noundef !101
  %1563 = trunc i8 %1562 to i1
  br i1 %1563, label %1570, label %1564

1564:                                             ; preds = %1561
  %1565 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1566 = load float, ptr %1565, align 4, !tbaa !246
  %1567 = load ptr, ptr %10, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.ImGuiWindow, ptr %1567, i32 0, i32 13
  %1569 = getelementptr inbounds %struct.ImVec2, ptr %1568, i32 0, i32 1
  store float %1566, ptr %1569, align 4, !tbaa !179
  store i8 1, ptr %38, align 1, !tbaa !104
  br label %1570

1570:                                             ; preds = %1564, %1561
  br label %1652

1571:                                             ; preds = %1547, %1518
  %1572 = load ptr, ptr %10, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.ImGuiWindow, ptr %1572, i32 0, i32 64
  %1574 = load i8, ptr %1573, align 2, !tbaa !247
  %1575 = sext i8 %1574 to i32
  %1576 = icmp sgt i32 %1575, 0
  br i1 %1576, label %1583, label %1577

1577:                                             ; preds = %1571
  %1578 = load ptr, ptr %10, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.ImGuiWindow, ptr %1578, i32 0, i32 65
  %1580 = load i8, ptr %1579, align 1, !tbaa !248
  %1581 = sext i8 %1580 to i32
  %1582 = icmp sgt i32 %1581, 0
  br i1 %1582, label %1583, label %1651

1583:                                             ; preds = %1577, %1571
  %1584 = load i8, ptr %26, align 1, !tbaa !104, !range !100, !noundef !101
  %1585 = trunc i8 %1584 to i1
  br i1 %1585, label %1613, label %1586

1586:                                             ; preds = %1583
  %1587 = load ptr, ptr %10, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.ImGuiWindow, ptr %1587, i32 0, i32 64
  %1589 = load i8, ptr %1588, align 2, !tbaa !247
  %1590 = sext i8 %1589 to i32
  %1591 = icmp sgt i32 %1590, 0
  br i1 %1591, label %1592, label %1613

1592:                                             ; preds = %1586
  %1593 = load ptr, ptr %10, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.ImGuiWindow, ptr %1593, i32 0, i32 66
  %1595 = load i8, ptr %1594, align 4, !tbaa !249, !range !100, !noundef !101
  %1596 = trunc i8 %1595 to i1
  br i1 %1596, label %1597, label %1605

1597:                                             ; preds = %1592
  %1598 = load ptr, ptr %10, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.ImGuiWindow, ptr %1598, i32 0, i32 13
  %1600 = getelementptr inbounds %struct.ImVec2, ptr %1599, i32 0, i32 0
  %1601 = load float, ptr %1600, align 8, !tbaa !178
  %1602 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1603 = load float, ptr %1602, align 4, !tbaa !245
  %1604 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1601, float noundef %1603)
  br label %1608

1605:                                             ; preds = %1592
  %1606 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 0
  %1607 = load float, ptr %1606, align 4, !tbaa !245
  br label %1608

1608:                                             ; preds = %1605, %1597
  %1609 = phi float [ %1604, %1597 ], [ %1607, %1605 ]
  %1610 = load ptr, ptr %10, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.ImGuiWindow, ptr %1610, i32 0, i32 13
  %1612 = getelementptr inbounds %struct.ImVec2, ptr %1611, i32 0, i32 0
  store float %1609, ptr %1612, align 8, !tbaa !178
  store i8 1, ptr %37, align 1, !tbaa !104
  br label %1613

1613:                                             ; preds = %1608, %1586, %1583
  %1614 = load i8, ptr %27, align 1, !tbaa !104, !range !100, !noundef !101
  %1615 = trunc i8 %1614 to i1
  br i1 %1615, label %1643, label %1616

1616:                                             ; preds = %1613
  %1617 = load ptr, ptr %10, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.ImGuiWindow, ptr %1617, i32 0, i32 65
  %1619 = load i8, ptr %1618, align 1, !tbaa !248
  %1620 = sext i8 %1619 to i32
  %1621 = icmp sgt i32 %1620, 0
  br i1 %1621, label %1622, label %1643

1622:                                             ; preds = %1616
  %1623 = load ptr, ptr %10, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.ImGuiWindow, ptr %1623, i32 0, i32 66
  %1625 = load i8, ptr %1624, align 4, !tbaa !249, !range !100, !noundef !101
  %1626 = trunc i8 %1625 to i1
  br i1 %1626, label %1627, label %1635

1627:                                             ; preds = %1622
  %1628 = load ptr, ptr %10, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.ImGuiWindow, ptr %1628, i32 0, i32 13
  %1630 = getelementptr inbounds %struct.ImVec2, ptr %1629, i32 0, i32 1
  %1631 = load float, ptr %1630, align 4, !tbaa !179
  %1632 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1633 = load float, ptr %1632, align 4, !tbaa !246
  %1634 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1631, float noundef %1633)
  br label %1638

1635:                                             ; preds = %1622
  %1636 = getelementptr inbounds %struct.ImVec2, ptr %42, i32 0, i32 1
  %1637 = load float, ptr %1636, align 4, !tbaa !246
  br label %1638

1638:                                             ; preds = %1635, %1627
  %1639 = phi float [ %1634, %1627 ], [ %1637, %1635 ]
  %1640 = load ptr, ptr %10, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.ImGuiWindow, ptr %1640, i32 0, i32 13
  %1642 = getelementptr inbounds %struct.ImVec2, ptr %1641, i32 0, i32 1
  store float %1639, ptr %1642, align 4, !tbaa !179
  store i8 1, ptr %38, align 1, !tbaa !104
  br label %1643

1643:                                             ; preds = %1638, %1616, %1613
  %1644 = load ptr, ptr %10, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.ImGuiWindow, ptr %1644, i32 0, i32 47
  %1646 = load i8, ptr %1645, align 4, !tbaa !240, !range !100, !noundef !101
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1650, label %1648

1648:                                             ; preds = %1643
  %1649 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1649)
  br label %1650

1650:                                             ; preds = %1648, %1643
  br label %1651

1651:                                             ; preds = %1650, %1577
  br label %1652

1652:                                             ; preds = %1651, %1570
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %1653 = load ptr, ptr %10, align 8, !tbaa !5
  %1654 = load ptr, ptr %10, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.ImGuiWindow, ptr %1654, i32 0, i32 13
  %1656 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1653, ptr noundef nonnull align 4 dereferenceable(8) %1655)
  store <2 x float> %1656, ptr %43, align 4
  %1657 = load ptr, ptr %10, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.ImGuiWindow, ptr %1657, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1658, ptr align 4 %43, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %1659 = load ptr, ptr %10, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.ImGuiWindow, ptr %1659, i32 0, i32 47
  %1661 = load i8, ptr %1660, align 4, !tbaa !240, !range !100, !noundef !101
  %1662 = trunc i8 %1661 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #12
  br i1 %1662, label %1663, label %1675

1663:                                             ; preds = %1652
  %1664 = load i32, ptr %7, align 4, !tbaa !9
  %1665 = and i32 %1664, 16777216
  %1666 = icmp ne i32 %1665, 0
  br i1 %1666, label %1675, label %1667

1667:                                             ; preds = %1663
  %1668 = load ptr, ptr %10, align 8, !tbaa !5
  %1669 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1668)
  %1670 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 0
  %1671 = extractvalue { <2 x float>, <2 x float> } %1669, 0
  store <2 x float> %1671, ptr %1670, align 4
  %1672 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %45, i32 0, i32 1
  %1673 = extractvalue { <2 x float>, <2 x float> } %1669, 1
  store <2 x float> %1673, ptr %1672, align 4
  %1674 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  store <2 x float> %1674, ptr %44, align 4
  br label %1678

1675:                                             ; preds = %1663, %1652
  %1676 = load ptr, ptr %10, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.ImGuiWindow, ptr %1676, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 8 %1677, i64 8, i1 false), !tbaa.struct !174
  br label %1678

1678:                                             ; preds = %1675, %1667
  %1679 = load ptr, ptr %10, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.ImGuiWindow, ptr %1679, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1680, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  %1681 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %1682 = trunc i8 %1681 to i1
  br i1 %1682, label %1683, label %1704

1683:                                             ; preds = %1678
  %1684 = load ptr, ptr %10, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.ImGuiWindow, ptr %1684, i32 0, i32 68
  store i32 -1, ptr %1685, align 8, !tbaa !250
  %1686 = load i32, ptr %7, align 4, !tbaa !9
  %1687 = and i32 %1686, 67108864
  %1688 = icmp ne i32 %1687, 0
  br i1 %1688, label %1689, label %1703

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

1693:                                             ; preds = %1689
  %1694 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %1695 = trunc i8 %1694 to i1
  br i1 %1695, label %1703, label %1696

1696:                                             ; preds = %1693
  %1697 = load ptr, ptr %8, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ImGuiContext, ptr %1697, i32 0, i32 102
  %1699 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1698)
  %1700 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1699, i32 0, i32 7
  %1701 = load ptr, ptr %10, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.ImGuiWindow, ptr %1701, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1702, ptr align 4 %1700, i64 8, i1 false), !tbaa.struct !174
  br label %1703

1703:                                             ; preds = %1696, %1693, %1689, %1683
  br label %1704

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

1708:                                             ; preds = %1704
  %1709 = load ptr, ptr %22, align 8, !tbaa !5
  %1710 = icmp ne ptr %1709, null
  br i1 %1710, label %1711, label %1716

1711:                                             ; preds = %1708
  %1712 = load ptr, ptr %22, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.ImGuiWindow, ptr %1712, i32 0, i32 44
  %1714 = load i8, ptr %1713, align 1, !tbaa !191, !range !100, !noundef !101
  %1715 = trunc i8 %1714 to i1
  br label %1716

1716:                                             ; preds = %1711, %1708
  %1717 = phi i1 [ false, %1708 ], [ %1715, %1711 ]
  br i1 %1717, label %1718, label %1719

1718:                                             ; preds = %1716
  br label %1721

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

1720:                                             ; No predecessors!
  br label %1721

1721:                                             ; preds = %1720, %1718
  %1722 = load ptr, ptr %22, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.ImGuiWindow, ptr %1722, i32 0, i32 78
  %1724 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1723, i32 0, i32 26
  %1725 = getelementptr inbounds %struct.ImVector.4, ptr %1724, i32 0, i32 0
  %1726 = load i32, ptr %1725, align 8, !tbaa !251
  %1727 = trunc i32 %1726 to i16
  %1728 = load ptr, ptr %10, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ImGuiWindow, ptr %1728, i32 0, i32 61
  store i16 %1727, ptr %1729, align 4, !tbaa !138
  %1730 = load ptr, ptr %22, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.ImGuiWindow, ptr %1730, i32 0, i32 78
  %1732 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1731, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1732, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1733 = load i32, ptr %7, align 4, !tbaa !9
  %1734 = and i32 %1733, 67108864
  %1735 = icmp ne i32 %1734, 0
  br i1 %1735, label %1748, label %1736

1736:                                             ; preds = %1721
  %1737 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %1738 = trunc i8 %1737 to i1
  br i1 %1738, label %1748, label %1739

1739:                                             ; preds = %1736
  %1740 = load i8, ptr %29, align 1, !tbaa !104, !range !100, !noundef !101
  %1741 = trunc i8 %1740 to i1
  br i1 %1741, label %1748, label %1742

1742:                                             ; preds = %1739
  %1743 = load ptr, ptr %22, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 78
  %1745 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1744, i32 0, i32 0
  %1746 = load ptr, ptr %10, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.ImGuiWindow, ptr %1746, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1747, ptr align 8 %1745, i64 8, i1 false), !tbaa.struct !174
  br label %1748

1748:                                             ; preds = %1742, %1739, %1736, %1721
  br label %1749

1749:                                             ; preds = %1748, %1704
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #12
  %1750 = load ptr, ptr %10, align 8, !tbaa !5
  %1751 = getelementptr inbounds %struct.ImGuiWindow, ptr %1750, i32 0, i32 74
  %1752 = getelementptr inbounds %struct.ImVec2, ptr %1751, i32 0, i32 0
  %1753 = load float, ptr %1752, align 4, !tbaa !252
  %1754 = fcmp une float %1753, 0x47EFFFFFE0000000
  br i1 %1754, label %1755, label %1761

1755:                                             ; preds = %1749
  %1756 = load ptr, ptr %10, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ImGuiWindow, ptr %1756, i32 0, i32 70
  %1758 = load i8, ptr %1757, align 1, !tbaa !190
  %1759 = sext i8 %1758 to i32
  %1760 = icmp eq i32 %1759, 0
  br label %1761

1761:                                             ; preds = %1755, %1749
  %1762 = phi i1 [ false, %1749 ], [ %1760, %1755 ]
  %1763 = zext i1 %1762 to i8
  store i8 %1763, ptr %46, align 1, !tbaa !104
  %1764 = load i8, ptr %46, align 1, !tbaa !104, !range !100, !noundef !101
  %1765 = trunc i8 %1764 to i1
  br i1 %1765, label %1766, label %1776

1766:                                             ; preds = %1761
  %1767 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %1768 = load ptr, ptr %10, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiWindow, ptr %1768, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %1770 = load ptr, ptr %10, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.ImGuiWindow, ptr %1770, i32 0, i32 12
  %1772 = load ptr, ptr %10, align 8, !tbaa !5
  %1773 = getelementptr inbounds %struct.ImGuiWindow, ptr %1772, i32 0, i32 75
  %1774 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1771, ptr noundef nonnull align 4 dereferenceable(8) %1773)
  store <2 x float> %1774, ptr %48, align 4
  %1775 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1769, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1775, ptr %47, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1767, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1818

1776:                                             ; preds = %1761
  %1777 = load i32, ptr %7, align 4, !tbaa !9
  %1778 = and i32 %1777, 268435456
  %1779 = icmp ne i32 %1778, 0
  br i1 %1779, label %1780, label %1785

1780:                                             ; preds = %1776
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #12
  %1781 = load ptr, ptr %10, align 8, !tbaa !5
  %1782 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1781)
  store <2 x float> %1782, ptr %49, align 4
  %1783 = load ptr, ptr %10, align 8, !tbaa !5
  %1784 = getelementptr inbounds %struct.ImGuiWindow, ptr %1783, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1784, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  br label %1817

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

1789:                                             ; preds = %1785
  %1790 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %1791 = trunc i8 %1790 to i1
  br i1 %1791, label %1800, label %1792

1792:                                             ; preds = %1789
  %1793 = load i8, ptr %30, align 1, !tbaa !104, !range !100, !noundef !101
  %1794 = trunc i8 %1793 to i1
  br i1 %1794, label %1795, label %1800

1795:                                             ; preds = %1792
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %1796 = load ptr, ptr %10, align 8, !tbaa !5
  %1797 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1796)
  store <2 x float> %1797, ptr %50, align 4
  %1798 = load ptr, ptr %10, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.ImGuiWindow, ptr %1798, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1799, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #12
  br label %1816

1800:                                             ; preds = %1792, %1789, %1785
  %1801 = load i32, ptr %7, align 4, !tbaa !9
  %1802 = and i32 %1801, 33554432
  %1803 = icmp ne i32 %1802, 0
  br i1 %1803, label %1804, label %1815

1804:                                             ; preds = %1800
  %1805 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %1806 = trunc i8 %1805 to i1
  br i1 %1806, label %1815, label %1807

1807:                                             ; preds = %1804
  %1808 = load i8, ptr %29, align 1, !tbaa !104, !range !100, !noundef !101
  %1809 = trunc i8 %1808 to i1
  br i1 %1809, label %1815, label %1810

1810:                                             ; preds = %1807
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #12
  %1811 = load ptr, ptr %10, align 8, !tbaa !5
  %1812 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1811)
  store <2 x float> %1812, ptr %51, align 4
  %1813 = load ptr, ptr %10, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.ImGuiWindow, ptr %1813, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1814, ptr align 4 %51, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #12
  br label %1815

1815:                                             ; preds = %1810, %1807, %1804, %1800
  br label %1816

1816:                                             ; preds = %1815, %1795
  br label %1817

1817:                                             ; preds = %1816, %1780
  br label %1818

1818:                                             ; preds = %1817, %1766
  %1819 = load ptr, ptr %10, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.ImGuiWindow, ptr %1819, i32 0, i32 10
  %1821 = load i32, ptr %1820, align 4, !tbaa !253
  %1822 = icmp sge i32 %1821, 0
  br i1 %1822, label %1823, label %1888

1823:                                             ; preds = %1818
  %1824 = load ptr, ptr %10, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiWindow, ptr %1824, i32 0, i32 43
  %1826 = load i8, ptr %1825, align 8, !tbaa !254, !range !100, !noundef !101
  %1827 = trunc i8 %1826 to i1
  br i1 %1827, label %1888, label %1828

1828:                                             ; preds = %1823
  %1829 = load ptr, ptr %10, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.ImGuiWindow, ptr %1829, i32 0, i32 7
  %1831 = load ptr, ptr %1830, align 8, !tbaa !197
  %1832 = getelementptr inbounds %struct.ImGuiViewport, ptr %1831, i32 0, i32 1
  %1833 = load i32, ptr %1832, align 4, !tbaa !255
  %1834 = and i32 %1833, 4096
  %1835 = icmp ne i32 %1834, 0
  br i1 %1835, label %1888, label %1836

1836:                                             ; preds = %1828
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #12
  %1837 = load ptr, ptr %10, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.ImGuiWindow, ptr %1837, i32 0, i32 7
  %1839 = load ptr, ptr %1838, align 8, !tbaa !197
  %1840 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %1839)
  %1841 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 0
  %1842 = extractvalue { <2 x float>, <2 x float> } %1840, 0
  store <2 x float> %1842, ptr %1841, align 4
  %1843 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %52, i32 0, i32 1
  %1844 = extractvalue { <2 x float>, <2 x float> } %1840, 1
  store <2 x float> %1844, ptr %1843, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #12
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1845)
  %1847 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 0
  %1848 = extractvalue { <2 x float>, <2 x float> } %1846, 0
  store <2 x float> %1848, ptr %1847, align 4
  %1849 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %53, i32 0, i32 1
  %1850 = extractvalue { <2 x float>, <2 x float> } %1846, 1
  store <2 x float> %1850, ptr %1849, align 4
  %1851 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %52, ptr noundef nonnull align 4 dereferenceable(16) %53)
  %1852 = xor i1 %1851, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #12
  br i1 %1852, label %1853, label %1887

1853:                                             ; preds = %1836
  %1854 = load ptr, ptr %10, align 8, !tbaa !5
  %1855 = load ptr, ptr %10, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiWindow, ptr %1855, i32 0, i32 2
  %1857 = load i32, ptr %1856, align 8, !tbaa !106
  %1858 = load ptr, ptr %10, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiWindow, ptr %1858, i32 0, i32 11
  %1860 = load ptr, ptr %10, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.ImGuiWindow, ptr %1860, i32 0, i32 12
  %1862 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %1854, i32 noundef %1857, ptr noundef nonnull align 4 dereferenceable(8) %1859, ptr noundef nonnull align 4 dereferenceable(8) %1861, i32 noundef 32)
  %1863 = load ptr, ptr %10, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.ImGuiWindow, ptr %1863, i32 0, i32 7
  store ptr %1862, ptr %1864, align 8, !tbaa !197
  %1865 = load ptr, ptr %10, align 8, !tbaa !5
  %1866 = load ptr, ptr %10, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.ImGuiWindow, ptr %1866, i32 0, i32 7
  %1868 = load ptr, ptr %1867, align 8, !tbaa !197
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1865, ptr noundef %1868)
  %1869 = load ptr, ptr %8, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.ImGuiContext, ptr %1869, i32 0, i32 2
  %1871 = getelementptr inbounds %struct.ImGuiIO, ptr %1870, i32 0, i32 0
  %1872 = load i32, ptr %1871, align 8, !tbaa !213
  %1873 = and i32 %1872, 32768
  %1874 = icmp ne i32 %1873, 0
  br i1 %1874, label %1875, label %1881

1875:                                             ; preds = %1853
  %1876 = load ptr, ptr %10, align 8, !tbaa !5
  %1877 = getelementptr inbounds %struct.ImGuiWindow, ptr %1876, i32 0, i32 7
  %1878 = load ptr, ptr %1877, align 8, !tbaa !197
  %1879 = getelementptr inbounds %struct.ImGuiViewport, ptr %1878, i32 0, i32 6
  %1880 = load float, ptr %1879, align 8, !tbaa !214
  br label %1882

1881:                                             ; preds = %1853
  br label %1882

1882:                                             ; preds = %1881, %1875
  %1883 = phi float [ %1880, %1875 ], [ 1.000000e+00, %1881 ]
  %1884 = load ptr, ptr %10, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.ImGuiWindow, ptr %1884, i32 0, i32 96
  store float %1883, ptr %1885, align 8, !tbaa !215
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1886)
  br label %1887

1887:                                             ; preds = %1882, %1836
  br label %1888

1888:                                             ; preds = %1887, %1828, %1823, %1818
  %1889 = load ptr, ptr %10, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiWindow, ptr %1889, i32 0, i32 43
  %1891 = load i8, ptr %1890, align 8, !tbaa !254, !range !100, !noundef !101
  %1892 = trunc i8 %1891 to i1
  br i1 %1892, label %1893, label %1896

1893:                                             ; preds = %1888
  %1894 = load ptr, ptr %10, align 8, !tbaa !5
  %1895 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef %1894, ptr noundef %1895)
  br label %1896

1896:                                             ; preds = %1893, %1888
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #12
  %1897 = load ptr, ptr %10, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiWindow, ptr %1897, i32 0, i32 7
  %1899 = load ptr, ptr %1898, align 8, !tbaa !197
  %1900 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %1899)
  %1901 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 0
  %1902 = extractvalue { <2 x float>, <2 x float> } %1900, 0
  store <2 x float> %1902, ptr %1901, align 4
  %1903 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %54, i32 0, i32 1
  %1904 = extractvalue { <2 x float>, <2 x float> } %1900, 1
  store <2 x float> %1904, ptr %1903, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #12
  %1905 = load ptr, ptr %10, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.ImGuiWindow, ptr %1905, i32 0, i32 7
  %1907 = load ptr, ptr %1906, align 8, !tbaa !197
  %1908 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328) %1907)
  %1909 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 0
  %1910 = extractvalue { <2 x float>, <2 x float> } %1908, 0
  store <2 x float> %1910, ptr %1909, align 4
  %1911 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %55, i32 0, i32 1
  %1912 = extractvalue { <2 x float>, <2 x float> } %1908, 1
  store <2 x float> %1912, ptr %1911, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #12
  %1913 = load ptr, ptr %9, align 8, !tbaa !5
  %1914 = getelementptr inbounds %struct.ImGuiStyle, ptr %1913, i32 0, i32 42
  %1915 = load ptr, ptr %9, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiStyle, ptr %1915, i32 0, i32 43
  %1917 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1914, ptr noundef nonnull align 4 dereferenceable(8) %1916)
  store <2 x float> %1917, ptr %56, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #12
  %1918 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 0
  %1919 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1918, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1919, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #12
  %1920 = getelementptr inbounds %struct.ImRect, ptr %55, i32 0, i32 1
  %1921 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1920, ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1921, ptr %59, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %57, ptr noundef nonnull align 4 dereferenceable(8) %58, ptr noundef nonnull align 4 dereferenceable(8) %59)
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #12
  %1922 = load i8, ptr %25, align 1, !tbaa !104, !range !100, !noundef !101
  %1923 = trunc i8 %1922 to i1
  br i1 %1923, label %1988, label %1924

1924:                                             ; preds = %1896
  %1925 = load i32, ptr %7, align 4, !tbaa !9
  %1926 = and i32 %1925, 16777216
  %1927 = icmp ne i32 %1926, 0
  br i1 %1927, label %1988, label %1928

1928:                                             ; preds = %1924
  %1929 = load ptr, ptr %10, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.ImGuiWindow, ptr %1929, i32 0, i32 43
  %1931 = load i8, ptr %1930, align 8, !tbaa !254, !range !100, !noundef !101
  %1932 = trunc i8 %1931 to i1
  br i1 %1932, label %1941, label %1933

1933:                                             ; preds = %1928
  %1934 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1935 = fcmp ogt float %1934, 0.000000e+00
  br i1 %1935, label %1936, label %1941

1936:                                             ; preds = %1933
  %1937 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %54)
  %1938 = fcmp ogt float %1937, 0.000000e+00
  br i1 %1938, label %1939, label %1941

1939:                                             ; preds = %1936
  %1940 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1940, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1987

1941:                                             ; preds = %1936, %1933, %1928
  %1942 = load ptr, ptr %10, align 8, !tbaa !5
  %1943 = getelementptr inbounds %struct.ImGuiWindow, ptr %1942, i32 0, i32 43
  %1944 = load i8, ptr %1943, align 8, !tbaa !254, !range !100, !noundef !101
  %1945 = trunc i8 %1944 to i1
  br i1 %1945, label %1946, label %1986

1946:                                             ; preds = %1941
  %1947 = load ptr, ptr %8, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiContext, ptr %1947, i32 0, i32 3
  %1949 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %1948, i32 0, i32 33
  %1950 = getelementptr inbounds %struct.ImVector.0, ptr %1949, i32 0, i32 0
  %1951 = load i32, ptr %1950, align 8, !tbaa !256
  %1952 = icmp sgt i32 %1951, 0
  br i1 %1952, label %1953, label %1986

1953:                                             ; preds = %1946
  %1954 = load ptr, ptr %8, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.ImGuiContext, ptr %1954, i32 0, i32 41
  %1956 = load ptr, ptr %1955, align 8, !tbaa !257
  %1957 = icmp ne ptr %1956, null
  br i1 %1957, label %1958, label %1971

1958:                                             ; preds = %1953
  %1959 = load ptr, ptr %10, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.ImGuiWindow, ptr %1959, i32 0, i32 106
  %1961 = load ptr, ptr %1960, align 8, !tbaa !258
  %1962 = load ptr, ptr %8, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.ImGuiContext, ptr %1962, i32 0, i32 41
  %1964 = load ptr, ptr %1963, align 8, !tbaa !257
  %1965 = getelementptr inbounds %struct.ImGuiWindow, ptr %1964, i32 0, i32 106
  %1966 = load ptr, ptr %1965, align 8, !tbaa !258
  %1967 = icmp eq ptr %1961, %1966
  br i1 %1967, label %1968, label %1971

1968:                                             ; preds = %1958
  %1969 = load ptr, ptr %8, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.ImGuiContext, ptr %1969, i32 0, i32 110
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 8 %1970, i64 16, i1 false), !tbaa.struct !193
  br label %1983

1971:                                             ; preds = %1958, %1953
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #12
  %1972 = load ptr, ptr %10, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiWindow, ptr %1972, i32 0, i32 7
  %1974 = load ptr, ptr %1973, align 8, !tbaa !197
  %1975 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %1974)
  store ptr %1975, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #12
  %1976 = load ptr, ptr %60, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1976, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %1978 = load ptr, ptr %60, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1978, i32 0, i32 2
  %1980 = load ptr, ptr %60, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.ImGuiPlatformMonitor, ptr %1980, i32 0, i32 3
  %1982 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1979, ptr noundef nonnull align 4 dereferenceable(8) %1981)
  store <2 x float> %1982, ptr %62, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %61, ptr noundef nonnull align 4 dereferenceable(8) %1977, ptr noundef nonnull align 4 dereferenceable(8) %62)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 4 %61, i64 16, i1 false), !tbaa.struct !193
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #12
  br label %1983

1983:                                             ; preds = %1971, %1968
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  %1984 = call <2 x float> @_ZngRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %56)
  store <2 x float> %1984, ptr %63, align 4
  call void @_ZN6ImRect6ExpandERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %57, ptr noundef nonnull align 4 dereferenceable(8) %63)
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  %1985 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1985, ptr noundef nonnull align 4 dereferenceable(16) %57)
  br label %1986

1986:                                             ; preds = %1983, %1946, %1941
  br label %1987

1987:                                             ; preds = %1986, %1939
  br label %1988

1988:                                             ; preds = %1987, %1924, %1896
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1989 = load ptr, ptr %10, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct.ImGuiWindow, ptr %1989, i32 0, i32 11
  %1991 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1990)
  store <2 x float> %1991, ptr %64, align 4
  %1992 = load ptr, ptr %10, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiWindow, ptr %1992, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1993, ptr align 4 %64, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  %1994 = load ptr, ptr %10, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.ImGuiWindow, ptr %1994, i32 0, i32 43
  %1996 = load i8, ptr %1995, align 8, !tbaa !254, !range !100, !noundef !101
  %1997 = trunc i8 %1996 to i1
  br i1 %1997, label %2004, label %1998

1998:                                             ; preds = %1988
  %1999 = load ptr, ptr %10, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.ImGuiWindow, ptr %1999, i32 0, i32 118
  %2001 = load i8, ptr %2000, align 1
  %2002 = and i8 %2001, 1
  %2003 = trunc i8 %2002 to i1
  br i1 %2003, label %2004, label %2007

2004:                                             ; preds = %1998, %1988
  %2005 = load ptr, ptr %10, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiWindow, ptr %2005, i32 0, i32 18
  store float 0.000000e+00, ptr %2006, align 8, !tbaa !259
  br label %2037

2007:                                             ; preds = %1998
  %2008 = load i32, ptr %7, align 4, !tbaa !9
  %2009 = and i32 %2008, 16777216
  %2010 = icmp ne i32 %2009, 0
  br i1 %2010, label %2011, label %2015

2011:                                             ; preds = %2007
  %2012 = load ptr, ptr %9, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.ImGuiStyle, ptr %2012, i32 0, i32 9
  %2014 = load float, ptr %2013, align 4, !tbaa !260
  br label %2033

2015:                                             ; preds = %2007
  %2016 = load i32, ptr %7, align 4, !tbaa !9
  %2017 = and i32 %2016, 67108864
  %2018 = icmp ne i32 %2017, 0
  br i1 %2018, label %2019, label %2027

2019:                                             ; preds = %2015
  %2020 = load i32, ptr %7, align 4, !tbaa !9
  %2021 = and i32 %2020, 134217728
  %2022 = icmp ne i32 %2021, 0
  br i1 %2022, label %2027, label %2023

2023:                                             ; preds = %2019
  %2024 = load ptr, ptr %9, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.ImGuiStyle, ptr %2024, i32 0, i32 11
  %2026 = load float, ptr %2025, align 4, !tbaa !261
  br label %2031

2027:                                             ; preds = %2019, %2015
  %2028 = load ptr, ptr %9, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.ImGuiStyle, ptr %2028, i32 0, i32 3
  %2030 = load float, ptr %2029, align 4, !tbaa !262
  br label %2031

2031:                                             ; preds = %2027, %2023
  %2032 = phi float [ %2026, %2023 ], [ %2030, %2027 ]
  br label %2033

2033:                                             ; preds = %2031, %2011
  %2034 = phi float [ %2014, %2011 ], [ %2032, %2031 ]
  %2035 = load ptr, ptr %10, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.ImGuiWindow, ptr %2035, i32 0, i32 18
  store float %2034, ptr %2036, align 8, !tbaa !259
  br label %2037

2037:                                             ; preds = %2033, %2004
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #12
  store i8 0, ptr %65, align 1, !tbaa !104
  %2038 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %2039 = trunc i8 %2038 to i1
  br i1 %2039, label %2040, label %2066

2040:                                             ; preds = %2037
  %2041 = load i32, ptr %7, align 4, !tbaa !9
  %2042 = and i32 %2041, 4096
  %2043 = icmp ne i32 %2042, 0
  br i1 %2043, label %2066, label %2044

2044:                                             ; preds = %2040
  %2045 = load i32, ptr %7, align 4, !tbaa !9
  %2046 = and i32 %2045, 67108864
  %2047 = icmp ne i32 %2046, 0
  br i1 %2047, label %2048, label %2049

2048:                                             ; preds = %2044
  store i8 1, ptr %65, align 1, !tbaa !104
  br label %2065

2049:                                             ; preds = %2044
  %2050 = load ptr, ptr %10, align 8, !tbaa !5
  %2051 = getelementptr inbounds %struct.ImGuiWindow, ptr %2050, i32 0, i32 118
  %2052 = load i8, ptr %2051, align 1
  %2053 = and i8 %2052, 1
  %2054 = trunc i8 %2053 to i1
  br i1 %2054, label %2059, label %2055

2055:                                             ; preds = %2049
  %2056 = load i32, ptr %7, align 4, !tbaa !9
  %2057 = and i32 %2056, 16777216
  %2058 = icmp eq i32 %2057, 0
  br i1 %2058, label %2059, label %2064

2059:                                             ; preds = %2055, %2049
  %2060 = load i32, ptr %7, align 4, !tbaa !9
  %2061 = and i32 %2060, 33554432
  %2062 = icmp ne i32 %2061, 0
  br i1 %2062, label %2064, label %2063

2063:                                             ; preds = %2059
  store i8 1, ptr %65, align 1, !tbaa !104
  br label %2064

2064:                                             ; preds = %2063, %2059, %2055
  br label %2065

2065:                                             ; preds = %2064, %2048
  br label %2066

2066:                                             ; preds = %2065, %2040, %2037
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #12
  %2067 = load ptr, ptr %10, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.ImGuiWindow, ptr %2067, i32 0, i32 122
  %2069 = load ptr, ptr %2068, align 8, !tbaa !142
  %2070 = icmp ne ptr %2069, null
  br i1 %2070, label %2078, label %2071

2071:                                             ; preds = %2066
  %2072 = load ptr, ptr %10, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiWindow, ptr %2072, i32 0, i32 118
  %2074 = load i8, ptr %2073, align 1
  %2075 = and i8 %2074, 1
  %2076 = trunc i8 %2075 to i1
  %2077 = xor i1 %2076, true
  br label %2078

2078:                                             ; preds = %2071, %2066
  %2079 = phi i1 [ true, %2066 ], [ %2077, %2071 ]
  %2080 = zext i1 %2079 to i8
  store i8 %2080, ptr %66, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  store i32 -1, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  store i32 -1, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #12
  call void @llvm.memset.p0.i64(ptr align 16 %69, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #12
  %2081 = load i32, ptr %7, align 4, !tbaa !9
  %2082 = and i32 %2081, 16777216
  %2083 = icmp ne i32 %2082, 0
  br i1 %2083, label %2084, label %2089

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

2088:                                             ; preds = %2084
  br label %2097

2089:                                             ; preds = %2084, %2078
  %2090 = load ptr, ptr %8, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct.ImGuiContext, ptr %2090, i32 0, i32 2
  %2092 = getelementptr inbounds %struct.ImGuiIO, ptr %2091, i32 0, i32 34
  %2093 = load i8, ptr %2092, align 1, !tbaa !263, !range !100, !noundef !101
  %2094 = trunc i8 %2093 to i1
  %2095 = zext i1 %2094 to i64
  %2096 = select i1 %2094, i32 2, i32 1
  br label %2097

2097:                                             ; preds = %2089, %2088
  %2098 = phi i32 [ 0, %2088 ], [ %2096, %2089 ]
  store i32 %2098, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #12
  %2099 = load ptr, ptr %8, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.ImGuiContext, ptr %2099, i32 0, i32 8
  %2101 = load float, ptr %2100, align 8, !tbaa !227
  %2102 = fmul float %2101, 0x3FF19999A0000000
  %2103 = load ptr, ptr %10, align 8, !tbaa !5
  %2104 = getelementptr inbounds %struct.ImGuiWindow, ptr %2103, i32 0, i32 18
  %2105 = load float, ptr %2104, align 8, !tbaa !259
  %2106 = fadd float %2105, 1.000000e+00
  %2107 = load ptr, ptr %8, align 8, !tbaa !5
  %2108 = getelementptr inbounds %struct.ImGuiContext, ptr %2107, i32 0, i32 8
  %2109 = load float, ptr %2108, align 8, !tbaa !227
  %2110 = call float @llvm.fmuladd.f32(float %2109, float 0x3FC99999A0000000, float %2106)
  %2111 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2102, float noundef %2110)
  %2112 = fptosi float %2111 to i32
  %2113 = sitofp i32 %2112 to float
  store float %2113, ptr %71, align 4, !tbaa !156
  %2114 = load i8, ptr %66, align 1, !tbaa !104, !range !100, !noundef !101
  %2115 = trunc i8 %2114 to i1
  br i1 %2115, label %2116, label %2140

2116:                                             ; preds = %2097
  %2117 = load ptr, ptr %10, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiWindow, ptr %2117, i32 0, i32 47
  %2119 = load i8, ptr %2118, align 4, !tbaa !240, !range !100, !noundef !101
  %2120 = trunc i8 %2119 to i1
  br i1 %2120, label %2140, label %2121

2121:                                             ; preds = %2116
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #12
  %2122 = load ptr, ptr %10, align 8, !tbaa !5
  %2123 = load i32, ptr %70, align 4, !tbaa !9
  %2124 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %2125 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %2122, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef %67, ptr noundef %68, i32 noundef %2123, ptr noundef %2124, ptr noundef nonnull align 4 dereferenceable(16) %57)
  store i32 %2125, ptr %72, align 4, !tbaa !9
  %2126 = load i32, ptr %72, align 4, !tbaa !9
  %2127 = icmp ne i32 %2126, 0
  br i1 %2127, label %2128, label %2139

2128:                                             ; preds = %2121
  %2129 = load i32, ptr %72, align 4, !tbaa !9
  %2130 = and i32 %2129, 1
  %2131 = icmp ne i32 %2130, 0
  br i1 %2131, label %2132, label %2133

2132:                                             ; preds = %2128
  store i8 1, ptr %37, align 1, !tbaa !104
  br label %2133

2133:                                             ; preds = %2132, %2128
  %2134 = load i32, ptr %72, align 4, !tbaa !9
  %2135 = and i32 %2134, 2
  %2136 = icmp ne i32 %2135, 0
  br i1 %2136, label %2137, label %2138

2137:                                             ; preds = %2133
  store i8 1, ptr %38, align 1, !tbaa !104
  br label %2138

2138:                                             ; preds = %2137, %2133
  br label %2139

2139:                                             ; preds = %2138, %2121
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  br label %2140

2140:                                             ; preds = %2139, %2116, %2097
  %2141 = load i32, ptr %67, align 4, !tbaa !9
  %2142 = trunc i32 %2141 to i8
  %2143 = load ptr, ptr %10, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiWindow, ptr %2143, i32 0, i32 56
  store i8 %2142, ptr %2144, align 1, !tbaa !264
  %2145 = load i32, ptr %68, align 4, !tbaa !9
  %2146 = trunc i32 %2145 to i8
  %2147 = load ptr, ptr %10, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct.ImGuiWindow, ptr %2147, i32 0, i32 57
  store i8 %2146, ptr %2148, align 2, !tbaa !265
  %2149 = load ptr, ptr %10, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiWindow, ptr %2149, i32 0, i32 43
  %2151 = load i8, ptr %2150, align 8, !tbaa !254, !range !100, !noundef !101
  %2152 = trunc i8 %2151 to i1
  br i1 %2152, label %2153, label %2193

2153:                                             ; preds = %2140
  %2154 = load ptr, ptr %10, align 8, !tbaa !5
  %2155 = getelementptr inbounds %struct.ImGuiWindow, ptr %2154, i32 0, i32 7
  %2156 = load ptr, ptr %2155, align 8, !tbaa !197
  %2157 = getelementptr inbounds %struct.ImGuiViewport, ptr %2156, i32 0, i32 14
  %2158 = load i8, ptr %2157, align 1, !tbaa !266, !range !100, !noundef !101
  %2159 = trunc i8 %2158 to i1
  br i1 %2159, label %2167, label %2160

2160:                                             ; preds = %2153
  %2161 = load ptr, ptr %10, align 8, !tbaa !5
  %2162 = getelementptr inbounds %struct.ImGuiWindow, ptr %2161, i32 0, i32 11
  %2163 = load ptr, ptr %10, align 8, !tbaa !5
  %2164 = getelementptr inbounds %struct.ImGuiWindow, ptr %2163, i32 0, i32 7
  %2165 = load ptr, ptr %2164, align 8, !tbaa !197
  %2166 = getelementptr inbounds %struct.ImGuiViewport, ptr %2165, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2166, ptr align 8 %2162, i64 8, i1 false), !tbaa.struct !174
  br label %2167

2167:                                             ; preds = %2160, %2153
  %2168 = load ptr, ptr %10, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.ImGuiWindow, ptr %2168, i32 0, i32 7
  %2170 = load ptr, ptr %2169, align 8, !tbaa !197
  %2171 = getelementptr inbounds %struct.ImGuiViewport, ptr %2170, i32 0, i32 15
  %2172 = load i8, ptr %2171, align 2, !tbaa !267, !range !100, !noundef !101
  %2173 = trunc i8 %2172 to i1
  br i1 %2173, label %2181, label %2174

2174:                                             ; preds = %2167
  %2175 = load ptr, ptr %10, align 8, !tbaa !5
  %2176 = getelementptr inbounds %struct.ImGuiWindow, ptr %2175, i32 0, i32 12
  %2177 = load ptr, ptr %10, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.ImGuiWindow, ptr %2177, i32 0, i32 7
  %2179 = load ptr, ptr %2178, align 8, !tbaa !197
  %2180 = getelementptr inbounds %struct.ImGuiViewport, ptr %2179, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2180, ptr align 8 %2176, i64 8, i1 false), !tbaa.struct !174
  br label %2181

2181:                                             ; preds = %2174, %2167
  %2182 = load ptr, ptr %10, align 8, !tbaa !5
  %2183 = getelementptr inbounds %struct.ImGuiWindow, ptr %2182, i32 0, i32 7
  %2184 = load ptr, ptr %2183, align 8, !tbaa !197
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328) %2184)
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #12
  %2185 = load ptr, ptr %10, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.ImGuiWindow, ptr %2185, i32 0, i32 7
  %2187 = load ptr, ptr %2186, align 8, !tbaa !197
  %2188 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %2187)
  %2189 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 0
  %2190 = extractvalue { <2 x float>, <2 x float> } %2188, 0
  store <2 x float> %2190, ptr %2189, align 4
  %2191 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %73, i32 0, i32 1
  %2192 = extractvalue { <2 x float>, <2 x float> } %2188, 1
  store <2 x float> %2192, ptr %2191, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %73, i64 16, i1 false), !tbaa.struct !193
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #12
  br label %2193

2193:                                             ; preds = %2181, %2140
  %2194 = load ptr, ptr %10, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.ImGuiWindow, ptr %2194, i32 0, i32 7
  %2196 = load ptr, ptr %2195, align 8, !tbaa !197
  %2197 = getelementptr inbounds %struct.ImGuiViewport, ptr %2196, i32 0, i32 2
  %2198 = load ptr, ptr %10, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.ImGuiWindow, ptr %2198, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2199, ptr align 8 %2197, i64 8, i1 false), !tbaa.struct !174
  %2200 = load ptr, ptr %10, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.ImGuiWindow, ptr %2200, i32 0, i32 47
  %2202 = load i8, ptr %2201, align 4, !tbaa !240, !range !100, !noundef !101
  %2203 = trunc i8 %2202 to i1
  br i1 %2203, label %2434, label %2204

2204:                                             ; preds = %2193
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  %2205 = load ptr, ptr %10, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.ImGuiWindow, ptr %2205, i32 0, i32 13
  %2207 = getelementptr inbounds %struct.ImVec2, ptr %2206, i32 0, i32 0
  %2208 = load float, ptr %2207, align 8, !tbaa !178
  %2209 = load ptr, ptr %10, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.ImGuiWindow, ptr %2209, i32 0, i32 13
  %2211 = getelementptr inbounds %struct.ImVec2, ptr %2210, i32 0, i32 1
  %2212 = load float, ptr %2211, align 4, !tbaa !179
  %2213 = load ptr, ptr %10, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiWindow, ptr %2213, i32 0, i32 23
  %2215 = load float, ptr %2214, align 4, !tbaa !243
  %2216 = load ptr, ptr %10, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiWindow, ptr %2216, i32 0, i32 25
  %2218 = load float, ptr %2217, align 4, !tbaa !244
  %2219 = fadd float %2215, %2218
  %2220 = fsub float %2212, %2219
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %74, float noundef %2208, float noundef %2220)
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #12
  %2221 = load ptr, ptr %10, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.ImGuiWindow, ptr %2221, i32 0, i32 80
  %2223 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %2222)
  store <2 x float> %2223, ptr %76, align 4
  %2224 = 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> %2224, ptr %75, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %2225 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %2226 = trunc i8 %2225 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #12
  br i1 %2226, label %2227, label %2228

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

2228:                                             ; preds = %2204
  %2229 = load ptr, ptr %10, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.ImGuiWindow, ptr %2229, i32 0, i32 14
  %2231 = load ptr, ptr %10, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.ImGuiWindow, ptr %2231, i32 0, i32 17
  %2233 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %2232, float noundef 2.000000e+00)
  store <2 x float> %2233, ptr %78, align 4
  %2234 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2230, ptr noundef nonnull align 4 dereferenceable(8) %78)
  store <2 x float> %2234, ptr %77, align 4
  br label %2235

2235:                                             ; preds = %2228, %2227
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  %2236 = load i8, ptr %37, align 1, !tbaa !104, !range !100, !noundef !101
  %2237 = trunc i8 %2236 to i1
  br i1 %2237, label %2238, label %2241

2238:                                             ; preds = %2235
  %2239 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 0
  %2240 = load float, ptr %2239, align 4, !tbaa !245
  br label %2244

2241:                                             ; preds = %2235
  %2242 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 0
  %2243 = load float, ptr %2242, align 4, !tbaa !245
  br label %2244

2244:                                             ; preds = %2241, %2238
  %2245 = phi float [ %2240, %2238 ], [ %2243, %2241 ]
  store float %2245, ptr %79, align 4, !tbaa !156
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  %2246 = load i8, ptr %38, align 1, !tbaa !104, !range !100, !noundef !101
  %2247 = trunc i8 %2246 to i1
  br i1 %2247, label %2248, label %2251

2248:                                             ; preds = %2244
  %2249 = getelementptr inbounds %struct.ImVec2, ptr %74, i32 0, i32 1
  %2250 = load float, ptr %2249, align 4, !tbaa !246
  br label %2254

2251:                                             ; preds = %2244
  %2252 = getelementptr inbounds %struct.ImVec2, ptr %75, i32 0, i32 1
  %2253 = load float, ptr %2252, align 4, !tbaa !246
  br label %2254

2254:                                             ; preds = %2251, %2248
  %2255 = phi float [ %2250, %2248 ], [ %2253, %2251 ]
  store float %2255, ptr %80, align 4, !tbaa !156
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #12
  %2256 = load ptr, ptr %10, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.ImGuiWindow, ptr %2256, i32 0, i32 39
  %2258 = load i8, ptr %2257, align 4, !tbaa !268, !range !100, !noundef !101
  %2259 = trunc i8 %2258 to i1
  %2260 = zext i1 %2259 to i8
  store i8 %2260, ptr %81, align 1, !tbaa !104
  %2261 = load i32, ptr %7, align 4, !tbaa !9
  %2262 = and i32 %2261, 16384
  %2263 = icmp ne i32 %2262, 0
  br i1 %2263, label %2276, label %2264

2264:                                             ; preds = %2254
  %2265 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2266 = load float, ptr %2265, align 4, !tbaa !246
  %2267 = load float, ptr %80, align 4, !tbaa !156
  %2268 = fcmp ogt float %2266, %2267
  br i1 %2268, label %2269, label %2274

2269:                                             ; preds = %2264
  %2270 = load i32, ptr %7, align 4, !tbaa !9
  %2271 = and i32 %2270, 8
  %2272 = icmp ne i32 %2271, 0
  %2273 = xor i1 %2272, true
  br label %2274

2274:                                             ; preds = %2269, %2264
  %2275 = phi i1 [ false, %2264 ], [ %2273, %2269 ]
  br label %2276

2276:                                             ; preds = %2274, %2254
  %2277 = phi i1 [ true, %2254 ], [ %2275, %2274 ]
  %2278 = load ptr, ptr %10, align 8, !tbaa !5
  %2279 = getelementptr inbounds %struct.ImGuiWindow, ptr %2278, i32 0, i32 40
  %2280 = zext i1 %2277 to i8
  store i8 %2280, ptr %2279, align 1, !tbaa !269
  %2281 = load i32, ptr %7, align 4, !tbaa !9
  %2282 = and i32 %2281, 32768
  %2283 = icmp ne i32 %2282, 0
  br i1 %2283, label %2311, label %2284

2284:                                             ; preds = %2276
  %2285 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 0
  %2286 = load float, ptr %2285, align 4, !tbaa !245
  %2287 = load float, ptr %79, align 4, !tbaa !156
  %2288 = load ptr, ptr %10, align 8, !tbaa !5
  %2289 = getelementptr inbounds %struct.ImGuiWindow, ptr %2288, i32 0, i32 40
  %2290 = load i8, ptr %2289, align 1, !tbaa !269, !range !100, !noundef !101
  %2291 = trunc i8 %2290 to i1
  br i1 %2291, label %2292, label %2296

2292:                                             ; preds = %2284
  %2293 = load ptr, ptr %9, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.ImGuiStyle, ptr %2293, i32 0, i32 22
  %2295 = load float, ptr %2294, align 4, !tbaa !270
  br label %2297

2296:                                             ; preds = %2284
  br label %2297

2297:                                             ; preds = %2296, %2292
  %2298 = phi float [ %2295, %2292 ], [ 0.000000e+00, %2296 ]
  %2299 = fsub float %2287, %2298
  %2300 = fcmp ogt float %2286, %2299
  br i1 %2300, label %2301, label %2309

2301:                                             ; preds = %2297
  %2302 = load i32, ptr %7, align 4, !tbaa !9
  %2303 = and i32 %2302, 8
  %2304 = icmp ne i32 %2303, 0
  br i1 %2304, label %2309, label %2305

2305:                                             ; preds = %2301
  %2306 = load i32, ptr %7, align 4, !tbaa !9
  %2307 = and i32 %2306, 2048
  %2308 = icmp ne i32 %2307, 0
  br label %2309

2309:                                             ; preds = %2305, %2301, %2297
  %2310 = phi i1 [ false, %2301 ], [ false, %2297 ], [ %2308, %2305 ]
  br label %2311

2311:                                             ; preds = %2309, %2276
  %2312 = phi i1 [ true, %2276 ], [ %2310, %2309 ]
  %2313 = load ptr, ptr %10, align 8, !tbaa !5
  %2314 = getelementptr inbounds %struct.ImGuiWindow, ptr %2313, i32 0, i32 39
  %2315 = zext i1 %2312 to i8
  store i8 %2315, ptr %2314, align 4, !tbaa !268
  %2316 = load ptr, ptr %10, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiWindow, ptr %2316, i32 0, i32 42
  %2318 = load i8, ptr %2317, align 1, !tbaa !271
  %2319 = zext i8 %2318 to i32
  %2320 = shl i32 %2319, 1
  %2321 = trunc i32 %2320 to i8
  store i8 %2321, ptr %2317, align 1, !tbaa !271
  %2322 = load i8, ptr %81, align 1, !tbaa !104, !range !100, !noundef !101
  %2323 = trunc i8 %2322 to i1
  %2324 = zext i1 %2323 to i32
  %2325 = load ptr, ptr %10, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.ImGuiWindow, ptr %2325, i32 0, i32 39
  %2327 = load i8, ptr %2326, align 4, !tbaa !268, !range !100, !noundef !101
  %2328 = trunc i8 %2327 to i1
  %2329 = zext i1 %2328 to i32
  %2330 = icmp ne i32 %2324, %2329
  %2331 = zext i1 %2330 to i64
  %2332 = select i1 %2330, i32 1, i32 0
  %2333 = load ptr, ptr %10, align 8, !tbaa !5
  %2334 = getelementptr inbounds %struct.ImGuiWindow, ptr %2333, i32 0, i32 42
  %2335 = load i8, ptr %2334, align 1, !tbaa !271
  %2336 = zext i8 %2335 to i32
  %2337 = or i32 %2336, %2332
  %2338 = trunc i32 %2337 to i8
  store i8 %2338, ptr %2334, align 1, !tbaa !271
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #12
  %2339 = load ptr, ptr %10, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 42
  %2341 = load i8, ptr %2340, align 1, !tbaa !271
  %2342 = zext i8 %2341 to i32
  %2343 = icmp ne i32 %2342, 0
  br i1 %2343, label %2344, label %2351

2344:                                             ; preds = %2311
  %2345 = load ptr, ptr %10, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.ImGuiWindow, ptr %2345, i32 0, i32 42
  %2347 = load i8, ptr %2346, align 1, !tbaa !271
  %2348 = zext i8 %2347 to i32
  %2349 = call noundef i32 @_ZL14ImCountSetBitsj(i32 noundef %2348)
  %2350 = icmp uge i32 %2349, 4
  br label %2351

2351:                                             ; preds = %2344, %2311
  %2352 = phi i1 [ false, %2311 ], [ %2350, %2344 ]
  %2353 = zext i1 %2352 to i8
  store i8 %2353, ptr %82, align 1, !tbaa !104
  %2354 = load i8, ptr %82, align 1, !tbaa !104, !range !100, !noundef !101
  %2355 = trunc i8 %2354 to i1
  br i1 %2355, label %2356, label %2359

2356:                                             ; preds = %2351
  %2357 = load ptr, ptr %10, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 39
  store i8 1, ptr %2358, align 4, !tbaa !268
  br label %2359

2359:                                             ; preds = %2356, %2351
  %2360 = load i8, ptr %82, align 1, !tbaa !104, !range !100, !noundef !101
  %2361 = trunc i8 %2360 to i1
  %2362 = load ptr, ptr %10, align 8, !tbaa !5
  %2363 = getelementptr inbounds %struct.ImGuiWindow, ptr %2362, i32 0, i32 41
  %2364 = zext i1 %2361 to i8
  store i8 %2364, ptr %2363, align 2, !tbaa !272
  %2365 = load ptr, ptr %10, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 39
  %2367 = load i8, ptr %2366, align 4, !tbaa !268, !range !100, !noundef !101
  %2368 = trunc i8 %2367 to i1
  br i1 %2368, label %2369, label %2393

2369:                                             ; preds = %2359
  %2370 = load ptr, ptr %10, align 8, !tbaa !5
  %2371 = getelementptr inbounds %struct.ImGuiWindow, ptr %2370, i32 0, i32 40
  %2372 = load i8, ptr %2371, align 1, !tbaa !269, !range !100, !noundef !101
  %2373 = trunc i8 %2372 to i1
  br i1 %2373, label %2393, label %2374

2374:                                             ; preds = %2369
  %2375 = getelementptr inbounds %struct.ImVec2, ptr %77, i32 0, i32 1
  %2376 = load float, ptr %2375, align 4, !tbaa !246
  %2377 = load float, ptr %80, align 4, !tbaa !156
  %2378 = load ptr, ptr %9, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiStyle, ptr %2378, i32 0, i32 22
  %2380 = load float, ptr %2379, align 4, !tbaa !270
  %2381 = fsub float %2377, %2380
  %2382 = fcmp ogt float %2376, %2381
  br i1 %2382, label %2383, label %2388

2383:                                             ; preds = %2374
  %2384 = load i32, ptr %7, align 4, !tbaa !9
  %2385 = and i32 %2384, 8
  %2386 = icmp ne i32 %2385, 0
  %2387 = xor i1 %2386, true
  br label %2388

2388:                                             ; preds = %2383, %2374
  %2389 = phi i1 [ false, %2374 ], [ %2387, %2383 ]
  %2390 = load ptr, ptr %10, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiWindow, ptr %2390, i32 0, i32 40
  %2392 = zext i1 %2389 to i8
  store i8 %2392, ptr %2391, align 1, !tbaa !269
  br label %2393

2393:                                             ; preds = %2388, %2369, %2359
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #12
  %2394 = load ptr, ptr %10, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiWindow, ptr %2394, i32 0, i32 40
  %2396 = load i8, ptr %2395, align 1, !tbaa !269, !range !100, !noundef !101
  %2397 = trunc i8 %2396 to i1
  br i1 %2397, label %2398, label %2402

2398:                                             ; preds = %2393
  %2399 = load ptr, ptr %9, align 8, !tbaa !5
  %2400 = getelementptr inbounds %struct.ImGuiStyle, ptr %2399, i32 0, i32 22
  %2401 = load float, ptr %2400, align 4, !tbaa !270
  br label %2403

2402:                                             ; preds = %2393
  br label %2403

2403:                                             ; preds = %2402, %2398
  %2404 = phi float [ %2401, %2398 ], [ 0.000000e+00, %2402 ]
  %2405 = load ptr, ptr %10, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ImGuiWindow, ptr %2405, i32 0, i32 39
  %2407 = load i8, ptr %2406, align 4, !tbaa !268, !range !100, !noundef !101
  %2408 = trunc i8 %2407 to i1
  br i1 %2408, label %2409, label %2413

2409:                                             ; preds = %2403
  %2410 = load ptr, ptr %9, align 8, !tbaa !5
  %2411 = getelementptr inbounds %struct.ImGuiStyle, ptr %2410, i32 0, i32 22
  %2412 = load float, ptr %2411, align 4, !tbaa !270
  br label %2414

2413:                                             ; preds = %2403
  br label %2414

2414:                                             ; preds = %2413, %2409
  %2415 = phi float [ %2412, %2409 ], [ 0.000000e+00, %2413 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %83, float noundef %2404, float noundef %2415)
  %2416 = load ptr, ptr %10, align 8, !tbaa !5
  %2417 = getelementptr inbounds %struct.ImGuiWindow, ptr %2416, i32 0, i32 38
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2417, ptr align 4 %83, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #12
  %2418 = load ptr, ptr %10, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiWindow, ptr %2418, i32 0, i32 38
  %2420 = getelementptr inbounds %struct.ImVec2, ptr %2419, i32 0, i32 0
  %2421 = load float, ptr %2420, align 4, !tbaa !273
  %2422 = load ptr, ptr %10, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiWindow, ptr %2422, i32 0, i32 24
  %2424 = load float, ptr %2423, align 8, !tbaa !242
  %2425 = fadd float %2424, %2421
  store float %2425, ptr %2423, align 8, !tbaa !242
  %2426 = load ptr, ptr %10, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiWindow, ptr %2426, i32 0, i32 38
  %2428 = getelementptr inbounds %struct.ImVec2, ptr %2427, i32 0, i32 1
  %2429 = load float, ptr %2428, align 4, !tbaa !274
  %2430 = load ptr, ptr %10, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiWindow, ptr %2430, i32 0, i32 25
  %2432 = load float, ptr %2431, align 4, !tbaa !244
  %2433 = fadd float %2432, %2429
  store float %2433, ptr %2431, align 4, !tbaa !244
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  br label %2434

2434:                                             ; preds = %2414, %2193
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #12
  %2435 = load i32, ptr %7, align 4, !tbaa !9
  %2436 = and i32 %2435, 16777216
  %2437 = icmp ne i32 %2436, 0
  br i1 %2437, label %2438, label %2448

2438:                                             ; preds = %2434
  %2439 = load i32, ptr %7, align 4, !tbaa !9
  %2440 = and i32 %2439, 67108864
  %2441 = icmp ne i32 %2440, 0
  br i1 %2441, label %2448, label %2442

2442:                                             ; preds = %2438
  %2443 = load i8, ptr %29, align 1, !tbaa !104, !range !100, !noundef !101
  %2444 = trunc i8 %2443 to i1
  br i1 %2444, label %2448, label %2445

2445:                                             ; preds = %2442
  %2446 = load ptr, ptr %22, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiWindow, ptr %2446, i32 0, i32 84
  br label %2449

2448:                                             ; preds = %2442, %2438, %2434
  br label %2449

2449:                                             ; preds = %2448, %2445
  %2450 = phi ptr [ %2447, %2445 ], [ %54, %2448 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %84, ptr align 4 %2450, i64 16, i1 false), !tbaa.struct !193
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #12
  %2451 = load ptr, ptr %10, align 8, !tbaa !5
  %2452 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %2451)
  %2453 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %85, i32 0, i32 0
  %2454 = extractvalue { <2 x float>, <2 x float> } %2452, 0
  store <2 x float> %2454, ptr %2453, align 4
  %2455 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %85, i32 0, i32 1
  %2456 = extractvalue { <2 x float>, <2 x float> } %2452, 1
  store <2 x float> %2456, ptr %2455, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #12
  %2457 = load ptr, ptr %10, align 8, !tbaa !5
  %2458 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %2457)
  %2459 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %86, i32 0, i32 0
  %2460 = extractvalue { <2 x float>, <2 x float> } %2458, 0
  store <2 x float> %2460, ptr %2459, align 4
  %2461 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %86, i32 0, i32 1
  %2462 = extractvalue { <2 x float>, <2 x float> } %2458, 1
  store <2 x float> %2462, ptr %2461, align 4
  %2463 = load ptr, ptr %10, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiWindow, ptr %2463, i32 0, i32 79
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2464, ptr align 4 %85, i64 16, i1 false), !tbaa.struct !193
  %2465 = load ptr, ptr %10, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiWindow, ptr %2465, i32 0, i32 118
  %2467 = load i8, ptr %2466, align 1
  %2468 = and i8 %2467, 1
  %2469 = trunc i8 %2468 to i1
  br i1 %2469, label %2470, label %2480

2470:                                             ; preds = %2449
  %2471 = load ptr, ptr %10, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiWindow, ptr %2471, i32 0, i32 20
  %2473 = load float, ptr %2472, align 8, !tbaa !229
  %2474 = load ptr, ptr %10, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiWindow, ptr %2474, i32 0, i32 79
  %2476 = getelementptr inbounds %struct.ImRect, ptr %2475, i32 0, i32 0
  %2477 = getelementptr inbounds %struct.ImVec2, ptr %2476, i32 0, i32 1
  %2478 = load float, ptr %2477, align 4, !tbaa !275
  %2479 = fadd float %2478, %2473
  store float %2479, ptr %2477, align 4, !tbaa !275
  br label %2480

2480:                                             ; preds = %2470, %2449
  %2481 = load ptr, ptr %10, align 8, !tbaa !5
  %2482 = getelementptr inbounds %struct.ImGuiWindow, ptr %2481, i32 0, i32 79
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2482, ptr noundef nonnull align 4 dereferenceable(16) %84)
  %2483 = load ptr, ptr %10, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.ImGuiWindow, ptr %2483, i32 0, i32 11
  %2485 = getelementptr inbounds %struct.ImVec2, ptr %2484, i32 0, i32 0
  %2486 = load float, ptr %2485, align 8, !tbaa !276
  %2487 = load ptr, ptr %10, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.ImGuiWindow, ptr %2487, i32 0, i32 22
  %2489 = load float, ptr %2488, align 8, !tbaa !241
  %2490 = fadd float %2486, %2489
  %2491 = load ptr, ptr %10, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiWindow, ptr %2491, i32 0, i32 80
  %2493 = getelementptr inbounds %struct.ImRect, ptr %2492, i32 0, i32 0
  %2494 = getelementptr inbounds %struct.ImVec2, ptr %2493, i32 0, i32 0
  store float %2490, ptr %2494, align 8, !tbaa !277
  %2495 = load ptr, ptr %10, align 8, !tbaa !5
  %2496 = getelementptr inbounds %struct.ImGuiWindow, ptr %2495, i32 0, i32 11
  %2497 = getelementptr inbounds %struct.ImVec2, ptr %2496, i32 0, i32 1
  %2498 = load float, ptr %2497, align 4, !tbaa !278
  %2499 = load ptr, ptr %10, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.ImGuiWindow, ptr %2499, i32 0, i32 23
  %2501 = load float, ptr %2500, align 4, !tbaa !243
  %2502 = fadd float %2498, %2501
  %2503 = load ptr, ptr %10, align 8, !tbaa !5
  %2504 = getelementptr inbounds %struct.ImGuiWindow, ptr %2503, i32 0, i32 80
  %2505 = getelementptr inbounds %struct.ImRect, ptr %2504, i32 0, i32 0
  %2506 = getelementptr inbounds %struct.ImVec2, ptr %2505, i32 0, i32 1
  store float %2502, ptr %2506, align 4, !tbaa !279
  %2507 = load ptr, ptr %10, align 8, !tbaa !5
  %2508 = getelementptr inbounds %struct.ImGuiWindow, ptr %2507, i32 0, i32 11
  %2509 = getelementptr inbounds %struct.ImVec2, ptr %2508, i32 0, i32 0
  %2510 = load float, ptr %2509, align 8, !tbaa !276
  %2511 = load ptr, ptr %10, align 8, !tbaa !5
  %2512 = getelementptr inbounds %struct.ImGuiWindow, ptr %2511, i32 0, i32 12
  %2513 = getelementptr inbounds %struct.ImVec2, ptr %2512, i32 0, i32 0
  %2514 = load float, ptr %2513, align 8, !tbaa !211
  %2515 = fadd float %2510, %2514
  %2516 = load ptr, ptr %10, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiWindow, ptr %2516, i32 0, i32 24
  %2518 = load float, ptr %2517, align 8, !tbaa !242
  %2519 = fsub float %2515, %2518
  %2520 = load ptr, ptr %10, align 8, !tbaa !5
  %2521 = getelementptr inbounds %struct.ImGuiWindow, ptr %2520, i32 0, i32 80
  %2522 = getelementptr inbounds %struct.ImRect, ptr %2521, i32 0, i32 1
  %2523 = getelementptr inbounds %struct.ImVec2, ptr %2522, i32 0, i32 0
  store float %2519, ptr %2523, align 8, !tbaa !280
  %2524 = load ptr, ptr %10, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.ImGuiWindow, ptr %2524, i32 0, i32 11
  %2526 = getelementptr inbounds %struct.ImVec2, ptr %2525, i32 0, i32 1
  %2527 = load float, ptr %2526, align 4, !tbaa !278
  %2528 = load ptr, ptr %10, align 8, !tbaa !5
  %2529 = getelementptr inbounds %struct.ImGuiWindow, ptr %2528, i32 0, i32 12
  %2530 = getelementptr inbounds %struct.ImVec2, ptr %2529, i32 0, i32 1
  %2531 = load float, ptr %2530, align 4, !tbaa !212
  %2532 = fadd float %2527, %2531
  %2533 = load ptr, ptr %10, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiWindow, ptr %2533, i32 0, i32 25
  %2535 = load float, ptr %2534, align 4, !tbaa !244
  %2536 = fsub float %2532, %2535
  %2537 = load ptr, ptr %10, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiWindow, ptr %2537, i32 0, i32 80
  %2539 = getelementptr inbounds %struct.ImRect, ptr %2538, i32 0, i32 1
  %2540 = getelementptr inbounds %struct.ImVec2, ptr %2539, i32 0, i32 1
  store float %2536, ptr %2540, align 4, !tbaa !281
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  %2541 = load i32, ptr %7, align 4, !tbaa !9
  %2542 = and i32 %2541, 1024
  %2543 = icmp ne i32 %2542, 0
  br i1 %2543, label %2548, label %2544

2544:                                             ; preds = %2480
  %2545 = load i32, ptr %7, align 4, !tbaa !9
  %2546 = and i32 %2545, 1
  %2547 = icmp ne i32 %2546, 0
  br i1 %2547, label %2552, label %2548

2548:                                             ; preds = %2544, %2480
  %2549 = load ptr, ptr %9, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.ImGuiStyle, ptr %2549, i32 0, i32 15
  %2551 = load float, ptr %2550, align 4, !tbaa !282
  br label %2556

2552:                                             ; preds = %2544
  %2553 = load ptr, ptr %10, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.ImGuiWindow, ptr %2553, i32 0, i32 19
  %2555 = load float, ptr %2554, align 4, !tbaa !217
  br label %2556

2556:                                             ; preds = %2552, %2548
  %2557 = phi float [ %2551, %2548 ], [ %2555, %2552 ]
  store float %2557, ptr %87, align 4, !tbaa !156
  %2558 = load ptr, ptr %10, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiWindow, ptr %2558, i32 0, i32 80
  %2560 = getelementptr inbounds %struct.ImRect, ptr %2559, i32 0, i32 0
  %2561 = getelementptr inbounds %struct.ImVec2, ptr %2560, i32 0, i32 0
  %2562 = load float, ptr %2561, align 8, !tbaa !277
  %2563 = fadd float 5.000000e-01, %2562
  %2564 = load ptr, ptr %10, align 8, !tbaa !5
  %2565 = getelementptr inbounds %struct.ImGuiWindow, ptr %2564, i32 0, i32 19
  %2566 = load float, ptr %2565, align 4, !tbaa !217
  %2567 = call float @llvm.fmuladd.f32(float %2566, float 5.000000e-01, float %2563)
  %2568 = call noundef float @_ZL7ImFloorf(float noundef %2567)
  %2569 = load ptr, ptr %10, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.ImGuiWindow, ptr %2569, i32 0, i32 81
  %2571 = getelementptr inbounds %struct.ImRect, ptr %2570, i32 0, i32 0
  %2572 = getelementptr inbounds %struct.ImVec2, ptr %2571, i32 0, i32 0
  store float %2568, ptr %2572, align 8, !tbaa !283
  %2573 = load ptr, ptr %10, align 8, !tbaa !5
  %2574 = getelementptr inbounds %struct.ImGuiWindow, ptr %2573, i32 0, i32 80
  %2575 = getelementptr inbounds %struct.ImRect, ptr %2574, i32 0, i32 0
  %2576 = getelementptr inbounds %struct.ImVec2, ptr %2575, i32 0, i32 1
  %2577 = load float, ptr %2576, align 4, !tbaa !279
  %2578 = fadd float 5.000000e-01, %2577
  %2579 = load float, ptr %87, align 4, !tbaa !156
  %2580 = call float @llvm.fmuladd.f32(float %2579, float 5.000000e-01, float %2578)
  %2581 = call noundef float @_ZL7ImFloorf(float noundef %2580)
  %2582 = load ptr, ptr %10, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.ImGuiWindow, ptr %2582, i32 0, i32 81
  %2584 = getelementptr inbounds %struct.ImRect, ptr %2583, i32 0, i32 0
  %2585 = getelementptr inbounds %struct.ImVec2, ptr %2584, i32 0, i32 1
  store float %2581, ptr %2585, align 4, !tbaa !284
  %2586 = load ptr, ptr %10, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiWindow, ptr %2586, i32 0, i32 80
  %2588 = getelementptr inbounds %struct.ImRect, ptr %2587, i32 0, i32 1
  %2589 = getelementptr inbounds %struct.ImVec2, ptr %2588, i32 0, i32 0
  %2590 = load float, ptr %2589, align 8, !tbaa !280
  %2591 = load ptr, ptr %10, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiWindow, ptr %2591, i32 0, i32 19
  %2593 = load float, ptr %2592, align 4, !tbaa !217
  %2594 = fneg float %2593
  %2595 = call float @llvm.fmuladd.f32(float %2594, float 5.000000e-01, float %2590)
  %2596 = call noundef float @_ZL7ImFloorf(float noundef %2595)
  %2597 = load ptr, ptr %10, align 8, !tbaa !5
  %2598 = getelementptr inbounds %struct.ImGuiWindow, ptr %2597, i32 0, i32 81
  %2599 = getelementptr inbounds %struct.ImRect, ptr %2598, i32 0, i32 1
  %2600 = getelementptr inbounds %struct.ImVec2, ptr %2599, i32 0, i32 0
  store float %2596, ptr %2600, align 8, !tbaa !285
  %2601 = load ptr, ptr %10, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 80
  %2603 = getelementptr inbounds %struct.ImRect, ptr %2602, i32 0, i32 1
  %2604 = getelementptr inbounds %struct.ImVec2, ptr %2603, i32 0, i32 1
  %2605 = load float, ptr %2604, align 4, !tbaa !281
  %2606 = load ptr, ptr %10, align 8, !tbaa !5
  %2607 = getelementptr inbounds %struct.ImGuiWindow, ptr %2606, i32 0, i32 19
  %2608 = load float, ptr %2607, align 4, !tbaa !217
  %2609 = fneg float %2608
  %2610 = call float @llvm.fmuladd.f32(float %2609, float 5.000000e-01, float %2605)
  %2611 = call noundef float @_ZL7ImFloorf(float noundef %2610)
  %2612 = load ptr, ptr %10, align 8, !tbaa !5
  %2613 = getelementptr inbounds %struct.ImGuiWindow, ptr %2612, i32 0, i32 81
  %2614 = getelementptr inbounds %struct.ImRect, ptr %2613, i32 0, i32 1
  %2615 = getelementptr inbounds %struct.ImVec2, ptr %2614, i32 0, i32 1
  store float %2611, ptr %2615, align 4, !tbaa !286
  %2616 = load ptr, ptr %10, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.ImGuiWindow, ptr %2616, i32 0, i32 81
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2617, ptr noundef nonnull align 4 dereferenceable(16) %84)
  %2618 = load ptr, ptr %10, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.ImGuiWindow, ptr %2618, i32 0, i32 12
  %2620 = getelementptr inbounds %struct.ImVec2, ptr %2619, i32 0, i32 0
  %2621 = load float, ptr %2620, align 8, !tbaa !211
  %2622 = fcmp ogt float %2621, 0.000000e+00
  br i1 %2622, label %2623, label %2640

2623:                                             ; preds = %2556
  %2624 = load i32, ptr %7, align 4, !tbaa !9
  %2625 = and i32 %2624, 33554432
  %2626 = icmp ne i32 %2625, 0
  br i1 %2626, label %2640, label %2627

2627:                                             ; preds = %2623
  %2628 = load i32, ptr %7, align 4, !tbaa !9
  %2629 = and i32 %2628, 64
  %2630 = icmp ne i32 %2629, 0
  br i1 %2630, label %2640, label %2631

2631:                                             ; preds = %2627
  %2632 = load ptr, ptr %10, align 8, !tbaa !5
  %2633 = getelementptr inbounds %struct.ImGuiWindow, ptr %2632, i32 0, i32 12
  %2634 = getelementptr inbounds %struct.ImVec2, ptr %2633, i32 0, i32 0
  %2635 = load float, ptr %2634, align 8, !tbaa !211
  %2636 = fmul float %2635, 0x3FE4CCCCC0000000
  %2637 = call noundef float @_ZL7ImTruncf(float noundef %2636)
  %2638 = load ptr, ptr %10, align 8, !tbaa !5
  %2639 = getelementptr inbounds %struct.ImGuiWindow, ptr %2638, i32 0, i32 91
  store float %2637, ptr %2639, align 4, !tbaa !287
  br label %2648

2640:                                             ; preds = %2627, %2623, %2556
  %2641 = load ptr, ptr %8, align 8, !tbaa !5
  %2642 = getelementptr inbounds %struct.ImGuiContext, ptr %2641, i32 0, i32 8
  %2643 = load float, ptr %2642, align 8, !tbaa !227
  %2644 = fmul float %2643, 1.600000e+01
  %2645 = call noundef float @_ZL7ImTruncf(float noundef %2644)
  %2646 = load ptr, ptr %10, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiWindow, ptr %2646, i32 0, i32 91
  store float %2645, ptr %2647, align 4, !tbaa !287
  br label %2648

2648:                                             ; preds = %2640, %2631
  %2649 = load ptr, ptr %10, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiWindow, ptr %2649, i32 0, i32 14
  %2651 = getelementptr inbounds %struct.ImVec2, ptr %2650, i32 0, i32 0
  %2652 = load float, ptr %2651, align 8, !tbaa !288
  %2653 = load ptr, ptr %10, align 8, !tbaa !5
  %2654 = getelementptr inbounds %struct.ImGuiWindow, ptr %2653, i32 0, i32 17
  %2655 = getelementptr inbounds %struct.ImVec2, ptr %2654, i32 0, i32 0
  %2656 = load float, ptr %2655, align 8, !tbaa !221
  %2657 = call float @llvm.fmuladd.f32(float %2656, float 2.000000e+00, float %2652)
  %2658 = load ptr, ptr %10, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.ImGuiWindow, ptr %2658, i32 0, i32 80
  %2660 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %2659)
  %2661 = fsub float %2657, %2660
  %2662 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2661)
  %2663 = load ptr, ptr %10, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.ImGuiWindow, ptr %2663, i32 0, i32 34
  %2665 = getelementptr inbounds %struct.ImVec2, ptr %2664, i32 0, i32 0
  store float %2662, ptr %2665, align 4, !tbaa !289
  %2666 = load ptr, ptr %10, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.ImGuiWindow, ptr %2666, i32 0, i32 14
  %2668 = getelementptr inbounds %struct.ImVec2, ptr %2667, i32 0, i32 1
  %2669 = load float, ptr %2668, align 4, !tbaa !290
  %2670 = load ptr, ptr %10, align 8, !tbaa !5
  %2671 = getelementptr inbounds %struct.ImGuiWindow, ptr %2670, i32 0, i32 17
  %2672 = getelementptr inbounds %struct.ImVec2, ptr %2671, i32 0, i32 1
  %2673 = load float, ptr %2672, align 4, !tbaa !291
  %2674 = call float @llvm.fmuladd.f32(float %2673, float 2.000000e+00, float %2669)
  %2675 = load ptr, ptr %10, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiWindow, ptr %2675, i32 0, i32 80
  %2677 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2676)
  %2678 = fsub float %2674, %2677
  %2679 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2678)
  %2680 = load ptr, ptr %10, align 8, !tbaa !5
  %2681 = getelementptr inbounds %struct.ImGuiWindow, ptr %2680, i32 0, i32 34
  %2682 = getelementptr inbounds %struct.ImVec2, ptr %2681, i32 0, i32 1
  store float %2679, ptr %2682, align 4, !tbaa !292
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #12
  %2683 = load ptr, ptr %10, align 8, !tbaa !5
  %2684 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2683)
  store <2 x float> %2684, ptr %88, align 4
  %2685 = load ptr, ptr %10, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.ImGuiWindow, ptr %2685, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2686, ptr align 4 %88, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %89, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2687 = load ptr, ptr %10, align 8, !tbaa !5
  %2688 = getelementptr inbounds %struct.ImGuiWindow, ptr %2687, i32 0, i32 35
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2688, ptr align 4 %89, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #12
  %2689 = load ptr, ptr %10, align 8, !tbaa !5
  %2690 = getelementptr inbounds %struct.ImGuiWindow, ptr %2689, i32 0, i32 27
  store float 0.000000e+00, ptr %2690, align 4, !tbaa !293
  %2691 = load ptr, ptr %10, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiWindow, ptr %2691, i32 0, i32 26
  store float 0.000000e+00, ptr %2692, align 8, !tbaa !294
  %2693 = load ptr, ptr %10, align 8, !tbaa !5
  %2694 = getelementptr inbounds %struct.ImGuiWindow, ptr %2693, i32 0, i32 100
  %2695 = load ptr, ptr %2694, align 8, !tbaa !194
  %2696 = getelementptr inbounds %struct.ImDrawList, ptr %2695, i32 0, i32 0
  %2697 = getelementptr inbounds %struct.ImVector.42, ptr %2696, i32 0, i32 0
  %2698 = load i32, ptr %2697, align 8, !tbaa !295
  %2699 = icmp eq i32 %2698, 1
  br i1 %2699, label %2700, label %2709

2700:                                             ; preds = %2648
  %2701 = load ptr, ptr %10, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.ImGuiWindow, ptr %2701, i32 0, i32 100
  %2703 = load ptr, ptr %2702, align 8, !tbaa !194
  %2704 = getelementptr inbounds %struct.ImDrawList, ptr %2703, i32 0, i32 0
  %2705 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2704, i32 noundef 0)
  %2706 = getelementptr inbounds %struct.ImDrawCmd, ptr %2705, i32 0, i32 4
  %2707 = load i32, ptr %2706, align 8, !tbaa !296
  %2708 = icmp eq i32 %2707, 0
  br label %2709

2709:                                             ; preds = %2700, %2648
  %2710 = phi i1 [ false, %2648 ], [ %2708, %2700 ]
  br i1 %2710, label %2711, label %2712

2711:                                             ; preds = %2709
  br label %2714

2712:                                             ; preds = %2709
  call void @__assert_fail(ptr noundef @.str.160, ptr noundef @.str.3, i32 noundef 8060, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2713:                                             ; No predecessors!
  br label %2714

2714:                                             ; preds = %2713, %2711
  %2715 = load ptr, ptr %10, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiWindow, ptr %2715, i32 0, i32 100
  %2717 = load ptr, ptr %2716, align 8, !tbaa !194
  %2718 = load ptr, ptr %8, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.ImGuiContext, ptr %2718, i32 0, i32 7
  %2720 = load ptr, ptr %2719, align 8, !tbaa !298
  %2721 = getelementptr inbounds %struct.ImFont, ptr %2720, i32 0, i32 6
  %2722 = load ptr, ptr %2721, align 8, !tbaa !299
  %2723 = getelementptr inbounds %struct.ImFontAtlas, ptr %2722, i32 0, i32 2
  %2724 = load i64, ptr %2723, align 8, !tbaa !300
  call void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216) %2717, i64 noundef %2724)
  %2725 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 0
  %2726 = getelementptr inbounds %struct.ImRect, ptr %84, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2725, ptr noundef nonnull align 4 dereferenceable(8) %2726, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #12
  %2727 = load ptr, ptr %10, align 8, !tbaa !5
  %2728 = getelementptr inbounds %struct.ImGuiWindow, ptr %2727, i32 0, i32 118
  %2729 = load i8, ptr %2728, align 1
  %2730 = and i8 %2729, 1
  %2731 = trunc i8 %2730 to i1
  br i1 %2731, label %2732, label %2739

2732:                                             ; preds = %2714
  %2733 = load ptr, ptr %10, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.ImGuiWindow, ptr %2733, i32 0, i32 118
  %2735 = load i8, ptr %2734, align 1
  %2736 = lshr i8 %2735, 2
  %2737 = and i8 %2736, 1
  %2738 = trunc i8 %2737 to i1
  br label %2739

2739:                                             ; preds = %2732, %2714
  %2740 = phi i1 [ true, %2714 ], [ %2738, %2732 ]
  %2741 = zext i1 %2740 to i8
  store i8 %2741, ptr %90, align 1, !tbaa !104
  %2742 = load i8, ptr %90, align 1, !tbaa !104, !range !100, !noundef !101
  %2743 = trunc i8 %2742 to i1
  br i1 %2743, label %2744, label %2896

2744:                                             ; preds = %2739
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #12
  store i8 0, ptr %91, align 1, !tbaa !104
  %2745 = load i32, ptr %7, align 4, !tbaa !9
  %2746 = and i32 %2745, 16777216
  %2747 = icmp ne i32 %2746, 0
  br i1 %2747, label %2748, label %2821

2748:                                             ; preds = %2744
  %2749 = load i32, ptr %7, align 4, !tbaa !9
  %2750 = and i32 %2749, 67108864
  %2751 = icmp ne i32 %2750, 0
  br i1 %2751, label %2821, label %2752

2752:                                             ; preds = %2748
  %2753 = load i8, ptr %29, align 1, !tbaa !104, !range !100, !noundef !101
  %2754 = trunc i8 %2753 to i1
  br i1 %2754, label %2821, label %2755

2755:                                             ; preds = %2752
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #12
  %2756 = load ptr, ptr %22, align 8, !tbaa !5
  %2757 = getelementptr inbounds %struct.ImGuiWindow, ptr %2756, i32 0, i32 78
  %2758 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2757, i32 0, i32 26
  %2759 = getelementptr inbounds %struct.ImVector.4, ptr %2758, i32 0, i32 0
  %2760 = load i32, ptr %2759, align 8, !tbaa !251
  %2761 = icmp sge i32 %2760, 2
  br i1 %2761, label %2762, label %2774

2762:                                             ; preds = %2755
  %2763 = load ptr, ptr %22, align 8, !tbaa !5
  %2764 = getelementptr inbounds %struct.ImGuiWindow, ptr %2763, i32 0, i32 78
  %2765 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2764, i32 0, i32 26
  %2766 = load ptr, ptr %22, align 8, !tbaa !5
  %2767 = getelementptr inbounds %struct.ImGuiWindow, ptr %2766, i32 0, i32 78
  %2768 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2767, i32 0, i32 26
  %2769 = getelementptr inbounds %struct.ImVector.4, ptr %2768, i32 0, i32 0
  %2770 = load i32, ptr %2769, align 8, !tbaa !251
  %2771 = sub nsw i32 %2770, 2
  %2772 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2765, i32 noundef %2771)
  %2773 = load ptr, ptr %2772, align 8, !tbaa !5
  br label %2775

2774:                                             ; preds = %2755
  br label %2775

2775:                                             ; preds = %2774, %2762
  %2776 = phi ptr [ %2773, %2762 ], [ null, %2774 ]
  store ptr %2776, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #12
  %2777 = load ptr, ptr %92, align 8, !tbaa !5
  %2778 = icmp ne ptr %2777, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #12
  br i1 %2778, label %2779, label %2793

2779:                                             ; preds = %2775
  %2780 = load ptr, ptr %92, align 8, !tbaa !5
  %2781 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %2780)
  %2782 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %94, i32 0, i32 0
  %2783 = extractvalue { <2 x float>, <2 x float> } %2781, 0
  store <2 x float> %2783, ptr %2782, align 4
  %2784 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %94, i32 0, i32 1
  %2785 = extractvalue { <2 x float>, <2 x float> } %2781, 1
  store <2 x float> %2785, ptr %2784, align 4
  %2786 = load ptr, ptr %10, align 8, !tbaa !5
  %2787 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %2786)
  %2788 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 0
  %2789 = extractvalue { <2 x float>, <2 x float> } %2787, 0
  store <2 x float> %2789, ptr %2788, align 4
  %2790 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 1
  %2791 = extractvalue { <2 x float>, <2 x float> } %2787, 1
  store <2 x float> %2791, ptr %2790, align 4
  %2792 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %94, ptr noundef nonnull align 4 dereferenceable(16) %95)
  br label %2794

2793:                                             ; preds = %2775
  br label %2794

2794:                                             ; preds = %2793, %2779
  %2795 = phi i1 [ %2792, %2779 ], [ false, %2793 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #12
  %2796 = zext i1 %2795 to i8
  store i8 %2796, ptr %93, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #12
  %2797 = load ptr, ptr %22, align 8, !tbaa !5
  %2798 = getelementptr inbounds %struct.ImGuiWindow, ptr %2797, i32 0, i32 100
  %2799 = load ptr, ptr %2798, align 8, !tbaa !194
  %2800 = getelementptr inbounds %struct.ImDrawList, ptr %2799, i32 0, i32 2
  %2801 = getelementptr inbounds %struct.ImVector.43, ptr %2800, i32 0, i32 0
  %2802 = load i32, ptr %2801, align 8, !tbaa !304
  %2803 = icmp eq i32 %2802, 0
  %2804 = zext i1 %2803 to i8
  store i8 %2804, ptr %96, align 1, !tbaa !104
  %2805 = load ptr, ptr %10, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiWindow, ptr %2805, i32 0, i32 100
  %2807 = load ptr, ptr %2806, align 8, !tbaa !194
  %2808 = getelementptr inbounds %struct.ImDrawList, ptr %2807, i32 0, i32 0
  %2809 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2808)
  %2810 = getelementptr inbounds %struct.ImDrawCmd, ptr %2809, i32 0, i32 4
  %2811 = load i32, ptr %2810, align 8, !tbaa !296
  %2812 = icmp eq i32 %2811, 0
  br i1 %2812, label %2813, label %2820

2813:                                             ; preds = %2794
  %2814 = load i8, ptr %96, align 1, !tbaa !104, !range !100, !noundef !101
  %2815 = trunc i8 %2814 to i1
  br i1 %2815, label %2820, label %2816

2816:                                             ; preds = %2813
  %2817 = load i8, ptr %93, align 1, !tbaa !104, !range !100, !noundef !101
  %2818 = trunc i8 %2817 to i1
  br i1 %2818, label %2820, label %2819

2819:                                             ; preds = %2816
  store i8 1, ptr %91, align 1, !tbaa !104
  br label %2820

2820:                                             ; preds = %2819, %2816, %2813, %2794
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  br label %2821

2821:                                             ; preds = %2820, %2752, %2748, %2744
  %2822 = load i8, ptr %91, align 1, !tbaa !104, !range !100, !noundef !101
  %2823 = trunc i8 %2822 to i1
  br i1 %2823, label %2824, label %2830

2824:                                             ; preds = %2821
  %2825 = load ptr, ptr %22, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.ImGuiWindow, ptr %2825, i32 0, i32 100
  %2827 = load ptr, ptr %2826, align 8, !tbaa !194
  %2828 = load ptr, ptr %10, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.ImGuiWindow, ptr %2828, i32 0, i32 100
  store ptr %2827, ptr %2829, align 8, !tbaa !194
  br label %2830

2830:                                             ; preds = %2824, %2821
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #12
  %2831 = load ptr, ptr %8, align 8, !tbaa !5
  %2832 = getelementptr inbounds %struct.ImGuiContext, ptr %2831, i32 0, i32 164
  %2833 = load ptr, ptr %2832, align 8, !tbaa !305
  %2834 = icmp ne ptr %2833, null
  br i1 %2834, label %2835, label %2839

2835:                                             ; preds = %2830
  %2836 = load ptr, ptr %8, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.ImGuiContext, ptr %2836, i32 0, i32 164
  %2838 = load ptr, ptr %2837, align 8, !tbaa !305
  br label %2843

2839:                                             ; preds = %2830
  %2840 = load ptr, ptr %8, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.ImGuiContext, ptr %2840, i32 0, i32 119
  %2842 = load ptr, ptr %2841, align 8, !tbaa !306
  br label %2843

2843:                                             ; preds = %2839, %2835
  %2844 = phi ptr [ %2838, %2835 ], [ %2842, %2839 ]
  store ptr %2844, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #12
  %2845 = load i8, ptr %65, align 1, !tbaa !104, !range !100, !noundef !101
  %2846 = trunc i8 %2845 to i1
  br i1 %2846, label %2877, label %2847

2847:                                             ; preds = %2843
  %2848 = load ptr, ptr %97, align 8, !tbaa !5
  %2849 = icmp ne ptr %2848, null
  br i1 %2849, label %2850, label %2875

2850:                                             ; preds = %2847
  %2851 = load ptr, ptr %10, align 8, !tbaa !5
  %2852 = getelementptr inbounds %struct.ImGuiWindow, ptr %2851, i32 0, i32 107
  %2853 = load ptr, ptr %2852, align 8, !tbaa !307
  %2854 = load ptr, ptr %97, align 8, !tbaa !5
  %2855 = getelementptr inbounds %struct.ImGuiWindow, ptr %2854, i32 0, i32 107
  %2856 = load ptr, ptr %2855, align 8, !tbaa !307
  %2857 = icmp eq ptr %2853, %2856
  br i1 %2857, label %2873, label %2858

2858:                                             ; preds = %2850
  %2859 = load ptr, ptr %10, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.ImGuiWindow, ptr %2859, i32 0, i32 121
  %2861 = load ptr, ptr %2860, align 8, !tbaa !141
  %2862 = icmp ne ptr %2861, null
  br i1 %2862, label %2863, label %2871

2863:                                             ; preds = %2858
  %2864 = load ptr, ptr %10, align 8, !tbaa !5
  %2865 = getelementptr inbounds %struct.ImGuiWindow, ptr %2864, i32 0, i32 121
  %2866 = load ptr, ptr %2865, align 8, !tbaa !141
  %2867 = load ptr, ptr %97, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.ImGuiWindow, ptr %2867, i32 0, i32 121
  %2869 = load ptr, ptr %2868, align 8, !tbaa !141
  %2870 = icmp eq ptr %2866, %2869
  br label %2871

2871:                                             ; preds = %2863, %2858
  %2872 = phi i1 [ false, %2858 ], [ %2870, %2863 ]
  br label %2873

2873:                                             ; preds = %2871, %2850
  %2874 = phi i1 [ true, %2850 ], [ %2872, %2871 ]
  br label %2875

2875:                                             ; preds = %2873, %2847
  %2876 = phi i1 [ false, %2847 ], [ %2874, %2873 ]
  br label %2877

2877:                                             ; preds = %2875, %2843
  %2878 = phi i1 [ true, %2843 ], [ %2876, %2875 ]
  %2879 = zext i1 %2878 to i8
  store i8 %2879, ptr %98, align 1, !tbaa !104
  %2880 = load ptr, ptr %10, align 8, !tbaa !5
  %2881 = load i8, ptr %98, align 1, !tbaa !104, !range !100, !noundef !101
  %2882 = trunc i8 %2881 to i1
  %2883 = load i8, ptr %66, align 1, !tbaa !104, !range !100, !noundef !101
  %2884 = trunc i8 %2883 to i1
  %2885 = load i32, ptr %70, align 4, !tbaa !9
  %2886 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 0
  %2887 = load float, ptr %71, align 4, !tbaa !156
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2880, ptr noundef nonnull align 4 dereferenceable(16) %86, i1 noundef zeroext %2882, i1 noundef zeroext %2884, i32 noundef %2885, ptr noundef %2886, float noundef %2887)
  %2888 = load i8, ptr %91, align 1, !tbaa !104, !range !100, !noundef !101
  %2889 = trunc i8 %2888 to i1
  br i1 %2889, label %2890, label %2895

2890:                                             ; preds = %2877
  %2891 = load ptr, ptr %10, align 8, !tbaa !5
  %2892 = getelementptr inbounds %struct.ImGuiWindow, ptr %2891, i32 0, i32 101
  %2893 = load ptr, ptr %10, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.ImGuiWindow, ptr %2893, i32 0, i32 100
  store ptr %2892, ptr %2894, align 8, !tbaa !194
  br label %2895

2895:                                             ; preds = %2890, %2877
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #12
  br label %2896

2896:                                             ; preds = %2895, %2739
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #12
  %2897 = load i32, ptr %7, align 4, !tbaa !9
  %2898 = and i32 %2897, 8
  %2899 = icmp ne i32 %2898, 0
  br i1 %2899, label %2904, label %2900

2900:                                             ; preds = %2896
  %2901 = load i32, ptr %7, align 4, !tbaa !9
  %2902 = and i32 %2901, 2048
  %2903 = icmp ne i32 %2902, 0
  br label %2904

2904:                                             ; preds = %2900, %2896
  %2905 = phi i1 [ false, %2896 ], [ %2903, %2900 ]
  %2906 = zext i1 %2905 to i8
  store i8 %2906, ptr %99, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #12
  %2907 = load i32, ptr %7, align 4, !tbaa !9
  %2908 = and i32 %2907, 8
  %2909 = icmp ne i32 %2908, 0
  %2910 = xor i1 %2909, true
  %2911 = zext i1 %2910 to i8
  store i8 %2911, ptr %100, align 1, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #12
  %2912 = load ptr, ptr %10, align 8, !tbaa !5
  %2913 = getelementptr inbounds %struct.ImGuiWindow, ptr %2912, i32 0, i32 16
  %2914 = getelementptr inbounds %struct.ImVec2, ptr %2913, i32 0, i32 0
  %2915 = load float, ptr %2914, align 8, !tbaa !232
  %2916 = fcmp une float %2915, 0.000000e+00
  br i1 %2916, label %2917, label %2922

2917:                                             ; preds = %2904
  %2918 = load ptr, ptr %10, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiWindow, ptr %2918, i32 0, i32 16
  %2920 = getelementptr inbounds %struct.ImVec2, ptr %2919, i32 0, i32 0
  %2921 = load float, ptr %2920, align 8, !tbaa !232
  br label %2952

2922:                                             ; preds = %2904
  %2923 = load i8, ptr %99, align 1, !tbaa !104, !range !100, !noundef !101
  %2924 = trunc i8 %2923 to i1
  br i1 %2924, label %2925, label %2930

2925:                                             ; preds = %2922
  %2926 = load ptr, ptr %10, align 8, !tbaa !5
  %2927 = getelementptr inbounds %struct.ImGuiWindow, ptr %2926, i32 0, i32 14
  %2928 = getelementptr inbounds %struct.ImVec2, ptr %2927, i32 0, i32 0
  %2929 = load float, ptr %2928, align 8, !tbaa !288
  br label %2931

2930:                                             ; preds = %2922
  br label %2931

2931:                                             ; preds = %2930, %2925
  %2932 = phi float [ %2929, %2925 ], [ 0.000000e+00, %2930 ]
  %2933 = load ptr, ptr %10, align 8, !tbaa !5
  %2934 = getelementptr inbounds %struct.ImGuiWindow, ptr %2933, i32 0, i32 12
  %2935 = getelementptr inbounds %struct.ImVec2, ptr %2934, i32 0, i32 0
  %2936 = load float, ptr %2935, align 8, !tbaa !211
  %2937 = load ptr, ptr %10, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.ImGuiWindow, ptr %2937, i32 0, i32 17
  %2939 = getelementptr inbounds %struct.ImVec2, ptr %2938, i32 0, i32 0
  %2940 = load float, ptr %2939, align 8, !tbaa !221
  %2941 = fneg float %2940
  %2942 = call float @llvm.fmuladd.f32(float %2941, float 2.000000e+00, float %2936)
  %2943 = load ptr, ptr %10, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.ImGuiWindow, ptr %2943, i32 0, i32 22
  %2945 = load float, ptr %2944, align 8, !tbaa !241
  %2946 = load ptr, ptr %10, align 8, !tbaa !5
  %2947 = getelementptr inbounds %struct.ImGuiWindow, ptr %2946, i32 0, i32 24
  %2948 = load float, ptr %2947, align 8, !tbaa !242
  %2949 = fadd float %2945, %2948
  %2950 = fsub float %2942, %2949
  %2951 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2932, float noundef %2950)
  br label %2952

2952:                                             ; preds = %2931, %2917
  %2953 = phi float [ %2921, %2917 ], [ %2951, %2931 ]
  store float %2953, ptr %101, align 4, !tbaa !156
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #12
  %2954 = load ptr, ptr %10, align 8, !tbaa !5
  %2955 = getelementptr inbounds %struct.ImGuiWindow, ptr %2954, i32 0, i32 16
  %2956 = getelementptr inbounds %struct.ImVec2, ptr %2955, i32 0, i32 1
  %2957 = load float, ptr %2956, align 4, !tbaa !233
  %2958 = fcmp une float %2957, 0.000000e+00
  br i1 %2958, label %2959, label %2964

2959:                                             ; preds = %2952
  %2960 = load ptr, ptr %10, align 8, !tbaa !5
  %2961 = getelementptr inbounds %struct.ImGuiWindow, ptr %2960, i32 0, i32 16
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %2961, i32 0, i32 1
  %2963 = load float, ptr %2962, align 4, !tbaa !233
  br label %2994

2964:                                             ; preds = %2952
  %2965 = load i8, ptr %100, align 1, !tbaa !104, !range !100, !noundef !101
  %2966 = trunc i8 %2965 to i1
  br i1 %2966, label %2967, label %2972

2967:                                             ; preds = %2964
  %2968 = load ptr, ptr %10, align 8, !tbaa !5
  %2969 = getelementptr inbounds %struct.ImGuiWindow, ptr %2968, i32 0, i32 14
  %2970 = getelementptr inbounds %struct.ImVec2, ptr %2969, i32 0, i32 1
  %2971 = load float, ptr %2970, align 4, !tbaa !290
  br label %2973

2972:                                             ; preds = %2964
  br label %2973

2973:                                             ; preds = %2972, %2967
  %2974 = phi float [ %2971, %2967 ], [ 0.000000e+00, %2972 ]
  %2975 = load ptr, ptr %10, align 8, !tbaa !5
  %2976 = getelementptr inbounds %struct.ImGuiWindow, ptr %2975, i32 0, i32 12
  %2977 = getelementptr inbounds %struct.ImVec2, ptr %2976, i32 0, i32 1
  %2978 = load float, ptr %2977, align 4, !tbaa !212
  %2979 = load ptr, ptr %10, align 8, !tbaa !5
  %2980 = getelementptr inbounds %struct.ImGuiWindow, ptr %2979, i32 0, i32 17
  %2981 = getelementptr inbounds %struct.ImVec2, ptr %2980, i32 0, i32 1
  %2982 = load float, ptr %2981, align 4, !tbaa !291
  %2983 = fneg float %2982
  %2984 = call float @llvm.fmuladd.f32(float %2983, float 2.000000e+00, float %2978)
  %2985 = load ptr, ptr %10, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.ImGuiWindow, ptr %2985, i32 0, i32 23
  %2987 = load float, ptr %2986, align 4, !tbaa !243
  %2988 = load ptr, ptr %10, align 8, !tbaa !5
  %2989 = getelementptr inbounds %struct.ImGuiWindow, ptr %2988, i32 0, i32 25
  %2990 = load float, ptr %2989, align 4, !tbaa !244
  %2991 = fadd float %2987, %2990
  %2992 = fsub float %2984, %2991
  %2993 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2974, float noundef %2992)
  br label %2994

2994:                                             ; preds = %2973, %2959
  %2995 = phi float [ %2963, %2959 ], [ %2993, %2973 ]
  store float %2995, ptr %102, align 4, !tbaa !156
  %2996 = load ptr, ptr %10, align 8, !tbaa !5
  %2997 = getelementptr inbounds %struct.ImGuiWindow, ptr %2996, i32 0, i32 80
  %2998 = getelementptr inbounds %struct.ImRect, ptr %2997, i32 0, i32 0
  %2999 = getelementptr inbounds %struct.ImVec2, ptr %2998, i32 0, i32 0
  %3000 = load float, ptr %2999, align 8, !tbaa !277
  %3001 = load ptr, ptr %10, align 8, !tbaa !5
  %3002 = getelementptr inbounds %struct.ImGuiWindow, ptr %3001, i32 0, i32 33
  %3003 = getelementptr inbounds %struct.ImVec2, ptr %3002, i32 0, i32 0
  %3004 = load float, ptr %3003, align 4, !tbaa !308
  %3005 = fsub float %3000, %3004
  %3006 = load ptr, ptr %10, align 8, !tbaa !5
  %3007 = getelementptr inbounds %struct.ImGuiWindow, ptr %3006, i32 0, i32 17
  %3008 = getelementptr inbounds %struct.ImVec2, ptr %3007, i32 0, i32 0
  %3009 = load float, ptr %3008, align 8, !tbaa !221
  %3010 = load ptr, ptr %10, align 8, !tbaa !5
  %3011 = getelementptr inbounds %struct.ImGuiWindow, ptr %3010, i32 0, i32 19
  %3012 = load float, ptr %3011, align 4, !tbaa !217
  %3013 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3009, float noundef %3012)
  %3014 = fadd float %3005, %3013
  %3015 = call noundef float @_ZL7ImTruncf(float noundef %3014)
  %3016 = load ptr, ptr %10, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiWindow, ptr %3016, i32 0, i32 82
  %3018 = getelementptr inbounds %struct.ImRect, ptr %3017, i32 0, i32 0
  %3019 = getelementptr inbounds %struct.ImVec2, ptr %3018, i32 0, i32 0
  store float %3015, ptr %3019, align 8, !tbaa !309
  %3020 = load ptr, ptr %10, align 8, !tbaa !5
  %3021 = getelementptr inbounds %struct.ImGuiWindow, ptr %3020, i32 0, i32 80
  %3022 = getelementptr inbounds %struct.ImRect, ptr %3021, i32 0, i32 0
  %3023 = getelementptr inbounds %struct.ImVec2, ptr %3022, i32 0, i32 1
  %3024 = load float, ptr %3023, align 4, !tbaa !279
  %3025 = load ptr, ptr %10, align 8, !tbaa !5
  %3026 = getelementptr inbounds %struct.ImGuiWindow, ptr %3025, i32 0, i32 33
  %3027 = getelementptr inbounds %struct.ImVec2, ptr %3026, i32 0, i32 1
  %3028 = load float, ptr %3027, align 4, !tbaa !310
  %3029 = fsub float %3024, %3028
  %3030 = load ptr, ptr %10, align 8, !tbaa !5
  %3031 = getelementptr inbounds %struct.ImGuiWindow, ptr %3030, i32 0, i32 17
  %3032 = getelementptr inbounds %struct.ImVec2, ptr %3031, i32 0, i32 1
  %3033 = load float, ptr %3032, align 4, !tbaa !291
  %3034 = load ptr, ptr %10, align 8, !tbaa !5
  %3035 = getelementptr inbounds %struct.ImGuiWindow, ptr %3034, i32 0, i32 19
  %3036 = load float, ptr %3035, align 4, !tbaa !217
  %3037 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3033, float noundef %3036)
  %3038 = fadd float %3029, %3037
  %3039 = call noundef float @_ZL7ImTruncf(float noundef %3038)
  %3040 = load ptr, ptr %10, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiWindow, ptr %3040, i32 0, i32 82
  %3042 = getelementptr inbounds %struct.ImRect, ptr %3041, i32 0, i32 0
  %3043 = getelementptr inbounds %struct.ImVec2, ptr %3042, i32 0, i32 1
  store float %3039, ptr %3043, align 4, !tbaa !311
  %3044 = load ptr, ptr %10, align 8, !tbaa !5
  %3045 = getelementptr inbounds %struct.ImGuiWindow, ptr %3044, i32 0, i32 82
  %3046 = getelementptr inbounds %struct.ImRect, ptr %3045, i32 0, i32 0
  %3047 = getelementptr inbounds %struct.ImVec2, ptr %3046, i32 0, i32 0
  %3048 = load float, ptr %3047, align 8, !tbaa !309
  %3049 = load float, ptr %101, align 4, !tbaa !156
  %3050 = fadd float %3048, %3049
  %3051 = load ptr, ptr %10, align 8, !tbaa !5
  %3052 = getelementptr inbounds %struct.ImGuiWindow, ptr %3051, i32 0, i32 82
  %3053 = getelementptr inbounds %struct.ImRect, ptr %3052, i32 0, i32 1
  %3054 = getelementptr inbounds %struct.ImVec2, ptr %3053, i32 0, i32 0
  store float %3050, ptr %3054, align 8, !tbaa !312
  %3055 = load ptr, ptr %10, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.ImGuiWindow, ptr %3055, i32 0, i32 82
  %3057 = getelementptr inbounds %struct.ImRect, ptr %3056, i32 0, i32 0
  %3058 = getelementptr inbounds %struct.ImVec2, ptr %3057, i32 0, i32 1
  %3059 = load float, ptr %3058, align 4, !tbaa !311
  %3060 = load float, ptr %102, align 4, !tbaa !156
  %3061 = fadd float %3059, %3060
  %3062 = load ptr, ptr %10, align 8, !tbaa !5
  %3063 = getelementptr inbounds %struct.ImGuiWindow, ptr %3062, i32 0, i32 82
  %3064 = getelementptr inbounds %struct.ImRect, ptr %3063, i32 0, i32 1
  %3065 = getelementptr inbounds %struct.ImVec2, ptr %3064, i32 0, i32 1
  store float %3061, ptr %3065, align 4, !tbaa !313
  %3066 = load ptr, ptr %10, align 8, !tbaa !5
  %3067 = getelementptr inbounds %struct.ImGuiWindow, ptr %3066, i32 0, i32 82
  %3068 = load ptr, ptr %10, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiWindow, ptr %3068, i32 0, i32 83
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3069, ptr align 8 %3067, i64 16, i1 false), !tbaa.struct !193
  %3070 = load ptr, ptr %10, align 8, !tbaa !5
  %3071 = getelementptr inbounds %struct.ImGuiWindow, ptr %3070, i32 0, i32 11
  %3072 = getelementptr inbounds %struct.ImVec2, ptr %3071, i32 0, i32 0
  %3073 = load float, ptr %3072, align 8, !tbaa !276
  %3074 = load ptr, ptr %10, align 8, !tbaa !5
  %3075 = getelementptr inbounds %struct.ImGuiWindow, ptr %3074, i32 0, i32 33
  %3076 = getelementptr inbounds %struct.ImVec2, ptr %3075, i32 0, i32 0
  %3077 = load float, ptr %3076, align 4, !tbaa !308
  %3078 = fsub float %3073, %3077
  %3079 = load ptr, ptr %10, align 8, !tbaa !5
  %3080 = getelementptr inbounds %struct.ImGuiWindow, ptr %3079, i32 0, i32 17
  %3081 = getelementptr inbounds %struct.ImVec2, ptr %3080, i32 0, i32 0
  %3082 = load float, ptr %3081, align 8, !tbaa !221
  %3083 = fadd float %3078, %3082
  %3084 = load ptr, ptr %10, align 8, !tbaa !5
  %3085 = getelementptr inbounds %struct.ImGuiWindow, ptr %3084, i32 0, i32 22
  %3086 = load float, ptr %3085, align 8, !tbaa !241
  %3087 = fadd float %3083, %3086
  %3088 = load ptr, ptr %10, align 8, !tbaa !5
  %3089 = getelementptr inbounds %struct.ImGuiWindow, ptr %3088, i32 0, i32 85
  %3090 = getelementptr inbounds %struct.ImRect, ptr %3089, i32 0, i32 0
  %3091 = getelementptr inbounds %struct.ImVec2, ptr %3090, i32 0, i32 0
  store float %3087, ptr %3091, align 8, !tbaa !314
  %3092 = load ptr, ptr %10, align 8, !tbaa !5
  %3093 = getelementptr inbounds %struct.ImGuiWindow, ptr %3092, i32 0, i32 11
  %3094 = getelementptr inbounds %struct.ImVec2, ptr %3093, i32 0, i32 1
  %3095 = load float, ptr %3094, align 4, !tbaa !278
  %3096 = load ptr, ptr %10, align 8, !tbaa !5
  %3097 = getelementptr inbounds %struct.ImGuiWindow, ptr %3096, i32 0, i32 33
  %3098 = getelementptr inbounds %struct.ImVec2, ptr %3097, i32 0, i32 1
  %3099 = load float, ptr %3098, align 4, !tbaa !310
  %3100 = fsub float %3095, %3099
  %3101 = load ptr, ptr %10, align 8, !tbaa !5
  %3102 = getelementptr inbounds %struct.ImGuiWindow, ptr %3101, i32 0, i32 17
  %3103 = getelementptr inbounds %struct.ImVec2, ptr %3102, i32 0, i32 1
  %3104 = load float, ptr %3103, align 4, !tbaa !291
  %3105 = fadd float %3100, %3104
  %3106 = load ptr, ptr %10, align 8, !tbaa !5
  %3107 = getelementptr inbounds %struct.ImGuiWindow, ptr %3106, i32 0, i32 23
  %3108 = load float, ptr %3107, align 4, !tbaa !243
  %3109 = fadd float %3105, %3108
  %3110 = load ptr, ptr %10, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.ImGuiWindow, ptr %3110, i32 0, i32 85
  %3112 = getelementptr inbounds %struct.ImRect, ptr %3111, i32 0, i32 0
  %3113 = getelementptr inbounds %struct.ImVec2, ptr %3112, i32 0, i32 1
  store float %3109, ptr %3113, align 4, !tbaa !315
  %3114 = load ptr, ptr %10, align 8, !tbaa !5
  %3115 = getelementptr inbounds %struct.ImGuiWindow, ptr %3114, i32 0, i32 85
  %3116 = getelementptr inbounds %struct.ImRect, ptr %3115, i32 0, i32 0
  %3117 = getelementptr inbounds %struct.ImVec2, ptr %3116, i32 0, i32 0
  %3118 = load float, ptr %3117, align 8, !tbaa !314
  %3119 = load ptr, ptr %10, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiWindow, ptr %3119, i32 0, i32 16
  %3121 = getelementptr inbounds %struct.ImVec2, ptr %3120, i32 0, i32 0
  %3122 = load float, ptr %3121, align 8, !tbaa !232
  %3123 = fcmp une float %3122, 0.000000e+00
  br i1 %3123, label %3124, label %3129

3124:                                             ; preds = %2994
  %3125 = load ptr, ptr %10, align 8, !tbaa !5
  %3126 = getelementptr inbounds %struct.ImGuiWindow, ptr %3125, i32 0, i32 16
  %3127 = getelementptr inbounds %struct.ImVec2, ptr %3126, i32 0, i32 0
  %3128 = load float, ptr %3127, align 8, !tbaa !232
  br label %3148

3129:                                             ; preds = %2994
  %3130 = load ptr, ptr %10, align 8, !tbaa !5
  %3131 = getelementptr inbounds %struct.ImGuiWindow, ptr %3130, i32 0, i32 12
  %3132 = getelementptr inbounds %struct.ImVec2, ptr %3131, i32 0, i32 0
  %3133 = load float, ptr %3132, align 8, !tbaa !211
  %3134 = load ptr, ptr %10, align 8, !tbaa !5
  %3135 = getelementptr inbounds %struct.ImGuiWindow, ptr %3134, i32 0, i32 17
  %3136 = getelementptr inbounds %struct.ImVec2, ptr %3135, i32 0, i32 0
  %3137 = load float, ptr %3136, align 8, !tbaa !221
  %3138 = fneg float %3137
  %3139 = call float @llvm.fmuladd.f32(float %3138, float 2.000000e+00, float %3133)
  %3140 = load ptr, ptr %10, align 8, !tbaa !5
  %3141 = getelementptr inbounds %struct.ImGuiWindow, ptr %3140, i32 0, i32 22
  %3142 = load float, ptr %3141, align 8, !tbaa !241
  %3143 = load ptr, ptr %10, align 8, !tbaa !5
  %3144 = getelementptr inbounds %struct.ImGuiWindow, ptr %3143, i32 0, i32 24
  %3145 = load float, ptr %3144, align 8, !tbaa !242
  %3146 = fadd float %3142, %3145
  %3147 = fsub float %3139, %3146
  br label %3148

3148:                                             ; preds = %3129, %3124
  %3149 = phi float [ %3128, %3124 ], [ %3147, %3129 ]
  %3150 = fadd float %3118, %3149
  %3151 = load ptr, ptr %10, align 8, !tbaa !5
  %3152 = getelementptr inbounds %struct.ImGuiWindow, ptr %3151, i32 0, i32 85
  %3153 = getelementptr inbounds %struct.ImRect, ptr %3152, i32 0, i32 1
  %3154 = getelementptr inbounds %struct.ImVec2, ptr %3153, i32 0, i32 0
  store float %3150, ptr %3154, align 8, !tbaa !316
  %3155 = load ptr, ptr %10, align 8, !tbaa !5
  %3156 = getelementptr inbounds %struct.ImGuiWindow, ptr %3155, i32 0, i32 85
  %3157 = getelementptr inbounds %struct.ImRect, ptr %3156, i32 0, i32 0
  %3158 = getelementptr inbounds %struct.ImVec2, ptr %3157, i32 0, i32 1
  %3159 = load float, ptr %3158, align 4, !tbaa !315
  %3160 = load ptr, ptr %10, align 8, !tbaa !5
  %3161 = getelementptr inbounds %struct.ImGuiWindow, ptr %3160, i32 0, i32 16
  %3162 = getelementptr inbounds %struct.ImVec2, ptr %3161, i32 0, i32 1
  %3163 = load float, ptr %3162, align 4, !tbaa !233
  %3164 = fcmp une float %3163, 0.000000e+00
  br i1 %3164, label %3165, label %3170

3165:                                             ; preds = %3148
  %3166 = load ptr, ptr %10, align 8, !tbaa !5
  %3167 = getelementptr inbounds %struct.ImGuiWindow, ptr %3166, i32 0, i32 16
  %3168 = getelementptr inbounds %struct.ImVec2, ptr %3167, i32 0, i32 1
  %3169 = load float, ptr %3168, align 4, !tbaa !233
  br label %3189

3170:                                             ; preds = %3148
  %3171 = load ptr, ptr %10, align 8, !tbaa !5
  %3172 = getelementptr inbounds %struct.ImGuiWindow, ptr %3171, i32 0, i32 12
  %3173 = getelementptr inbounds %struct.ImVec2, ptr %3172, i32 0, i32 1
  %3174 = load float, ptr %3173, align 4, !tbaa !212
  %3175 = load ptr, ptr %10, align 8, !tbaa !5
  %3176 = getelementptr inbounds %struct.ImGuiWindow, ptr %3175, i32 0, i32 17
  %3177 = getelementptr inbounds %struct.ImVec2, ptr %3176, i32 0, i32 1
  %3178 = load float, ptr %3177, align 4, !tbaa !291
  %3179 = fneg float %3178
  %3180 = call float @llvm.fmuladd.f32(float %3179, float 2.000000e+00, float %3174)
  %3181 = load ptr, ptr %10, align 8, !tbaa !5
  %3182 = getelementptr inbounds %struct.ImGuiWindow, ptr %3181, i32 0, i32 23
  %3183 = load float, ptr %3182, align 4, !tbaa !243
  %3184 = load ptr, ptr %10, align 8, !tbaa !5
  %3185 = getelementptr inbounds %struct.ImGuiWindow, ptr %3184, i32 0, i32 25
  %3186 = load float, ptr %3185, align 4, !tbaa !244
  %3187 = fadd float %3183, %3186
  %3188 = fsub float %3180, %3187
  br label %3189

3189:                                             ; preds = %3170, %3165
  %3190 = phi float [ %3169, %3165 ], [ %3188, %3170 ]
  %3191 = fadd float %3159, %3190
  %3192 = load ptr, ptr %10, align 8, !tbaa !5
  %3193 = getelementptr inbounds %struct.ImGuiWindow, ptr %3192, i32 0, i32 85
  %3194 = getelementptr inbounds %struct.ImRect, ptr %3193, i32 0, i32 1
  %3195 = getelementptr inbounds %struct.ImVec2, ptr %3194, i32 0, i32 1
  store float %3191, ptr %3195, align 4, !tbaa !317
  %3196 = load ptr, ptr %10, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.ImGuiWindow, ptr %3196, i32 0, i32 22
  %3198 = load float, ptr %3197, align 8, !tbaa !241
  %3199 = load ptr, ptr %10, align 8, !tbaa !5
  %3200 = getelementptr inbounds %struct.ImGuiWindow, ptr %3199, i32 0, i32 17
  %3201 = getelementptr inbounds %struct.ImVec2, ptr %3200, i32 0, i32 0
  %3202 = load float, ptr %3201, align 8, !tbaa !221
  %3203 = fadd float %3198, %3202
  %3204 = load ptr, ptr %10, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.ImGuiWindow, ptr %3204, i32 0, i32 33
  %3206 = getelementptr inbounds %struct.ImVec2, ptr %3205, i32 0, i32 0
  %3207 = load float, ptr %3206, align 4, !tbaa !308
  %3208 = fsub float %3203, %3207
  %3209 = load ptr, ptr %10, align 8, !tbaa !5
  %3210 = getelementptr inbounds %struct.ImGuiWindow, ptr %3209, i32 0, i32 78
  %3211 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3210, i32 0, i32 11
  %3212 = getelementptr inbounds %struct.ImVec1, ptr %3211, i32 0, i32 0
  store float %3208, ptr %3212, align 4, !tbaa !318
  %3213 = load ptr, ptr %10, align 8, !tbaa !5
  %3214 = getelementptr inbounds %struct.ImGuiWindow, ptr %3213, i32 0, i32 78
  %3215 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3214, i32 0, i32 13
  %3216 = getelementptr inbounds %struct.ImVec1, ptr %3215, i32 0, i32 0
  store float 0.000000e+00, ptr %3216, align 4, !tbaa !319
  %3217 = load ptr, ptr %10, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiWindow, ptr %3217, i32 0, i32 78
  %3219 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3218, i32 0, i32 12
  %3220 = getelementptr inbounds %struct.ImVec1, ptr %3219, i32 0, i32 0
  store float 0.000000e+00, ptr %3220, align 8, !tbaa !320
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #12
  %3221 = load ptr, ptr %10, align 8, !tbaa !5
  %3222 = getelementptr inbounds %struct.ImGuiWindow, ptr %3221, i32 0, i32 11
  %3223 = getelementptr inbounds %struct.ImVec2, ptr %3222, i32 0, i32 0
  %3224 = load float, ptr %3223, align 8, !tbaa !276
  %3225 = fpext float %3224 to double
  %3226 = load ptr, ptr %10, align 8, !tbaa !5
  %3227 = getelementptr inbounds %struct.ImGuiWindow, ptr %3226, i32 0, i32 17
  %3228 = getelementptr inbounds %struct.ImVec2, ptr %3227, i32 0, i32 0
  %3229 = load float, ptr %3228, align 8, !tbaa !221
  %3230 = fpext float %3229 to double
  %3231 = fadd double %3225, %3230
  %3232 = load ptr, ptr %10, align 8, !tbaa !5
  %3233 = getelementptr inbounds %struct.ImGuiWindow, ptr %3232, i32 0, i32 33
  %3234 = getelementptr inbounds %struct.ImVec2, ptr %3233, i32 0, i32 0
  %3235 = load float, ptr %3234, align 4, !tbaa !308
  %3236 = fpext float %3235 to double
  %3237 = fsub double %3231, %3236
  %3238 = load ptr, ptr %10, align 8, !tbaa !5
  %3239 = getelementptr inbounds %struct.ImGuiWindow, ptr %3238, i32 0, i32 22
  %3240 = load float, ptr %3239, align 8, !tbaa !241
  %3241 = fpext float %3240 to double
  %3242 = fadd double %3237, %3241
  %3243 = load ptr, ptr %10, align 8, !tbaa !5
  %3244 = getelementptr inbounds %struct.ImGuiWindow, ptr %3243, i32 0, i32 78
  %3245 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3244, i32 0, i32 12
  %3246 = getelementptr inbounds %struct.ImVec1, ptr %3245, i32 0, i32 0
  %3247 = load float, ptr %3246, align 8, !tbaa !320
  %3248 = fpext float %3247 to double
  %3249 = fadd double %3242, %3248
  store double %3249, ptr %103, align 8, !tbaa !321
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #12
  %3250 = load ptr, ptr %10, align 8, !tbaa !5
  %3251 = getelementptr inbounds %struct.ImGuiWindow, ptr %3250, i32 0, i32 11
  %3252 = getelementptr inbounds %struct.ImVec2, ptr %3251, i32 0, i32 1
  %3253 = load float, ptr %3252, align 4, !tbaa !278
  %3254 = fpext float %3253 to double
  %3255 = load ptr, ptr %10, align 8, !tbaa !5
  %3256 = getelementptr inbounds %struct.ImGuiWindow, ptr %3255, i32 0, i32 17
  %3257 = getelementptr inbounds %struct.ImVec2, ptr %3256, i32 0, i32 1
  %3258 = load float, ptr %3257, align 4, !tbaa !291
  %3259 = fpext float %3258 to double
  %3260 = fadd double %3254, %3259
  %3261 = load ptr, ptr %10, align 8, !tbaa !5
  %3262 = getelementptr inbounds %struct.ImGuiWindow, ptr %3261, i32 0, i32 33
  %3263 = getelementptr inbounds %struct.ImVec2, ptr %3262, i32 0, i32 1
  %3264 = load float, ptr %3263, align 4, !tbaa !310
  %3265 = fpext float %3264 to double
  %3266 = fsub double %3260, %3265
  %3267 = load ptr, ptr %10, align 8, !tbaa !5
  %3268 = getelementptr inbounds %struct.ImGuiWindow, ptr %3267, i32 0, i32 23
  %3269 = load float, ptr %3268, align 4, !tbaa !243
  %3270 = fpext float %3269 to double
  %3271 = fadd double %3266, %3270
  store double %3271, ptr %104, align 8, !tbaa !321
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #12
  %3272 = load double, ptr %103, align 8, !tbaa !321
  %3273 = fptrunc double %3272 to float
  %3274 = load double, ptr %104, align 8, !tbaa !321
  %3275 = fptrunc double %3274 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %105, float noundef %3273, float noundef %3275)
  %3276 = load ptr, ptr %10, align 8, !tbaa !5
  %3277 = getelementptr inbounds %struct.ImGuiWindow, ptr %3276, i32 0, i32 78
  %3278 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3277, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3278, ptr align 4 %105, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #12
  %3279 = load double, ptr %103, align 8, !tbaa !321
  %3280 = load ptr, ptr %10, align 8, !tbaa !5
  %3281 = getelementptr inbounds %struct.ImGuiWindow, ptr %3280, i32 0, i32 78
  %3282 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3281, i32 0, i32 2
  %3283 = getelementptr inbounds %struct.ImVec2, ptr %3282, i32 0, i32 0
  %3284 = load float, ptr %3283, align 8, !tbaa !322
  %3285 = fpext float %3284 to double
  %3286 = fsub double %3279, %3285
  %3287 = fptrunc double %3286 to float
  %3288 = load double, ptr %104, align 8, !tbaa !321
  %3289 = load ptr, ptr %10, align 8, !tbaa !5
  %3290 = getelementptr inbounds %struct.ImGuiWindow, ptr %3289, i32 0, i32 78
  %3291 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3290, i32 0, i32 2
  %3292 = getelementptr inbounds %struct.ImVec2, ptr %3291, i32 0, i32 1
  %3293 = load float, ptr %3292, align 4, !tbaa !323
  %3294 = fpext float %3293 to double
  %3295 = fsub double %3288, %3294
  %3296 = fptrunc double %3295 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %106, float noundef %3287, float noundef %3296)
  %3297 = load ptr, ptr %10, align 8, !tbaa !5
  %3298 = getelementptr inbounds %struct.ImGuiWindow, ptr %3297, i32 0, i32 78
  %3299 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3298, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3299, ptr align 4 %106, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #12
  %3300 = load ptr, ptr %10, align 8, !tbaa !5
  %3301 = getelementptr inbounds %struct.ImGuiWindow, ptr %3300, i32 0, i32 78
  %3302 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3301, i32 0, i32 2
  %3303 = load ptr, ptr %10, align 8, !tbaa !5
  %3304 = getelementptr inbounds %struct.ImGuiWindow, ptr %3303, i32 0, i32 78
  %3305 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3304, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3305, ptr align 8 %3302, i64 8, i1 false), !tbaa.struct !174
  %3306 = load ptr, ptr %10, align 8, !tbaa !5
  %3307 = getelementptr inbounds %struct.ImGuiWindow, ptr %3306, i32 0, i32 78
  %3308 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3307, i32 0, i32 0
  %3309 = load ptr, ptr %10, align 8, !tbaa !5
  %3310 = getelementptr inbounds %struct.ImGuiWindow, ptr %3309, i32 0, i32 78
  %3311 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3310, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3311, ptr align 8 %3308, i64 8, i1 false), !tbaa.struct !174
  %3312 = load ptr, ptr %10, align 8, !tbaa !5
  %3313 = getelementptr inbounds %struct.ImGuiWindow, ptr %3312, i32 0, i32 78
  %3314 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3313, i32 0, i32 2
  %3315 = load ptr, ptr %10, align 8, !tbaa !5
  %3316 = getelementptr inbounds %struct.ImGuiWindow, ptr %3315, i32 0, i32 78
  %3317 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3316, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3317, ptr align 8 %3314, i64 8, i1 false), !tbaa.struct !174
  %3318 = load ptr, ptr %10, align 8, !tbaa !5
  %3319 = getelementptr inbounds %struct.ImGuiWindow, ptr %3318, i32 0, i32 78
  %3320 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3319, i32 0, i32 2
  %3321 = load ptr, ptr %10, align 8, !tbaa !5
  %3322 = getelementptr inbounds %struct.ImGuiWindow, ptr %3321, i32 0, i32 78
  %3323 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3322, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3323, ptr align 8 %3320, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %107, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %3324 = load ptr, ptr %10, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.ImGuiWindow, ptr %3324, i32 0, i32 78
  %3326 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3325, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3326, ptr align 4 %107, i64 8, i1 false), !tbaa.struct !174
  %3327 = load ptr, ptr %10, align 8, !tbaa !5
  %3328 = getelementptr inbounds %struct.ImGuiWindow, ptr %3327, i32 0, i32 78
  %3329 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3328, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3329, ptr align 4 %3326, i64 8, i1 false), !tbaa.struct !174
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #12
  %3330 = load ptr, ptr %10, align 8, !tbaa !5
  %3331 = getelementptr inbounds %struct.ImGuiWindow, ptr %3330, i32 0, i32 78
  %3332 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3331, i32 0, i32 8
  store float 0.000000e+00, ptr %3332, align 4, !tbaa !324
  %3333 = load ptr, ptr %10, align 8, !tbaa !5
  %3334 = getelementptr inbounds %struct.ImGuiWindow, ptr %3333, i32 0, i32 78
  %3335 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3334, i32 0, i32 7
  store float 0.000000e+00, ptr %3335, align 8, !tbaa !325
  %3336 = load ptr, ptr %10, align 8, !tbaa !5
  %3337 = getelementptr inbounds %struct.ImGuiWindow, ptr %3336, i32 0, i32 78
  %3338 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3337, i32 0, i32 10
  store i8 0, ptr %3338, align 1, !tbaa !326
  %3339 = load ptr, ptr %10, align 8, !tbaa !5
  %3340 = getelementptr inbounds %struct.ImGuiWindow, ptr %3339, i32 0, i32 78
  %3341 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3340, i32 0, i32 9
  store i8 0, ptr %3341, align 8, !tbaa !327
  %3342 = load ptr, ptr %10, align 8, !tbaa !5
  %3343 = getelementptr inbounds %struct.ImGuiWindow, ptr %3342, i32 0, i32 78
  %3344 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3343, i32 0, i32 15
  store i32 0, ptr %3344, align 8, !tbaa !171
  %3345 = load ptr, ptr %10, align 8, !tbaa !5
  %3346 = getelementptr inbounds %struct.ImGuiWindow, ptr %3345, i32 0, i32 78
  %3347 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3346, i32 0, i32 17
  %3348 = load i16, ptr %3347, align 2, !tbaa !328
  %3349 = load ptr, ptr %10, align 8, !tbaa !5
  %3350 = getelementptr inbounds %struct.ImGuiWindow, ptr %3349, i32 0, i32 78
  %3351 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3350, i32 0, i32 16
  store i16 %3348, ptr %3351, align 4, !tbaa !329
  %3352 = load ptr, ptr %10, align 8, !tbaa !5
  %3353 = getelementptr inbounds %struct.ImGuiWindow, ptr %3352, i32 0, i32 78
  %3354 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3353, i32 0, i32 17
  store i16 0, ptr %3354, align 2, !tbaa !328
  %3355 = load ptr, ptr %10, align 8, !tbaa !5
  %3356 = getelementptr inbounds %struct.ImGuiWindow, ptr %3355, i32 0, i32 78
  %3357 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3356, i32 0, i32 18
  store i8 1, ptr %3357, align 8, !tbaa !330
  %3358 = load ptr, ptr %10, align 8, !tbaa !5
  %3359 = getelementptr inbounds %struct.ImGuiWindow, ptr %3358, i32 0, i32 78
  %3360 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3359, i32 0, i32 19
  store i8 0, ptr %3360, align 1, !tbaa !331
  %3361 = load ptr, ptr %10, align 8, !tbaa !5
  %3362 = getelementptr inbounds %struct.ImGuiWindow, ptr %3361, i32 0, i32 34
  %3363 = getelementptr inbounds %struct.ImVec2, ptr %3362, i32 0, i32 1
  %3364 = load float, ptr %3363, align 4, !tbaa !292
  %3365 = fcmp ogt float %3364, 0.000000e+00
  %3366 = load ptr, ptr %10, align 8, !tbaa !5
  %3367 = getelementptr inbounds %struct.ImGuiWindow, ptr %3366, i32 0, i32 78
  %3368 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3367, i32 0, i32 20
  %3369 = zext i1 %3365 to i8
  store i8 %3369, ptr %3368, align 2, !tbaa !332
  %3370 = load ptr, ptr %10, align 8, !tbaa !5
  %3371 = getelementptr inbounds %struct.ImGuiWindow, ptr %3370, i32 0, i32 78
  %3372 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3371, i32 0, i32 21
  store i8 0, ptr %3372, align 1, !tbaa !333
  %3373 = load ptr, ptr %10, align 8, !tbaa !5
  %3374 = getelementptr inbounds %struct.ImGuiWindow, ptr %3373, i32 0, i32 78
  %3375 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3374, i32 0, i32 23
  %3376 = load ptr, ptr %9, align 8, !tbaa !5
  %3377 = getelementptr inbounds %struct.ImGuiStyle, ptr %3376, i32 0, i32 16
  %3378 = getelementptr inbounds %struct.ImVec2, ptr %3377, i32 0, i32 0
  %3379 = load float, ptr %3378, align 4, !tbaa !222
  %3380 = load i8, ptr %14, align 1, !tbaa !104, !range !100, !noundef !101
  %3381 = trunc i8 %3380 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %3375, float noundef %3379, i1 noundef zeroext %3381)
  %3382 = load ptr, ptr %10, align 8, !tbaa !5
  %3383 = getelementptr inbounds %struct.ImGuiWindow, ptr %3382, i32 0, i32 78
  %3384 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3383, i32 0, i32 24
  store i32 0, ptr %3384, align 8, !tbaa !334
  %3385 = load ptr, ptr %10, align 8, !tbaa !5
  %3386 = getelementptr inbounds %struct.ImGuiWindow, ptr %3385, i32 0, i32 78
  %3387 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3386, i32 0, i32 25
  store i32 0, ptr %3387, align 4, !tbaa !335
  %3388 = load ptr, ptr %10, align 8, !tbaa !5
  %3389 = getelementptr inbounds %struct.ImGuiWindow, ptr %3388, i32 0, i32 78
  %3390 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3389, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3390, i32 noundef 0)
  %3391 = load ptr, ptr %10, align 8, !tbaa !5
  %3392 = getelementptr inbounds %struct.ImGuiWindow, ptr %3391, i32 0, i32 92
  %3393 = load ptr, ptr %10, align 8, !tbaa !5
  %3394 = getelementptr inbounds %struct.ImGuiWindow, ptr %3393, i32 0, i32 78
  %3395 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3394, i32 0, i32 27
  store ptr %3392, ptr %3395, align 8, !tbaa !336
  %3396 = load ptr, ptr %10, align 8, !tbaa !5
  %3397 = getelementptr inbounds %struct.ImGuiWindow, ptr %3396, i32 0, i32 78
  %3398 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3397, i32 0, i32 28
  store ptr null, ptr %3398, align 8, !tbaa !337
  %3399 = load ptr, ptr %10, align 8, !tbaa !5
  %3400 = getelementptr inbounds %struct.ImGuiWindow, ptr %3399, i32 0, i32 78
  %3401 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3400, i32 0, i32 30
  store i32 1, ptr %3401, align 4, !tbaa !338
  %3402 = load ptr, ptr %22, align 8, !tbaa !5
  %3403 = icmp ne ptr %3402, null
  br i1 %3403, label %3404, label %3409

3404:                                             ; preds = %3189
  %3405 = load ptr, ptr %22, align 8, !tbaa !5
  %3406 = getelementptr inbounds %struct.ImGuiWindow, ptr %3405, i32 0, i32 78
  %3407 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3406, i32 0, i32 30
  %3408 = load i32, ptr %3407, align 4, !tbaa !338
  br label %3410

3409:                                             ; preds = %3189
  br label %3410

3410:                                             ; preds = %3409, %3404
  %3411 = phi i32 [ %3408, %3404 ], [ 1, %3409 ]
  %3412 = load ptr, ptr %10, align 8, !tbaa !5
  %3413 = getelementptr inbounds %struct.ImGuiWindow, ptr %3412, i32 0, i32 78
  %3414 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3413, i32 0, i32 31
  store i32 %3411, ptr %3414, align 8, !tbaa !339
  %3415 = load ptr, ptr %10, align 8, !tbaa !5
  %3416 = getelementptr inbounds %struct.ImGuiWindow, ptr %3415, i32 0, i32 91
  %3417 = load float, ptr %3416, align 4, !tbaa !287
  %3418 = load ptr, ptr %10, align 8, !tbaa !5
  %3419 = getelementptr inbounds %struct.ImGuiWindow, ptr %3418, i32 0, i32 78
  %3420 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3419, i32 0, i32 37
  store float %3417, ptr %3420, align 4, !tbaa !340
  %3421 = load ptr, ptr %10, align 8, !tbaa !5
  %3422 = getelementptr inbounds %struct.ImGuiWindow, ptr %3421, i32 0, i32 78
  %3423 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3422, i32 0, i32 38
  store float -1.000000e+00, ptr %3423, align 8, !tbaa !341
  %3424 = load ptr, ptr %10, align 8, !tbaa !5
  %3425 = getelementptr inbounds %struct.ImGuiWindow, ptr %3424, i32 0, i32 78
  %3426 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3425, i32 0, i32 39
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3426, i32 noundef 0)
  %3427 = load ptr, ptr %10, align 8, !tbaa !5
  %3428 = getelementptr inbounds %struct.ImGuiWindow, ptr %3427, i32 0, i32 78
  %3429 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3428, i32 0, i32 40
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %3429, i32 noundef 0)
  %3430 = load i32, ptr %7, align 4, !tbaa !9
  %3431 = and i32 %3430, 134217728
  %3432 = icmp ne i32 %3431, 0
  br i1 %3432, label %3433, label %3439

3433:                                             ; preds = %3410
  %3434 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 57)
  %3435 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %3434)
  %3436 = load ptr, ptr %10, align 8, !tbaa !5
  %3437 = getelementptr inbounds %struct.ImGuiWindow, ptr %3436, i32 0, i32 78
  %3438 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3437, i32 0, i32 32
  store i32 %3435, ptr %3438, align 4, !tbaa !342
  br label %3439

3439:                                             ; preds = %3433, %3410
  %3440 = load ptr, ptr %10, align 8, !tbaa !5
  %3441 = getelementptr inbounds %struct.ImGuiWindow, ptr %3440, i32 0, i32 64
  %3442 = load i8, ptr %3441, align 2, !tbaa !247
  %3443 = sext i8 %3442 to i32
  %3444 = icmp sgt i32 %3443, 0
  br i1 %3444, label %3445, label %3450

3445:                                             ; preds = %3439
  %3446 = load ptr, ptr %10, align 8, !tbaa !5
  %3447 = getelementptr inbounds %struct.ImGuiWindow, ptr %3446, i32 0, i32 64
  %3448 = load i8, ptr %3447, align 2, !tbaa !247
  %3449 = add i8 %3448, -1
  store i8 %3449, ptr %3447, align 2, !tbaa !247
  br label %3450

3450:                                             ; preds = %3445, %3439
  %3451 = load ptr, ptr %10, align 8, !tbaa !5
  %3452 = getelementptr inbounds %struct.ImGuiWindow, ptr %3451, i32 0, i32 65
  %3453 = load i8, ptr %3452, align 1, !tbaa !248
  %3454 = sext i8 %3453 to i32
  %3455 = icmp sgt i32 %3454, 0
  br i1 %3455, label %3456, label %3461

3456:                                             ; preds = %3450
  %3457 = load ptr, ptr %10, align 8, !tbaa !5
  %3458 = getelementptr inbounds %struct.ImGuiWindow, ptr %3457, i32 0, i32 65
  %3459 = load i8, ptr %3458, align 1, !tbaa !248
  %3460 = add i8 %3459, -1
  store i8 %3460, ptr %3458, align 1, !tbaa !248
  br label %3461

3461:                                             ; preds = %3456, %3450
  %3462 = load ptr, ptr %8, align 8, !tbaa !5
  %3463 = getelementptr inbounds %struct.ImGuiContext, ptr %3462, i32 0, i32 92
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(160) %3463)
  %3464 = load i8, ptr %65, align 1, !tbaa !104, !range !100, !noundef !101
  %3465 = trunc i8 %3464 to i1
  br i1 %3465, label %3466, label %3468

3466:                                             ; preds = %3461
  %3467 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %3467, i32 noundef 2)
  br label %3468

3468:                                             ; preds = %3466, %3461
  %3469 = load i8, ptr %65, align 1, !tbaa !104, !range !100, !noundef !101
  %3470 = trunc i8 %3469 to i1
  br i1 %3470, label %3471, label %3479

3471:                                             ; preds = %3468
  %3472 = load ptr, ptr %10, align 8, !tbaa !5
  %3473 = load ptr, ptr %8, align 8, !tbaa !5
  %3474 = getelementptr inbounds %struct.ImGuiContext, ptr %3473, i32 0, i32 119
  %3475 = load ptr, ptr %3474, align 8, !tbaa !306
  %3476 = icmp eq ptr %3472, %3475
  br i1 %3476, label %3477, label %3479

3477:                                             ; preds = %3471
  %3478 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %3478, i1 noundef zeroext false)
  br label %3479

3479:                                             ; preds = %3477, %3471, %3468
  %3480 = load ptr, ptr %6, align 8, !tbaa !5
  %3481 = icmp ne ptr %3480, null
  br i1 %3481, label %3482, label %3512

3482:                                             ; preds = %3479
  %3483 = load ptr, ptr %10, align 8, !tbaa !5
  %3484 = getelementptr inbounds %struct.ImGuiWindow, ptr %3483, i32 0, i32 7
  %3485 = load ptr, ptr %3484, align 8, !tbaa !197
  %3486 = getelementptr inbounds %struct.ImGuiViewport, ptr %3485, i32 0, i32 16
  %3487 = load i8, ptr %3486, align 1, !tbaa !343, !range !100, !noundef !101
  %3488 = trunc i8 %3487 to i1
  br i1 %3488, label %3489, label %3512

3489:                                             ; preds = %3482
  %3490 = load ptr, ptr %10, align 8, !tbaa !5
  %3491 = getelementptr inbounds %struct.ImGuiWindow, ptr %3490, i32 0, i32 7
  %3492 = load ptr, ptr %3491, align 8, !tbaa !197
  %3493 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %3494 = icmp ne ptr %3492, %3493
  br i1 %3494, label %3495, label %3512

3495:                                             ; preds = %3489
  br label %3496

3496:                                             ; preds = %3495
  %3497 = load ptr, ptr %8, align 8, !tbaa !5
  %3498 = getelementptr inbounds %struct.ImGuiContext, ptr %3497, i32 0, i32 287
  %3499 = load i32, ptr %3498, align 4, !tbaa !344
  %3500 = and i32 %3499, 2048
  %3501 = icmp ne i32 %3500, 0
  br i1 %3501, label %3502, label %3506

3502:                                             ; preds = %3496
  %3503 = load ptr, ptr %10, align 8, !tbaa !5
  %3504 = getelementptr inbounds %struct.ImGuiWindow, ptr %3503, i32 0, i32 1
  %3505 = load ptr, ptr %3504, align 8, !tbaa !205
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef @.str.161, ptr noundef %3505)
  br label %3506

3506:                                             ; preds = %3502, %3496
  br label %3507

3507:                                             ; preds = %3506
  br label %3508

3508:                                             ; preds = %3507
  %3509 = load ptr, ptr %6, align 8, !tbaa !5
  store i8 0, ptr %3509, align 1, !tbaa !104
  %3510 = load ptr, ptr %8, align 8, !tbaa !5
  %3511 = getelementptr inbounds %struct.ImGuiContext, ptr %3510, i32 0, i32 169
  store i8 0, ptr %3511, align 8, !tbaa !345
  br label %3512

3512:                                             ; preds = %3508, %3489, %3482, %3479
  %3513 = load ptr, ptr %8, align 8, !tbaa !5
  %3514 = getelementptr inbounds %struct.ImGuiContext, ptr %3513, i32 0, i32 2
  %3515 = getelementptr inbounds %struct.ImGuiIO, ptr %3514, i32 0, i32 36
  %3516 = load i8, ptr %3515, align 1, !tbaa !346, !range !100, !noundef !101
  %3517 = trunc i8 %3516 to i1
  br i1 %3517, label %3518, label %3540

3518:                                             ; preds = %3512
  %3519 = load ptr, ptr %8, align 8, !tbaa !5
  %3520 = getelementptr inbounds %struct.ImGuiContext, ptr %3519, i32 0, i32 119
  %3521 = load ptr, ptr %3520, align 8, !tbaa !306
  %3522 = icmp ne ptr %3521, null
  br i1 %3522, label %3523, label %3539

3523:                                             ; preds = %3518
  %3524 = load ptr, ptr %8, align 8, !tbaa !5
  %3525 = getelementptr inbounds %struct.ImGuiContext, ptr %3524, i32 0, i32 119
  %3526 = load ptr, ptr %3525, align 8, !tbaa !306
  %3527 = getelementptr inbounds %struct.ImGuiWindow, ptr %3526, i32 0, i32 104
  %3528 = load ptr, ptr %3527, align 8, !tbaa !163
  %3529 = load ptr, ptr %10, align 8, !tbaa !5
  %3530 = icmp eq ptr %3528, %3529
  br i1 %3530, label %3531, label %3539

3531:                                             ; preds = %3523
  %3532 = load ptr, ptr %8, align 8, !tbaa !5
  %3533 = getelementptr inbounds %struct.ImGuiContext, ptr %3532, i32 0, i32 59
  %3534 = load i32, ptr %3533, align 4, !tbaa !237
  %3535 = icmp eq i32 %3534, 0
  br i1 %3535, label %3536, label %3539

3536:                                             ; preds = %3531
  %3537 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef 4644, i32 noundef 0)
  br i1 %3537, label %3538, label %3539

3538:                                             ; preds = %3536
  call void @_ZN5ImGui14LogToClipboardEi(i32 noundef 0)
  br label %3539

3539:                                             ; preds = %3538, %3536, %3531, %3523, %3518
  br label %3540

3540:                                             ; preds = %3539, %3512
  %3541 = load i32, ptr %7, align 4, !tbaa !9
  %3542 = and i32 %3541, 1
  %3543 = icmp ne i32 %3542, 0
  br i1 %3543, label %3574, label %3544

3544:                                             ; preds = %3540
  %3545 = load ptr, ptr %10, align 8, !tbaa !5
  %3546 = getelementptr inbounds %struct.ImGuiWindow, ptr %3545, i32 0, i32 118
  %3547 = load i8, ptr %3546, align 1
  %3548 = and i8 %3547, 1
  %3549 = trunc i8 %3548 to i1
  br i1 %3549, label %3574, label %3550

3550:                                             ; preds = %3544
  %3551 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #12
  %3552 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 0
  %3553 = getelementptr inbounds %struct.ImVec2, ptr %3552, i32 0, i32 0
  %3554 = load float, ptr %3553, align 4, !tbaa !347
  %3555 = load ptr, ptr %10, align 8, !tbaa !5
  %3556 = getelementptr inbounds %struct.ImGuiWindow, ptr %3555, i32 0, i32 19
  %3557 = load float, ptr %3556, align 4, !tbaa !217
  %3558 = fadd float %3554, %3557
  %3559 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 0
  %3560 = getelementptr inbounds %struct.ImVec2, ptr %3559, i32 0, i32 1
  %3561 = load float, ptr %3560, align 4, !tbaa !348
  %3562 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 1
  %3563 = getelementptr inbounds %struct.ImVec2, ptr %3562, i32 0, i32 0
  %3564 = load float, ptr %3563, align 4, !tbaa !349
  %3565 = load ptr, ptr %10, align 8, !tbaa !5
  %3566 = getelementptr inbounds %struct.ImGuiWindow, ptr %3565, i32 0, i32 19
  %3567 = load float, ptr %3566, align 4, !tbaa !217
  %3568 = fsub float %3564, %3567
  %3569 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 1
  %3570 = getelementptr inbounds %struct.ImVec2, ptr %3569, i32 0, i32 1
  %3571 = load float, ptr %3570, align 4, !tbaa !350
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %108, float noundef %3558, float noundef %3561, float noundef %3568, float noundef %3571)
  %3572 = load ptr, ptr %5, align 8, !tbaa !5
  %3573 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %3551, ptr noundef nonnull align 4 dereferenceable(16) %108, ptr noundef %3572, ptr noundef %3573)
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #12
  br label %3600

3574:                                             ; preds = %3544, %3540
  %3575 = load i32, ptr %7, align 4, !tbaa !9
  %3576 = and i32 %3575, 1
  %3577 = icmp ne i32 %3576, 0
  br i1 %3577, label %3599, label %3578

3578:                                             ; preds = %3574
  %3579 = load ptr, ptr %10, align 8, !tbaa !5
  %3580 = getelementptr inbounds %struct.ImGuiWindow, ptr %3579, i32 0, i32 118
  %3581 = load i8, ptr %3580, align 1
  %3582 = and i8 %3581, 1
  %3583 = trunc i8 %3582 to i1
  br i1 %3583, label %3584, label %3599

3584:                                             ; preds = %3578
  %3585 = load ptr, ptr %10, align 8, !tbaa !5
  %3586 = getelementptr inbounds %struct.ImGuiWindow, ptr %3585, i32 0, i32 1
  %3587 = load ptr, ptr %3586, align 8, !tbaa !205
  %3588 = call noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef %3587, ptr noundef null)
  %3589 = load ptr, ptr %10, align 8, !tbaa !5
  %3590 = getelementptr inbounds %struct.ImGuiWindow, ptr %3589, i32 0, i32 1
  %3591 = load ptr, ptr %3590, align 8, !tbaa !205
  %3592 = ptrtoint ptr %3588 to i64
  %3593 = ptrtoint ptr %3591 to i64
  %3594 = sub i64 %3592, %3593
  %3595 = trunc i64 %3594 to i32
  %3596 = load ptr, ptr %10, align 8, !tbaa !5
  %3597 = getelementptr inbounds %struct.ImGuiWindow, ptr %3596, i32 0, i32 1
  %3598 = load ptr, ptr %3597, align 8, !tbaa !205
  call void (ptr, ...) @_ZN5ImGui7LogTextEPKcz(ptr noundef @.str.162, i32 noundef %3595, ptr noundef %3598)
  br label %3599

3599:                                             ; preds = %3584, %3578, %3574
  br label %3600

3600:                                             ; preds = %3599, %3550
  %3601 = load ptr, ptr %10, align 8, !tbaa !5
  %3602 = getelementptr inbounds %struct.ImGuiWindow, ptr %3601, i32 0, i32 86
  %3603 = getelementptr inbounds %struct.ImVec2ih, ptr %3602, i32 0, i32 1
  store i16 0, ptr %3603, align 2, !tbaa !351
  %3604 = load ptr, ptr %10, align 8, !tbaa !5
  %3605 = getelementptr inbounds %struct.ImGuiWindow, ptr %3604, i32 0, i32 86
  %3606 = getelementptr inbounds %struct.ImVec2ih, ptr %3605, i32 0, i32 0
  store i16 0, ptr %3606, align 8, !tbaa !352
  %3607 = load i32, ptr %7, align 4, !tbaa !9
  %3608 = and i32 %3607, 33554432
  %3609 = icmp ne i32 %3608, 0
  br i1 %3609, label %3610, label %3614

3610:                                             ; preds = %3600
  %3611 = load ptr, ptr %10, align 8, !tbaa !5
  %3612 = load ptr, ptr %8, align 8, !tbaa !5
  %3613 = getelementptr inbounds %struct.ImGuiContext, ptr %3612, i32 0, i32 248
  store ptr %3611, ptr %3613, align 8, !tbaa !353
  br label %3614

3614:                                             ; preds = %3610, %3600
  %3615 = load ptr, ptr %8, align 8, !tbaa !5
  %3616 = getelementptr inbounds %struct.ImGuiContext, ptr %3615, i32 0, i32 2
  %3617 = getelementptr inbounds %struct.ImGuiIO, ptr %3616, i32 0, i32 0
  %3618 = load i32, ptr %3617, align 8, !tbaa !213
  %3619 = and i32 %3618, 128
  %3620 = icmp ne i32 %3619, 0
  br i1 %3620, label %3621, label %3676

3621:                                             ; preds = %3614
  %3622 = load ptr, ptr %8, align 8, !tbaa !5
  %3623 = getelementptr inbounds %struct.ImGuiContext, ptr %3622, i32 0, i32 41
  %3624 = load ptr, ptr %3623, align 8, !tbaa !257
  %3625 = load ptr, ptr %10, align 8, !tbaa !5
  %3626 = icmp eq ptr %3624, %3625
  br i1 %3626, label %3627, label %3637

3627:                                             ; preds = %3621
  %3628 = load ptr, ptr %10, align 8, !tbaa !5
  %3629 = getelementptr inbounds %struct.ImGuiWindow, ptr %3628, i32 0, i32 106
  %3630 = load ptr, ptr %3629, align 8, !tbaa !258
  %3631 = getelementptr inbounds %struct.ImGuiWindow, ptr %3630, i32 0, i32 3
  %3632 = load i32, ptr %3631, align 4, !tbaa !131
  %3633 = and i32 %3632, 524288
  %3634 = icmp eq i32 %3633, 0
  br i1 %3634, label %3635, label %3637

3635:                                             ; preds = %3627
  %3636 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef %3636)
  br label %3637

3637:                                             ; preds = %3635, %3627, %3621
  %3638 = load ptr, ptr %8, align 8, !tbaa !5
  %3639 = getelementptr inbounds %struct.ImGuiContext, ptr %3638, i32 0, i32 174
  %3640 = load i8, ptr %3639, align 4, !tbaa !354, !range !100, !noundef !101
  %3641 = trunc i8 %3640 to i1
  br i1 %3641, label %3642, label %3675

3642:                                             ; preds = %3637
  %3643 = load i32, ptr %7, align 4, !tbaa !9
  %3644 = and i32 %3643, 524288
  %3645 = icmp ne i32 %3644, 0
  br i1 %3645, label %3675, label %3646

3646:                                             ; preds = %3642
  %3647 = load ptr, ptr %8, align 8, !tbaa !5
  %3648 = getelementptr inbounds %struct.ImGuiContext, ptr %3647, i32 0, i32 41
  %3649 = load ptr, ptr %3648, align 8, !tbaa !257
  %3650 = icmp eq ptr %3649, null
  br i1 %3650, label %3659, label %3651

3651:                                             ; preds = %3646
  %3652 = load ptr, ptr %8, align 8, !tbaa !5
  %3653 = getelementptr inbounds %struct.ImGuiContext, ptr %3652, i32 0, i32 41
  %3654 = load ptr, ptr %3653, align 8, !tbaa !257
  %3655 = getelementptr inbounds %struct.ImGuiWindow, ptr %3654, i32 0, i32 106
  %3656 = load ptr, ptr %3655, align 8, !tbaa !258
  %3657 = load ptr, ptr %10, align 8, !tbaa !5
  %3658 = icmp ne ptr %3656, %3657
  br i1 %3658, label %3659, label %3674

3659:                                             ; preds = %3651, %3646
  %3660 = load ptr, ptr %10, align 8, !tbaa !5
  %3661 = load ptr, ptr %10, align 8, !tbaa !5
  %3662 = getelementptr inbounds %struct.ImGuiWindow, ptr %3661, i32 0, i32 106
  %3663 = load ptr, ptr %3662, align 8, !tbaa !258
  %3664 = icmp eq ptr %3660, %3663
  br i1 %3664, label %3665, label %3673

3665:                                             ; preds = %3659
  %3666 = load ptr, ptr %10, align 8, !tbaa !5
  %3667 = getelementptr inbounds %struct.ImGuiWindow, ptr %3666, i32 0, i32 3
  %3668 = load i32, ptr %3667, align 4, !tbaa !131
  %3669 = and i32 %3668, 8388608
  %3670 = icmp ne i32 %3669, 0
  br i1 %3670, label %3673, label %3671

3671:                                             ; preds = %3665
  %3672 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef %3672)
  br label %3673

3673:                                             ; preds = %3671, %3665, %3659
  br label %3674

3674:                                             ; preds = %3673, %3651
  br label %3675

3675:                                             ; preds = %3674, %3642, %3637
  br label %3676

3676:                                             ; preds = %3675, %3614
  %3677 = load ptr, ptr %10, align 8, !tbaa !5
  %3678 = getelementptr inbounds %struct.ImGuiWindow, ptr %3677, i32 0, i32 78
  %3679 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3678, i32 0, i32 33
  store i32 0, ptr %3679, align 8, !tbaa !355
  %3680 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 0
  %3681 = getelementptr inbounds %struct.ImRect, ptr %86, i32 0, i32 1
  %3682 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3680, ptr noundef nonnull align 4 dereferenceable(8) %3681, i1 noundef zeroext false)
  %3683 = zext i1 %3682 to i64
  %3684 = select i1 %3682, i32 1, i32 0
  %3685 = load ptr, ptr %10, align 8, !tbaa !5
  %3686 = getelementptr inbounds %struct.ImGuiWindow, ptr %3685, i32 0, i32 78
  %3687 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %3686, i32 0, i32 33
  %3688 = load i32, ptr %3687, align 8, !tbaa !355
  %3689 = or i32 %3688, %3684
  store i32 %3689, ptr %3687, align 8, !tbaa !355
  %3690 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %3690, ptr noundef nonnull align 4 dereferenceable(16) %86)
  %3691 = load ptr, ptr %8, align 8, !tbaa !5
  %3692 = getelementptr inbounds %struct.ImGuiContext, ptr %3691, i32 0, i32 89
  %3693 = load i32, ptr %3692, align 4, !tbaa !356
  %3694 = icmp ne i32 %3693, 0
  br i1 %3694, label %3695, label %3712

3695:                                             ; preds = %3676
  %3696 = load ptr, ptr %10, align 8, !tbaa !5
  %3697 = getelementptr inbounds %struct.ImGuiWindow, ptr %3696, i32 0, i32 2
  %3698 = load i32, ptr %3697, align 8, !tbaa !106
  %3699 = load ptr, ptr %8, align 8, !tbaa !5
  %3700 = getelementptr inbounds %struct.ImGuiContext, ptr %3699, i32 0, i32 89
  %3701 = load i32, ptr %3700, align 4, !tbaa !356
  %3702 = icmp eq i32 %3698, %3701
  br i1 %3702, label %3711, label %3703

3703:                                             ; preds = %3695
  %3704 = load ptr, ptr %10, align 8, !tbaa !5
  %3705 = getelementptr inbounds %struct.ImGuiWindow, ptr %3704, i32 0, i32 29
  %3706 = load i32, ptr %3705, align 4, !tbaa !357
  %3707 = load ptr, ptr %8, align 8, !tbaa !5
  %3708 = getelementptr inbounds %struct.ImGuiContext, ptr %3707, i32 0, i32 89
  %3709 = load i32, ptr %3708, align 4, !tbaa !356
  %3710 = icmp eq i32 %3706, %3709
  br i1 %3710, label %3711, label %3712

3711:                                             ; preds = %3703, %3695
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %3712

3712:                                             ; preds = %3711, %3703, %3676
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  br label %3735

3713:                                             ; preds = %1016, %1011
  %3714 = load ptr, ptr %10, align 8, !tbaa !5
  %3715 = getelementptr inbounds %struct.ImGuiWindow, ptr %3714, i32 0, i32 50
  %3716 = load i8, ptr %3715, align 1, !tbaa !189, !range !100, !noundef !101
  %3717 = trunc i8 %3716 to i1
  br i1 %3717, label %3718, label %3720

3718:                                             ; preds = %3713
  %3719 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL29SetWindowActiveForSkipRefreshP11ImGuiWindow(ptr noundef %3719)
  br label %3720

3720:                                             ; preds = %3718, %3713
  %3721 = load ptr, ptr %10, align 8, !tbaa !5
  %3722 = load ptr, ptr %10, align 8, !tbaa !5
  %3723 = getelementptr inbounds %struct.ImGuiWindow, ptr %3722, i32 0, i32 7
  %3724 = load ptr, ptr %3723, align 8, !tbaa !197
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %3721, ptr noundef %3724)
  %3725 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %3725)
  %3726 = load ptr, ptr %8, align 8, !tbaa !5
  %3727 = getelementptr inbounds %struct.ImGuiContext, ptr %3726, i32 0, i32 92
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(160) %3727)
  %3728 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #12
  %3729 = load ptr, ptr %10, align 8, !tbaa !5
  %3730 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %3729)
  %3731 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %109, i32 0, i32 0
  %3732 = extractvalue { <2 x float>, <2 x float> } %3730, 0
  store <2 x float> %3732, ptr %3731, align 4
  %3733 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %109, i32 0, i32 1
  %3734 = extractvalue { <2 x float>, <2 x float> } %3730, 1
  store <2 x float> %3734, ptr %3733, align 4
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %3728, ptr noundef nonnull align 4 dereferenceable(16) %109)
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #12
  br label %3735

3735:                                             ; preds = %3720, %3712
  %3736 = load i32, ptr %7, align 4, !tbaa !9
  %3737 = and i32 %3736, 8388608
  %3738 = icmp ne i32 %3737, 0
  br i1 %3738, label %3751, label %3739

3739:                                             ; preds = %3735
  %3740 = load ptr, ptr %10, align 8, !tbaa !5
  %3741 = getelementptr inbounds %struct.ImGuiWindow, ptr %3740, i32 0, i32 50
  %3742 = load i8, ptr %3741, align 1, !tbaa !189, !range !100, !noundef !101
  %3743 = trunc i8 %3742 to i1
  br i1 %3743, label %3751, label %3744

3744:                                             ; preds = %3739
  %3745 = load ptr, ptr %10, align 8, !tbaa !5
  %3746 = getelementptr inbounds %struct.ImGuiWindow, ptr %3745, i32 0, i32 81
  %3747 = getelementptr inbounds %struct.ImRect, ptr %3746, i32 0, i32 0
  %3748 = load ptr, ptr %10, align 8, !tbaa !5
  %3749 = getelementptr inbounds %struct.ImGuiWindow, ptr %3748, i32 0, i32 81
  %3750 = getelementptr inbounds %struct.ImRect, ptr %3749, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %3747, ptr noundef nonnull align 4 dereferenceable(8) %3750, i1 noundef zeroext true)
  br label %3751

3751:                                             ; preds = %3744, %3739, %3735
  %3752 = load ptr, ptr %10, align 8, !tbaa !5
  %3753 = getelementptr inbounds %struct.ImGuiWindow, ptr %3752, i32 0, i32 46
  store i8 0, ptr %3753, align 1, !tbaa !358
  %3754 = load ptr, ptr %10, align 8, !tbaa !5
  %3755 = getelementptr inbounds %struct.ImGuiWindow, ptr %3754, i32 0, i32 59
  %3756 = load i16, ptr %3755, align 8, !tbaa !359
  %3757 = add i16 %3756, 1
  store i16 %3757, ptr %3755, align 8, !tbaa !359
  %3758 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %3759 = trunc i8 %3758 to i1
  br i1 %3759, label %3760, label %4051

3760:                                             ; preds = %3751
  %3761 = load ptr, ptr %10, align 8, !tbaa !5
  %3762 = getelementptr inbounds %struct.ImGuiWindow, ptr %3761, i32 0, i32 50
  %3763 = load i8, ptr %3762, align 1, !tbaa !189, !range !100, !noundef !101
  %3764 = trunc i8 %3763 to i1
  br i1 %3764, label %4051, label %3765

3765:                                             ; preds = %3760
  %3766 = load ptr, ptr %10, align 8, !tbaa !5
  %3767 = getelementptr inbounds %struct.ImGuiWindow, ptr %3766, i32 0, i32 118
  %3768 = load i8, ptr %3767, align 1
  %3769 = and i8 %3768, 1
  %3770 = trunc i8 %3769 to i1
  br i1 %3770, label %3771, label %3793

3771:                                             ; preds = %3765
  %3772 = load ptr, ptr %10, align 8, !tbaa !5
  %3773 = getelementptr inbounds %struct.ImGuiWindow, ptr %3772, i32 0, i32 118
  %3774 = load i8, ptr %3773, align 1
  %3775 = lshr i8 %3774, 2
  %3776 = and i8 %3775, 1
  %3777 = trunc i8 %3776 to i1
  br i1 %3777, label %3793, label %3778

3778:                                             ; preds = %3771
  %3779 = load ptr, ptr %10, align 8, !tbaa !5
  %3780 = getelementptr inbounds %struct.ImGuiWindow, ptr %3779, i32 0, i32 89
  %3781 = load i32, ptr %3780, align 4, !tbaa !360
  %3782 = load ptr, ptr %8, align 8, !tbaa !5
  %3783 = getelementptr inbounds %struct.ImGuiContext, ptr %3782, i32 0, i32 14
  %3784 = load i32, ptr %3783, align 8, !tbaa !103
  %3785 = icmp eq i32 %3781, %3784
  br i1 %3785, label %3786, label %3789

3786:                                             ; preds = %3778
  %3787 = load ptr, ptr %10, align 8, !tbaa !5
  %3788 = getelementptr inbounds %struct.ImGuiWindow, ptr %3787, i32 0, i32 70
  store i8 1, ptr %3788, align 1, !tbaa !190
  br label %3792

3789:                                             ; preds = %3778
  %3790 = load ptr, ptr %10, align 8, !tbaa !5
  %3791 = getelementptr inbounds %struct.ImGuiWindow, ptr %3790, i32 0, i32 69
  store i8 1, ptr %3791, align 4, !tbaa !209
  br label %3792

3792:                                             ; preds = %3789, %3786
  br label %3793

3793:                                             ; preds = %3792, %3771, %3765
  %3794 = load i32, ptr %7, align 4, !tbaa !9
  %3795 = and i32 %3794, 16777216
  %3796 = icmp ne i32 %3795, 0
  br i1 %3796, label %3797, label %3928

3797:                                             ; preds = %3793
  %3798 = load i32, ptr %7, align 4, !tbaa !9
  %3799 = and i32 %3798, 268435456
  %3800 = icmp ne i32 %3799, 0
  br i1 %3800, label %3928, label %3801

3801:                                             ; preds = %3797
  %3802 = load i32, ptr %7, align 4, !tbaa !9
  %3803 = and i32 %3802, 1
  %3804 = icmp ne i32 %3803, 0
  br i1 %3804, label %3811, label %3805

3805:                                             ; preds = %3801
  %3806 = load ptr, ptr %10, align 8, !tbaa !5
  %3807 = getelementptr inbounds %struct.ImGuiWindow, ptr %3806, i32 0, i32 118
  %3808 = load i8, ptr %3807, align 1
  %3809 = and i8 %3808, 1
  %3810 = trunc i8 %3809 to i1
  br label %3811

3811:                                             ; preds = %3805, %3801
  %3812 = phi i1 [ true, %3801 ], [ %3810, %3805 ]
  br i1 %3812, label %3813, label %3814

3813:                                             ; preds = %3811
  br label %3816

3814:                                             ; preds = %3811
  call void @__assert_fail(ptr noundef @.str.163, ptr noundef @.str.3, i32 noundef 8283, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

3815:                                             ; No predecessors!
  br label %3816

3816:                                             ; preds = %3815, %3813
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #12
  %3817 = load ptr, ptr %10, align 8, !tbaa !5
  %3818 = getelementptr inbounds %struct.ImGuiWindow, ptr %3817, i32 0, i32 5
  %3819 = load i32, ptr %3818, align 4, !tbaa !135
  %3820 = and i32 %3819, 256
  %3821 = icmp ne i32 %3820, 0
  br i1 %3821, label %3822, label %3844

3822:                                             ; preds = %3816
  %3823 = load ptr, ptr %8, align 8, !tbaa !5
  %3824 = getelementptr inbounds %struct.ImGuiContext, ptr %3823, i32 0, i32 134
  %3825 = load i8, ptr %3824, align 1, !tbaa !361, !range !100, !noundef !101
  %3826 = trunc i8 %3825 to i1
  br i1 %3826, label %3827, label %3842

3827:                                             ; preds = %3822
  %3828 = load ptr, ptr %8, align 8, !tbaa !5
  %3829 = getelementptr inbounds %struct.ImGuiContext, ptr %3828, i32 0, i32 119
  %3830 = load ptr, ptr %3829, align 8, !tbaa !306
  %3831 = icmp ne ptr %3830, null
  br i1 %3831, label %3832, label %3842

3832:                                             ; preds = %3827
  %3833 = load ptr, ptr %8, align 8, !tbaa !5
  %3834 = getelementptr inbounds %struct.ImGuiContext, ptr %3833, i32 0, i32 119
  %3835 = load ptr, ptr %3834, align 8, !tbaa !306
  %3836 = getelementptr inbounds %struct.ImGuiWindow, ptr %3835, i32 0, i32 108
  %3837 = load ptr, ptr %3836, align 8, !tbaa !362
  %3838 = load ptr, ptr %10, align 8, !tbaa !5
  %3839 = getelementptr inbounds %struct.ImGuiWindow, ptr %3838, i32 0, i32 108
  %3840 = load ptr, ptr %3839, align 8, !tbaa !362
  %3841 = icmp eq ptr %3837, %3840
  br label %3842

3842:                                             ; preds = %3832, %3827, %3822
  %3843 = phi i1 [ false, %3827 ], [ false, %3822 ], [ %3841, %3832 ]
  br label %3844

3844:                                             ; preds = %3842, %3816
  %3845 = phi i1 [ false, %3816 ], [ %3843, %3842 ]
  %3846 = zext i1 %3845 to i8
  store i8 %3846, ptr %110, align 1, !tbaa !104
  %3847 = load ptr, ptr %8, align 8, !tbaa !5
  %3848 = getelementptr inbounds %struct.ImGuiContext, ptr %3847, i32 0, i32 267
  %3849 = load i8, ptr %3848, align 8, !tbaa !363, !range !100, !noundef !101
  %3850 = trunc i8 %3849 to i1
  br i1 %3850, label %3898, label %3851

3851:                                             ; preds = %3844
  %3852 = load i8, ptr %110, align 1, !tbaa !104, !range !100, !noundef !101
  %3853 = trunc i8 %3852 to i1
  br i1 %3853, label %3898, label %3854

3854:                                             ; preds = %3851
  %3855 = load ptr, ptr %10, align 8, !tbaa !5
  %3856 = getelementptr inbounds %struct.ImGuiWindow, ptr %3855, i32 0, i32 79
  %3857 = getelementptr inbounds %struct.ImRect, ptr %3856, i32 0, i32 0
  %3858 = getelementptr inbounds %struct.ImVec2, ptr %3857, i32 0, i32 0
  %3859 = load float, ptr %3858, align 8, !tbaa !364
  %3860 = load ptr, ptr %10, align 8, !tbaa !5
  %3861 = getelementptr inbounds %struct.ImGuiWindow, ptr %3860, i32 0, i32 79
  %3862 = getelementptr inbounds %struct.ImRect, ptr %3861, i32 0, i32 1
  %3863 = getelementptr inbounds %struct.ImVec2, ptr %3862, i32 0, i32 0
  %3864 = load float, ptr %3863, align 8, !tbaa !365
  %3865 = fcmp oge float %3859, %3864
  br i1 %3865, label %3878, label %3866

3866:                                             ; preds = %3854
  %3867 = load ptr, ptr %10, align 8, !tbaa !5
  %3868 = getelementptr inbounds %struct.ImGuiWindow, ptr %3867, i32 0, i32 79
  %3869 = getelementptr inbounds %struct.ImRect, ptr %3868, i32 0, i32 0
  %3870 = getelementptr inbounds %struct.ImVec2, ptr %3869, i32 0, i32 1
  %3871 = load float, ptr %3870, align 4, !tbaa !275
  %3872 = load ptr, ptr %10, align 8, !tbaa !5
  %3873 = getelementptr inbounds %struct.ImGuiWindow, ptr %3872, i32 0, i32 79
  %3874 = getelementptr inbounds %struct.ImRect, ptr %3873, i32 0, i32 1
  %3875 = getelementptr inbounds %struct.ImVec2, ptr %3874, i32 0, i32 1
  %3876 = load float, ptr %3875, align 4, !tbaa !366
  %3877 = fcmp oge float %3871, %3876
  br i1 %3877, label %3878, label %3897

3878:                                             ; preds = %3866, %3854
  %3879 = load ptr, ptr %10, align 8, !tbaa !5
  %3880 = getelementptr inbounds %struct.ImGuiWindow, ptr %3879, i32 0, i32 64
  %3881 = load i8, ptr %3880, align 2, !tbaa !247
  %3882 = sext i8 %3881 to i32
  %3883 = icmp sgt i32 %3882, 0
  br i1 %3883, label %3890, label %3884

3884:                                             ; preds = %3878
  %3885 = load ptr, ptr %10, align 8, !tbaa !5
  %3886 = getelementptr inbounds %struct.ImGuiWindow, ptr %3885, i32 0, i32 65
  %3887 = load i8, ptr %3886, align 1, !tbaa !248
  %3888 = sext i8 %3887 to i32
  %3889 = icmp sgt i32 %3888, 0
  br i1 %3889, label %3890, label %3893

3890:                                             ; preds = %3884, %3878
  %3891 = load ptr, ptr %10, align 8, !tbaa !5
  %3892 = getelementptr inbounds %struct.ImGuiWindow, ptr %3891, i32 0, i32 70
  store i8 1, ptr %3892, align 1, !tbaa !190
  br label %3896

3893:                                             ; preds = %3884
  %3894 = load ptr, ptr %10, align 8, !tbaa !5
  %3895 = getelementptr inbounds %struct.ImGuiWindow, ptr %3894, i32 0, i32 69
  store i8 1, ptr %3895, align 4, !tbaa !209
  br label %3896

3896:                                             ; preds = %3893, %3890
  br label %3897

3897:                                             ; preds = %3896, %3866
  br label %3898

3898:                                             ; preds = %3897, %3851, %3844
  %3899 = load ptr, ptr %22, align 8, !tbaa !5
  %3900 = icmp ne ptr %3899, null
  br i1 %3900, label %3901, label %3915

3901:                                             ; preds = %3898
  %3902 = load ptr, ptr %22, align 8, !tbaa !5
  %3903 = getelementptr inbounds %struct.ImGuiWindow, ptr %3902, i32 0, i32 47
  %3904 = load i8, ptr %3903, align 4, !tbaa !240, !range !100, !noundef !101
  %3905 = trunc i8 %3904 to i1
  br i1 %3905, label %3912, label %3906

3906:                                             ; preds = %3901
  %3907 = load ptr, ptr %22, align 8, !tbaa !5
  %3908 = getelementptr inbounds %struct.ImGuiWindow, ptr %3907, i32 0, i32 69
  %3909 = load i8, ptr %3908, align 4, !tbaa !209
  %3910 = sext i8 %3909 to i32
  %3911 = icmp sgt i32 %3910, 0
  br i1 %3911, label %3912, label %3915

3912:                                             ; preds = %3906, %3901
  %3913 = load ptr, ptr %10, align 8, !tbaa !5
  %3914 = getelementptr inbounds %struct.ImGuiWindow, ptr %3913, i32 0, i32 69
  store i8 1, ptr %3914, align 4, !tbaa !209
  br label %3915

3915:                                             ; preds = %3912, %3906, %3898
  %3916 = load ptr, ptr %22, align 8, !tbaa !5
  %3917 = icmp ne ptr %3916, null
  br i1 %3917, label %3918, label %3927

3918:                                             ; preds = %3915
  %3919 = load ptr, ptr %22, align 8, !tbaa !5
  %3920 = getelementptr inbounds %struct.ImGuiWindow, ptr %3919, i32 0, i32 70
  %3921 = load i8, ptr %3920, align 1, !tbaa !190
  %3922 = sext i8 %3921 to i32
  %3923 = icmp sgt i32 %3922, 0
  br i1 %3923, label %3924, label %3927

3924:                                             ; preds = %3918
  %3925 = load ptr, ptr %10, align 8, !tbaa !5
  %3926 = getelementptr inbounds %struct.ImGuiWindow, ptr %3925, i32 0, i32 70
  store i8 1, ptr %3926, align 1, !tbaa !190
  br label %3927

3927:                                             ; preds = %3924, %3918, %3915
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #12
  br label %3928

3928:                                             ; preds = %3927, %3797, %3793
  %3929 = load ptr, ptr %9, align 8, !tbaa !5
  %3930 = getelementptr inbounds %struct.ImGuiStyle, ptr %3929, i32 0, i32 0
  %3931 = load float, ptr %3930, align 4, !tbaa !367
  %3932 = fcmp ole float %3931, 0.000000e+00
  br i1 %3932, label %3933, label %3936

3933:                                             ; preds = %3928
  %3934 = load ptr, ptr %10, align 8, !tbaa !5
  %3935 = getelementptr inbounds %struct.ImGuiWindow, ptr %3934, i32 0, i32 69
  store i8 1, ptr %3935, align 4, !tbaa !209
  br label %3936

3936:                                             ; preds = %3933, %3928
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #12
  %3937 = load ptr, ptr %10, align 8, !tbaa !5
  %3938 = getelementptr inbounds %struct.ImGuiWindow, ptr %3937, i32 0, i32 69
  %3939 = load i8, ptr %3938, align 4, !tbaa !209
  %3940 = sext i8 %3939 to i32
  %3941 = icmp sgt i32 %3940, 0
  br i1 %3941, label %3948, label %3942

3942:                                             ; preds = %3936
  %3943 = load ptr, ptr %10, align 8, !tbaa !5
  %3944 = getelementptr inbounds %struct.ImGuiWindow, ptr %3943, i32 0, i32 70
  %3945 = load i8, ptr %3944, align 1, !tbaa !190
  %3946 = sext i8 %3945 to i32
  %3947 = icmp sgt i32 %3946, 0
  br label %3948

3948:                                             ; preds = %3942, %3936
  %3949 = phi i1 [ true, %3936 ], [ %3947, %3942 ]
  %3950 = zext i1 %3949 to i8
  store i8 %3950, ptr %111, align 1, !tbaa !104
  %3951 = load i8, ptr %111, align 1, !tbaa !104, !range !100, !noundef !101
  %3952 = trunc i8 %3951 to i1
  br i1 %3952, label %3959, label %3953

3953:                                             ; preds = %3948
  %3954 = load ptr, ptr %10, align 8, !tbaa !5
  %3955 = getelementptr inbounds %struct.ImGuiWindow, ptr %3954, i32 0, i32 71
  %3956 = load i8, ptr %3955, align 2, !tbaa !210
  %3957 = sext i8 %3956 to i32
  %3958 = icmp sgt i32 %3957, 0
  br label %3959

3959:                                             ; preds = %3953, %3948
  %3960 = phi i1 [ true, %3948 ], [ %3958, %3953 ]
  %3961 = load ptr, ptr %10, align 8, !tbaa !5
  %3962 = getelementptr inbounds %struct.ImGuiWindow, ptr %3961, i32 0, i32 52
  %3963 = zext i1 %3960 to i8
  store i8 %3963, ptr %3962, align 1, !tbaa !368
  %3964 = load ptr, ptr %10, align 8, !tbaa !5
  %3965 = getelementptr inbounds %struct.ImGuiWindow, ptr %3964, i32 0, i32 72
  %3966 = load i8, ptr %3965, align 1, !tbaa !369
  %3967 = sext i8 %3966 to i32
  %3968 = icmp sgt i32 %3967, 0
  br i1 %3968, label %3969, label %3978

3969:                                             ; preds = %3959
  %3970 = load ptr, ptr %10, align 8, !tbaa !5
  %3971 = getelementptr inbounds %struct.ImGuiWindow, ptr %3970, i32 0, i32 72
  %3972 = load i8, ptr %3971, align 1, !tbaa !369
  %3973 = add i8 %3972, -1
  store i8 %3973, ptr %3971, align 1, !tbaa !369
  %3974 = load ptr, ptr %10, align 8, !tbaa !5
  %3975 = getelementptr inbounds %struct.ImGuiWindow, ptr %3974, i32 0, i32 3
  %3976 = load i32, ptr %3975, align 4, !tbaa !131
  %3977 = or i32 %3976, 197120
  store i32 %3977, ptr %3975, align 4, !tbaa !131
  br label %3978

3978:                                             ; preds = %3969, %3959
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #12
  store i8 0, ptr %112, align 1, !tbaa !104
  %3979 = load ptr, ptr %10, align 8, !tbaa !5
  %3980 = getelementptr inbounds %struct.ImGuiWindow, ptr %3979, i32 0, i32 47
  %3981 = load i8, ptr %3980, align 4, !tbaa !240, !range !100, !noundef !101
  %3982 = trunc i8 %3981 to i1
  br i1 %3982, label %3991, label %3983

3983:                                             ; preds = %3978
  %3984 = load ptr, ptr %10, align 8, !tbaa !5
  %3985 = getelementptr inbounds %struct.ImGuiWindow, ptr %3984, i32 0, i32 44
  %3986 = load i8, ptr %3985, align 1, !tbaa !191, !range !100, !noundef !101
  %3987 = trunc i8 %3986 to i1
  br i1 %3987, label %3988, label %3991

3988:                                             ; preds = %3983
  %3989 = load i8, ptr %111, align 1, !tbaa !104, !range !100, !noundef !101
  %3990 = trunc i8 %3989 to i1
  br i1 %3990, label %3991, label %4011

3991:                                             ; preds = %3988, %3983, %3978
  %3992 = load ptr, ptr %10, align 8, !tbaa !5
  %3993 = getelementptr inbounds %struct.ImGuiWindow, ptr %3992, i32 0, i32 64
  %3994 = load i8, ptr %3993, align 2, !tbaa !247
  %3995 = sext i8 %3994 to i32
  %3996 = icmp sle i32 %3995, 0
  br i1 %3996, label %3997, label %4010

3997:                                             ; preds = %3991
  %3998 = load ptr, ptr %10, align 8, !tbaa !5
  %3999 = getelementptr inbounds %struct.ImGuiWindow, ptr %3998, i32 0, i32 65
  %4000 = load i8, ptr %3999, align 1, !tbaa !248
  %4001 = sext i8 %4000 to i32
  %4002 = icmp sle i32 %4001, 0
  br i1 %4002, label %4003, label %4010

4003:                                             ; preds = %3997
  %4004 = load ptr, ptr %10, align 8, !tbaa !5
  %4005 = getelementptr inbounds %struct.ImGuiWindow, ptr %4004, i32 0, i32 70
  %4006 = load i8, ptr %4005, align 1, !tbaa !190
  %4007 = sext i8 %4006 to i32
  %4008 = icmp sle i32 %4007, 0
  br i1 %4008, label %4009, label %4010

4009:                                             ; preds = %4003
  store i8 1, ptr %112, align 1, !tbaa !104
  br label %4010

4010:                                             ; preds = %4009, %4003, %3997, %3991
  br label %4011

4011:                                             ; preds = %4010, %3988
  %4012 = load i8, ptr %112, align 1, !tbaa !104, !range !100, !noundef !101
  %4013 = trunc i8 %4012 to i1
  %4014 = load ptr, ptr %10, align 8, !tbaa !5
  %4015 = getelementptr inbounds %struct.ImGuiWindow, ptr %4014, i32 0, i32 49
  %4016 = zext i1 %4013 to i8
  store i8 %4016, ptr %4015, align 2, !tbaa !370
  %4017 = load ptr, ptr %10, align 8, !tbaa !5
  %4018 = getelementptr inbounds %struct.ImGuiWindow, ptr %4017, i32 0, i32 49
  %4019 = load i8, ptr %4018, align 2, !tbaa !370, !range !100, !noundef !101
  %4020 = trunc i8 %4019 to i1
  br i1 %4020, label %4021, label %4029

4021:                                             ; preds = %4011
  %4022 = load ptr, ptr %10, align 8, !tbaa !5
  %4023 = getelementptr inbounds %struct.ImGuiWindow, ptr %4022, i32 0, i32 78
  %4024 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %4023, i32 0, i32 16
  %4025 = load i16, ptr %4024, align 4, !tbaa !329
  %4026 = load ptr, ptr %10, align 8, !tbaa !5
  %4027 = getelementptr inbounds %struct.ImGuiWindow, ptr %4026, i32 0, i32 78
  %4028 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %4027, i32 0, i32 17
  store i16 %4025, ptr %4028, align 2, !tbaa !328
  br label %4029

4029:                                             ; preds = %4021, %4011
  %4030 = load ptr, ptr %10, align 8, !tbaa !5
  %4031 = getelementptr inbounds %struct.ImGuiWindow, ptr %4030, i32 0, i32 49
  %4032 = load i8, ptr %4031, align 2, !tbaa !370, !range !100, !noundef !101
  %4033 = trunc i8 %4032 to i1
  br i1 %4033, label %4034, label %4050

4034:                                             ; preds = %4029
  %4035 = load ptr, ptr %10, align 8, !tbaa !5
  %4036 = getelementptr inbounds %struct.ImGuiWindow, ptr %4035, i32 0, i32 51
  %4037 = load i8, ptr %4036, align 8, !tbaa !130, !range !100, !noundef !101
  %4038 = trunc i8 %4037 to i1
  br i1 %4038, label %4050, label %4039

4039:                                             ; preds = %4034
  %4040 = load ptr, ptr %10, align 8, !tbaa !5
  %4041 = getelementptr inbounds %struct.ImGuiWindow, ptr %4040, i32 0, i32 51
  %4042 = load i8, ptr %4041, align 8, !tbaa !130, !range !100, !noundef !101
  %4043 = trunc i8 %4042 to i1
  %4044 = zext i1 %4043 to i32
  %4045 = icmp eq i32 %4044, 0
  br i1 %4045, label %4046, label %4047

4046:                                             ; preds = %4039
  br label %4049

4047:                                             ; preds = %4039
  call void @__assert_fail(ptr noundef @.str.164, ptr noundef @.str.3, i32 noundef 8331, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

4048:                                             ; No predecessors!
  br label %4049

4049:                                             ; preds = %4048, %4046
  br label %4050

4050:                                             ; preds = %4049, %4034, %4029
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #12
  br label %4058

4051:                                             ; preds = %3760, %3751
  %4052 = load i8, ptr %13, align 1, !tbaa !104, !range !100, !noundef !101
  %4053 = trunc i8 %4052 to i1
  br i1 %4053, label %4054, label %4057

4054:                                             ; preds = %4051
  %4055 = load ptr, ptr %10, align 8, !tbaa !5
  %4056 = getelementptr inbounds %struct.ImGuiWindow, ptr %4055, i32 0, i32 49
  store i8 1, ptr %4056, align 2, !tbaa !370
  br label %4057

4057:                                             ; preds = %4054, %4051
  br label %4058

4058:                                             ; preds = %4057, %4050
  %4059 = load ptr, ptr %10, align 8, !tbaa !5
  %4060 = getelementptr inbounds %struct.ImGuiWindow, ptr %4059, i32 0, i32 53
  %4061 = load i8, ptr %4060, align 2, !tbaa !124, !range !100, !noundef !101
  %4062 = trunc i8 %4061 to i1
  br i1 %4062, label %4112, label %4063

4063:                                             ; preds = %4058
  %4064 = load ptr, ptr %8, align 8, !tbaa !5
  %4065 = getelementptr inbounds %struct.ImGuiContext, ptr %4064, i32 0, i32 2
  %4066 = getelementptr inbounds %struct.ImGuiIO, ptr %4065, i32 0, i32 51
  %4067 = load i8, ptr %4066, align 1, !tbaa !371, !range !100, !noundef !101
  %4068 = trunc i8 %4067 to i1
  br i1 %4068, label %4069, label %4072

4069:                                             ; preds = %4063
  %4070 = load i8, ptr %11, align 1, !tbaa !104, !range !100, !noundef !101
  %4071 = trunc i8 %4070 to i1
  br i1 %4071, label %4088, label %4072

4072:                                             ; preds = %4069, %4063
  %4073 = load ptr, ptr %8, align 8, !tbaa !5
  %4074 = getelementptr inbounds %struct.ImGuiContext, ptr %4073, i32 0, i32 2
  %4075 = getelementptr inbounds %struct.ImGuiIO, ptr %4074, i32 0, i32 52
  %4076 = load i8, ptr %4075, align 4, !tbaa !372, !range !100, !noundef !101
  %4077 = trunc i8 %4076 to i1
  br i1 %4077, label %4078, label %4111

4078:                                             ; preds = %4072
  %4079 = load ptr, ptr %8, align 8, !tbaa !5
  %4080 = getelementptr inbounds %struct.ImGuiContext, ptr %4079, i32 0, i32 296
  %4081 = load i8, ptr %4080, align 8, !tbaa !373
  %4082 = sext i8 %4081 to i32
  %4083 = load ptr, ptr %8, align 8, !tbaa !5
  %4084 = getelementptr inbounds %struct.ImGuiContext, ptr %4083, i32 0, i32 32
  %4085 = getelementptr inbounds %struct.ImVector.5, ptr %4084, i32 0, i32 0
  %4086 = load i32, ptr %4085, align 8, !tbaa !122
  %4087 = icmp eq i32 %4082, %4086
  br i1 %4087, label %4088, label %4111

4088:                                             ; preds = %4078, %4069
  %4089 = load ptr, ptr %10, align 8, !tbaa !5
  %4090 = getelementptr inbounds %struct.ImGuiWindow, ptr %4089, i32 0, i32 64
  %4091 = load i8, ptr %4090, align 2, !tbaa !247
  %4092 = sext i8 %4091 to i32
  %4093 = icmp sgt i32 %4092, 0
  br i1 %4093, label %4094, label %4099

4094:                                             ; preds = %4088
  %4095 = load ptr, ptr %10, align 8, !tbaa !5
  %4096 = getelementptr inbounds %struct.ImGuiWindow, ptr %4095, i32 0, i32 64
  %4097 = load i8, ptr %4096, align 2, !tbaa !247
  %4098 = add i8 %4097, 1
  store i8 %4098, ptr %4096, align 2, !tbaa !247
  br label %4099

4099:                                             ; preds = %4094, %4088
  %4100 = load ptr, ptr %10, align 8, !tbaa !5
  %4101 = getelementptr inbounds %struct.ImGuiWindow, ptr %4100, i32 0, i32 65
  %4102 = load i8, ptr %4101, align 1, !tbaa !248
  %4103 = sext i8 %4102 to i32
  %4104 = icmp sgt i32 %4103, 0
  br i1 %4104, label %4105, label %4110

4105:                                             ; preds = %4099
  %4106 = load ptr, ptr %10, align 8, !tbaa !5
  %4107 = getelementptr inbounds %struct.ImGuiWindow, ptr %4106, i32 0, i32 65
  %4108 = load i8, ptr %4107, align 1, !tbaa !248
  %4109 = add i8 %4108, 1
  store i8 %4109, ptr %4107, align 1, !tbaa !248
  br label %4110

4110:                                             ; preds = %4105, %4099
  store i1 false, ptr %4, align 1
  store i32 1, ptr %113, align 4
  br label %4118

4111:                                             ; preds = %4078, %4072
  br label %4112

4112:                                             ; preds = %4111, %4058
  %4113 = load ptr, ptr %10, align 8, !tbaa !5
  %4114 = getelementptr inbounds %struct.ImGuiWindow, ptr %4113, i32 0, i32 49
  %4115 = load i8, ptr %4114, align 2, !tbaa !370, !range !100, !noundef !101
  %4116 = trunc i8 %4115 to i1
  %4117 = xor i1 %4116, true
  store i1 %4117, ptr %4, align 1
  store i32 1, ptr %113, align 4
  br label %4118

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #11 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: 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) #7

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef) #7

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

; 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 @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) #7

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

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

; 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(116) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare 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) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328)) #7 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) #7

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef, i32 noundef) #7

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 5196}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 3096, !24, i64 3392, !10, i64 4596, !10, i64 4600, !6, i64 4608, !17, i64 4616, !17, i64 4620, !17, i64 4624, !17, i64 4628, !26, i64 4632, !29, i64 5168, !10, i64 5176, !10, i64 5180, !10, i64 5184, !10, i64 5188, !10, i64 5192, !14, i64 5196, !14, i64 5197, !14, i64 5198, !14, i64 5199, !6, i64 5200, !7, i64 5208, !30, i64 5224, !30, i64 5240, !18, i64 5256, !10, i64 5260, !31, i64 5264, !31, i64 5280, !31, i64 5296, !32, i64 5312, !33, i64 5328, !10, i64 5344, !17, i64 5348, !10, i64 5352, !6, i64 5360, !6, i64 5368, !6, i64 5376, !6, i64 5384, !6, i64 5392, !6, i64 5400, !16, i64 5408, !10, i64 5416, !10, i64 5420, !17, i64 5424, !16, i64 5428, !16, i64 5436, !10, i64 5444, !10, i64 5448, !10, i64 5452, !10, i64 5456, !10, i64 5460, !17, i64 5464, !17, i64 5468, !14, i64 5472, !14, i64 5473, !14, i64 5474, !10, i64 5476, !10, i64 5480, !17, i64 5484, !14, i64 5488, !14, i64 5489, !14, i64 5490, !14, i64 5491, !14, i64 5492, !14, i64 5493, !14, i64 5494, !10, i64 5495, !16, i64 5496, !6, i64 5504, !35, i64 5512, !10, i64 5516, !36, i64 5520, !37, i64 5532, !10, i64 5540, !17, i64 5544, !29, i64 5552, !29, i64 5560, !29, i64 5568, !38, i64 5576, !7, i64 5596, !39, i64 7456, !10, i64 7800, !14, i64 7804, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !41, i64 7824, !43, i64 7880, !45, i64 7960, !14, i64 8120, !10, i64 8124, !47, i64 8128, !48, i64 8144, !49, i64 8160, !50, i64 8176, !51, i64 8192, !52, i64 8208, !53, i64 8224, !53, i64 8240, !54, i64 8256, !55, i64 8272, !6, i64 8288, !6, i64 8296, !6, i64 8304, !10, i64 8312, !56, i64 8320, !44, i64 8368, !10, i64 8384, !10, i64 8388, !10, i64 8392, !14, i64 8396, !14, i64 8397, !14, i64 8398, !14, i64 8399, !10, i64 8400, !6, i64 8408, !10, i64 8416, !57, i64 8420, !10, i64 8424, !10, i64 8428, !10, i64 8432, !10, i64 8436, !50, i64 8440, !10, i64 8456, !17, i64 8460, !10, i64 8464, !10, i64 8468, !35, i64 8472, !42, i64 8480, !7, i64 8488, !14, i64 8489, !14, i64 8490, !14, i64 8491, !58, i64 8496, !14, i64 8552, !14, i64 8553, !14, i64 8554, !10, i64 8556, !10, i64 8560, !10, i64 8564, !25, i64 8568, !25, i64 8572, !25, i64 8576, !44, i64 8580, !44, i64 8596, !10, i64 8612, !10, i64 8616, !10, i64 8620, !58, i64 8624, !58, i64 8680, !58, i64 8736, !58, i64 8792, !10, i64 8848, !10, i64 8852, !10, i64 8856, !10, i64 8860, !14, i64 8864, !14, i64 8865, !10, i64 8868, !10, i64 8872, !6, i64 8880, !6, i64 8888, !6, i64 8896, !17, i64 8904, !17, i64 8908, !14, i64 8912, !59, i64 8916, !16, i64 8920, !16, i64 8928, !17, i64 8936, !14, i64 8940, !14, i64 8941, !14, i64 8942, !10, i64 8944, !10, i64 8948, !10, i64 8952, !60, i64 8960, !44, i64 9024, !44, i64 9040, !10, i64 9056, !10, i64 9060, !17, i64 9064, !10, i64 9068, !10, i64 9072, !10, i64 9076, !10, i64 9080, !61, i64 9088, !7, i64 9104, !10, i64 9120, !62, i64 9128, !6, i64 9144, !10, i64 9152, !10, i64 9156, !63, i64 9160, !64, i64 9176, !66, i64 9216, !67, i64 9232, !6, i64 9248, !68, i64 9256, !70, i64 9296, !71, i64 9312, !72, i64 9328, !6, i64 9432, !10, i64 9440, !73, i64 9448, !74, i64 9464, !10, i64 9504, !10, i64 9508, !17, i64 9512, !17, i64 9516, !10, i64 9520, !10, i64 9524, !10, i64 9528, !17, i64 9532, !16, i64 9536, !76, i64 9544, !78, i64 9664, !79, i64 9688, !10, i64 9808, !37, i64 9812, !10, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !10, i64 9836, !17, i64 9840, !17, i64 9844, !10, i64 9848, !27, i64 9852, !81, i64 9868, !44, i64 9916, !14, i64 9932, !19, i64 9934, !17, i64 9936, !17, i64 9940, !17, i64 9944, !14, i64 9948, !14, i64 9949, !17, i64 9952, !17, i64 9956, !17, i64 9960, !19, i64 9964, !19, i64 9966, !6, i64 9968, !77, i64 9976, !82, i64 9992, !83, i64 10008, !85, i64 10112, !85, i64 10128, !10, i64 10144, !86, i64 10152, !6, i64 10208, !14, i64 10216, !17, i64 10220, !89, i64 10224, !90, i64 10240, !91, i64 10256, !92, i64 10272, !93, i64 10288, !10, i64 10304, !7, i64 10312, !14, i64 10416, !10, i64 10420, !6, i64 10424, !6, i64 10432, !89, i64 10440, !6, i64 10456, !6, i64 10464, !17, i64 10472, !14, i64 10476, !10, i64 10480, !10, i64 10484, !10, i64 10488, !6, i64 10496, !6, i64 10504, !16, i64 10512, !14, i64 10520, !10, i64 10524, !94, i64 10528, !6, i64 10552, !10, i64 10560, !10, i64 10564, !89, i64 10568, !95, i64 10584, !10, i64 10608, !10, i64 10612, !7, i64 10616, !7, i64 10617, !14, i64 10618, !10, i64 10620, !7, i64 10624, !14, i64 10625, !7, i64 10626, !10, i64 10628, !17, i64 10632, !27, i64 10636, !96, i64 10652, !97, i64 10680, !99, i64 10736, !6, i64 10800, !7, i64 10808, !10, i64 11048, !10, i64 11052, !17, i64 11056, !10, i64 11060, !10, i64 11064, !10, i64 11068, !77, i64 11072, !7, i64 11088}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !17, i64 56, !14, i64 60, !6, i64 64, !16, i64 72, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91, !14, i64 92, !14, i64 93, !14, i64 94, !14, i64 95, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !14, i64 100, !14, i64 101, !14, i64 102, !14, i64 103, !14, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !14, i64 132, !14, i64 133, !14, i64 134, !14, i64 135, !14, i64 136, !14, i64 137, !14, i64 138, !14, i64 139, !14, i64 140, !14, i64 141, !14, i64 142, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !17, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !16, i64 212, !6, i64 224, !16, i64 232, !7, i64 240, !17, i64 248, !17, i64 252, !18, i64 256, !10, i64 260, !14, i64 264, !14, i64 265, !14, i64 266, !14, i64 267, !10, i64 268, !7, i64 272, !14, i64 2752, !16, i64 2756, !7, i64 2764, !7, i64 2808, !7, i64 2848, !7, i64 2853, !7, i64 2858, !7, i64 2868, !7, i64 2878, !7, i64 2888, !7, i64 2928, !7, i64 2933, !14, i64 2938, !14, i64 2939, !7, i64 2940, !7, i64 2960, !7, i64 2980, !7, i64 3020, !17, i64 3040, !14, i64 3044, !14, i64 3045, !19, i64 3046, !20, i64 3048, !6, i64 3064, !6, i64 3072, !6, i64 3080}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !19, i64 56, !6, i64 64, !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, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !22, i64 264, !23, i64 280}
!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, !17, i64 24, !16, i64 28, !16, i64 36, !25, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !17, i64 60, !16, i64 64, !17, i64 72, !17, i64 76, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !17, i64 168, !16, i64 172, !25, i64 180, !16, i64 184, !16, i64 192, !17, i64 200, !16, i64 204, !16, i64 212, !16, i64 220, !16, i64 228, !17, i64 236, !17, i64 240, !14, i64 244, !14, i64 245, !14, i64 246, !17, i64 248, !17, i64 252, !7, i64 256, !17, i64 1184, !17, i64 1188, !17, i64 1192, !10, i64 1196, !10, i64 1200}
!25 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!26 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !6, i64 16, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !10, i64 44, !27, i64 48, !28, i64 64, !7, i64 80, !17, i64 464, !7, i64 468}
!27 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!28 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"double", !7, i64 0}
!30 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS12ImGuiStorage", !34, i64 0}
!34 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!36 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 9}
!37 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!38 = !{!"_ZTS10ImBitArrayILi155ELin512EE", !7, i64 0}
!39 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !40, i64 312, !40, i64 328}
!40 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !42, i64 16, !17, i64 24, !10, i64 28, !10, i64 32, !14, i64 36, !7, i64 37, !37, i64 38, !10, i64 48}
!42 = !{!"long long", !7, i64 0}
!43 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !44, i64 12, !44, i64 28, !44, i64 44, !44, i64 60, !10, i64 76}
!44 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!45 = !{!"_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, !10, i64 64, !14, i64 68, !14, i64 69, !44, i64 72, !6, i64 88, !6, i64 96, !17, i64 104, !10, i64 108, !10, i64 112, !46, i64 116, !16, i64 148, !10, i64 156}
!46 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !14, i64 28, !14, i64 29}
!47 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS20ImGuiPlatformMonitor", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !17, i64 32, !6, i64 40}
!57 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!58 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !44, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !42, i64 48}
!59 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!60 = !{!"_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}
!61 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS6ImPoolI10ImGuiTableE", !65, i64 0, !33, i64 16, !10, i64 32, !10, i64 36}
!65 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !69, i64 0, !33, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 9, !16, i64 12, !16, i64 20, !16, i64 28, !6, i64 40, !14, i64 48, !44, i64 52, !44, i64 68, !44, i64 84}
!73 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !75, i64 0, !33, i64 16, !10, i64 32, !10, i64 36}
!75 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !77, i64 40, !77, i64 56, !77, i64 72, !10, i64 88, !16, i64 92, !17, i64 100, !14, i64 104, !14, i64 105, !14, i64 106, !14, i64 107, !10, i64 108, !10, i64 112}
!77 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !77, i64 8}
!79 = !{!"_ZTS6ImFont", !66, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !80, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !17, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !10, i64 108, !14, i64 112, !7, i64 113}
!80 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS21ImGuiComboPreviewData", !44, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!82 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS22ImGuiTypingSelectState", !84, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!84 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!85 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!86 = !{!"_ZTS16ImGuiDockContext", !33, i64 0, !87, i64 16, !88, i64 32, !14, i64 48}
!87 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!88 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS15ImGuiTextBuffer", !77, i64 0}
!90 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !77, i64 0}
!92 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !77, i64 0}
!93 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!94 = !{!"_ZTS23ImGuiErrorRecoveryState", !19, i64 0, !19, i64 2, !19, i64 4, !19, i64 6, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !19, i64 18, !19, i64 20}
!95 = !{!"_ZTS14ImGuiTextIndex", !51, i64 0, !10, i64 16}
!96 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!97 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !98, i64 16, !14, i64 32, !17, i64 36, !89, i64 40}
!98 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!99 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !19, i64 8, !7, i64 12}
!100 = !{i8 0, i8 2}
!101 = !{}
!102 = !{!13, !10, i64 5180}
!103 = !{!13, !10, i64 5176}
!104 = !{!14, !14, i64 0}
!105 = !{!13, !10, i64 5352}
!106 = !{!107, !10, i64 16}
!107 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !46, 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, !17, i64 176, !17, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !16, i64 204, !16, i64 212, !16, i64 220, !16, i64 228, !16, i64 236, !16, i64 244, !14, i64 252, !14, i64 253, !14, i64 254, !7, i64 255, !14, i64 256, !14, i64 257, !14, i64 258, !14, i64 259, !14, i64 260, !14, i64 261, !14, i64 262, !14, i64 263, !14, i64 264, !14, i64 265, !14, i64 266, !14, i64 267, !14, i64 268, !7, i64 269, !7, i64 270, !19, i64 272, !19, i64 274, !19, i64 276, !19, i64 278, !19, i64 280, !7, i64 282, !7, i64 283, !14, i64 284, !25, i64 288, !7, i64 292, !7, i64 293, !7, i64 294, !7, i64 295, !10, i64 296, !10, i64 297, !10, i64 298, !10, i64 299, !16, i64 300, !16, i64 308, !82, i64 320, !108, i64 336, !44, i64 600, !44, i64 616, !44, i64 632, !44, i64 648, !44, i64 664, !44, i64 680, !44, i64 696, !111, i64 712, !111, i64 716, !10, i64 720, !10, i64 724, !17, i64 728, !17, i64 732, !33, i64 736, !112, i64 752, !17, i64 768, !17, i64 772, !17, i64 776, !17, i64 780, !10, i64 784, !6, i64 792, !113, i64 800, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !6, i64 1064, !6, i64 1072, !6, i64 1080, !7, i64 1088, !7, i64 1096, !7, i64 1128, !10, i64 1144, !10, i64 1148, !10, i64 1152, !14, i64 1156, !14, i64 1157, !14, i64 1157, !14, i64 1157, !14, i64 1157, !19, i64 1158, !120, i64 1160, !6, i64 1192, !6, i64 1200, !10, i64 1208}
!108 = !{!"_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, !109, i64 68, !109, i64 72, !109, i64 76, !16, i64 80, !57, i64 88, !19, i64 92, !19, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !110, i64 108, !10, i64 136, !10, i64 140, !31, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !44, i64 204, !17, i64 220, !17, i64 224, !66, i64 232, !66, i64 248}
!109 = !{!"_ZTS6ImVec1", !17, i64 0}
!110 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!111 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!112 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!113 = !{!"_ZTS10ImDrawList", !114, i64 0, !20, i64 16, !115, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !28, i64 80, !116, i64 96, !117, i64 128, !118, i64 152, !119, i64 168, !61, i64 184, !17, i64 200, !6, i64 208}
!114 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!115 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!116 = !{!"_ZTS15ImDrawCmdHeader", !27, i64 0, !42, i64 16, !10, i64 24}
!117 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !67, i64 8}
!118 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!119 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !6, i64 8}
!120 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!121 = !{!107, !10, i64 720}
!122 = !{!13, !10, i64 5312}
!123 = !{!13, !14, i64 5197}
!124 = !{!107, !14, i64 266}
!125 = !{!13, !10, i64 8240}
!126 = !{!107, !10, i64 200}
!127 = !{!128, !10, i64 0}
!128 = !{!"_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}
!129 = !{!128, !6, i64 8}
!130 = !{!107, !14, i64 264}
!131 = !{!107, !10, i64 20}
!132 = !{!107, !10, i64 24}
!133 = !{!13, !10, i64 7960}
!134 = !{!13, !10, i64 8024}
!135 = !{!107, !10, i64 28}
!136 = !{!13, !29, i64 5168}
!137 = !{!107, !17, i64 728}
!138 = !{!107, !19, i64 276}
!139 = !{!13, !10, i64 5344}
!140 = !{!107, !19, i64 278}
!141 = !{!107, !6, i64 1192}
!142 = !{!107, !6, i64 1200}
!143 = !{!13, !10, i64 8072}
!144 = !{!13, !10, i64 7976}
!145 = !{!107, !10, i64 1208}
!146 = !{!147, !6, i64 136}
!147 = !{!"_ZTS13ImGuiDockNode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !148, i64 20, !6, i64 24, !7, i64 32, !31, i64 48, !6, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !149, i64 96, !46, i64 100, !10, i64 132, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 200, !10, i64 200, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 201, !14, i64 202, !14, i64 202, !14, i64 202, !14, i64 202}
!148 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!149 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!150 = !{!151, !6, i64 0}
!151 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !43, i64 8, !94, i64 88, !14, i64 110, !17, i64 112}
!152 = !{!107, !6, i64 1016}
!153 = !{!107, !10, i64 320}
!154 = !{!13, !6, i64 5360}
!155 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !156, i64 16, i64 4, !156, i64 20, i64 4, !156, i64 24, i64 4, !156, i64 28, i64 4, !156, i64 32, i64 4, !156, i64 36, i64 4, !156, i64 40, i64 4, !156, i64 44, i64 4, !156, i64 48, i64 4, !156, i64 52, i64 4, !156, i64 56, i64 4, !156, i64 60, i64 4, !156, i64 64, i64 4, !156, i64 68, i64 4, !156, i64 72, i64 4, !156, i64 76, i64 4, !9}
!156 = !{!17, !17, i64 0}
!157 = !{!13, !10, i64 7816}
!158 = !{!151, !14, i64 110}
!159 = !{!151, !17, i64 112}
!160 = !{!13, !6, i64 10552}
!161 = !{!13, !10, i64 9820}
!162 = !{!107, !6, i64 1024}
!163 = !{!107, !6, i64 1032}
!164 = !{!107, !6, i64 1072}
!165 = !{!147, !10, i64 16}
!166 = !{!107, !10, i64 40}
!167 = !{!107, !17, i64 772}
!168 = !{!107, !17, i64 768}
!169 = !{!13, !10, i64 7812}
!170 = !{!107, !10, i64 1144}
!171 = !{!107, !57, i64 424}
!172 = !{!128, !10, i64 24}
!173 = !{!13, !10, i64 7964}
!174 = !{i64 0, i64 4, !156, i64 4, i64 4, !156}
!175 = !{!13, !10, i64 7968}
!176 = !{!13, !17, i64 7996}
!177 = !{!13, !17, i64 8000}
!178 = !{!107, !17, i64 104}
!179 = !{!107, !17, i64 108}
!180 = !{!13, !17, i64 8012}
!181 = !{!107, !17, i64 220}
!182 = !{!107, !17, i64 228}
!183 = !{!13, !17, i64 8016}
!184 = !{!107, !17, i64 224}
!185 = !{!107, !17, i64 232}
!186 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9, i64 16, i64 4, !9, i64 20, i64 4, !9, i64 24, i64 4, !9, i64 28, i64 1, !104, i64 29, i64 1, !104}
!187 = !{!13, !14, i64 8029}
!188 = !{!13, !10, i64 7972}
!189 = !{!107, !14, i64 263}
!190 = !{!107, !7, i64 293}
!191 = !{!107, !14, i64 257}
!192 = !{!107, !14, i64 268}
!193 = !{i64 0, i64 4, !156, i64 4, i64 4, !156, i64 8, i64 4, !156, i64 12, i64 4, !156}
!194 = !{!107, !6, i64 792}
!195 = !{!107, !10, i64 512}
!196 = !{!107, !14, i64 1156}
!197 = !{!107, !6, i64 64}
!198 = !{!199, !6, i64 96}
!199 = !{!"_ZTS14ImGuiViewportP", !200, i64 0, !6, i64 96, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !16, i64 120, !16, i64 128, !17, i64 136, !17, i64 140, !14, i64 144, !19, i64 146, !7, i64 148, !7, i64 160, !201, i64 176, !203, i64 240, !16, i64 272, !16, i64 280, !16, i64 288, !16, i64 296, !16, i64 304, !16, i64 312, !16, i64 320}
!200 = !{!"_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}
!201 = !{!"_ZTS10ImDrawData", !14, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !202, i64 16, !16, i64 32, !16, i64 40, !16, i64 48, !6, i64 56}
!202 = !{!"_ZTS8ImVectorIP10ImDrawListE", !10, i64 0, !10, i64 4, !6, i64 8}
!203 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !202, i64 16}
!204 = !{!13, !6, i64 8896}
!205 = !{!107, !6, i64 8}
!206 = !{!107, !10, i64 184}
!207 = !{!208, !208, i64 0}
!208 = !{!"long", !7, i64 0}
!209 = !{!107, !7, i64 292}
!210 = !{!107, !7, i64 294}
!211 = !{!107, !17, i64 96}
!212 = !{!107, !17, i64 100}
!213 = !{!13, !10, i64 8}
!214 = !{!200, !17, i64 40}
!215 = !{!107, !17, i64 776}
!216 = !{!24, !17, i64 52}
!217 = !{!107, !17, i64 148}
!218 = !{!24, !17, i64 60}
!219 = !{!24, !17, i64 20}
!220 = !{!24, !17, i64 12}
!221 = !{!107, !17, i64 136}
!222 = !{!24, !17, i64 80}
!223 = !{!13, !17, i64 8108}
!224 = !{!107, !17, i64 436}
!225 = !{!13, !17, i64 8112}
!226 = !{!107, !17, i64 440}
!227 = !{!13, !17, i64 4616}
!228 = !{!13, !17, i64 3460}
!229 = !{!107, !17, i64 152}
!230 = !{!107, !17, i64 156}
!231 = !{!107, !17, i64 780}
!232 = !{!107, !17, i64 128}
!233 = !{!107, !17, i64 132}
!234 = !{!13, !6, i64 5368}
!235 = !{!13, !10, i64 5452}
!236 = !{!13, !10, i64 5456}
!237 = !{!13, !10, i64 5476}
!238 = !{!19, !19, i64 0}
!239 = !{!107, !14, i64 261}
!240 = !{!107, !14, i64 260}
!241 = !{!107, !17, i64 160}
!242 = !{!107, !17, i64 168}
!243 = !{!107, !17, i64 164}
!244 = !{!107, !17, i64 172}
!245 = !{!16, !17, i64 0}
!246 = !{!16, !17, i64 4}
!247 = !{!107, !7, i64 282}
!248 = !{!107, !7, i64 283}
!249 = !{!107, !14, i64 284}
!250 = !{!107, !25, i64 288}
!251 = !{!107, !10, i64 480}
!252 = !{!107, !17, i64 300}
!253 = !{!107, !10, i64 84}
!254 = !{!107, !14, i64 256}
!255 = !{!200, !10, i64 4}
!256 = !{!13, !10, i64 3360}
!257 = !{!13, !6, i64 5392}
!258 = !{!107, !6, i64 1048}
!259 = !{!107, !17, i64 144}
!260 = !{!24, !17, i64 48}
!261 = !{!24, !17, i64 56}
!262 = !{!24, !17, i64 16}
!263 = !{!13, !14, i64 109}
!264 = !{!107, !7, i64 269}
!265 = !{!107, !7, i64 270}
!266 = !{!200, !14, i64 89}
!267 = !{!200, !14, i64 90}
!268 = !{!107, !14, i64 252}
!269 = !{!107, !14, i64 253}
!270 = !{!24, !17, i64 120}
!271 = !{!107, !7, i64 255}
!272 = !{!107, !14, i64 254}
!273 = !{!107, !17, i64 244}
!274 = !{!107, !17, i64 248}
!275 = !{!107, !17, i64 604}
!276 = !{!107, !17, i64 88}
!277 = !{!107, !17, i64 616}
!278 = !{!107, !17, i64 92}
!279 = !{!107, !17, i64 620}
!280 = !{!107, !17, i64 624}
!281 = !{!107, !17, i64 628}
!282 = !{!24, !17, i64 76}
!283 = !{!107, !17, i64 632}
!284 = !{!107, !17, i64 636}
!285 = !{!107, !17, i64 640}
!286 = !{!107, !17, i64 644}
!287 = !{!107, !17, i64 732}
!288 = !{!107, !17, i64 112}
!289 = !{!107, !17, i64 212}
!290 = !{!107, !17, i64 116}
!291 = !{!107, !17, i64 140}
!292 = !{!107, !17, i64 216}
!293 = !{!107, !17, i64 180}
!294 = !{!107, !17, i64 176}
!295 = !{!113, !10, i64 0}
!296 = !{!297, !10, i64 32}
!297 = !{!"_ZTS9ImDrawCmd", !27, i64 0, !42, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60}
!298 = !{!13, !6, i64 4608}
!299 = !{!79, !6, i64 64}
!300 = !{!301, !42, i64 8}
!301 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !42, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !14, i64 32, !14, i64 33, !14, i64 34, !6, i64 40, !6, i64 48, !10, i64 56, !10, i64 60, !16, i64 64, !16, i64 72, !49, i64 80, !302, i64 96, !303, i64 112, !7, i64 128, !6, i64 656, !10, i64 664, !10, i64 668, !10, i64 672}
!302 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!303 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!304 = !{!113, !10, i64 32}
!305 = !{!13, !6, i64 8880}
!306 = !{!13, !6, i64 8408}
!307 = !{!107, !6, i64 1056}
!308 = !{!107, !17, i64 204}
!309 = !{!107, !17, i64 648}
!310 = !{!107, !17, i64 208}
!311 = !{!107, !17, i64 652}
!312 = !{!107, !17, i64 656}
!313 = !{!107, !17, i64 660}
!314 = !{!107, !17, i64 696}
!315 = !{!107, !17, i64 700}
!316 = !{!107, !17, i64 704}
!317 = !{!107, !17, i64 708}
!318 = !{!107, !17, i64 404}
!319 = !{!107, !17, i64 412}
!320 = !{!107, !17, i64 408}
!321 = !{!29, !29, i64 0}
!322 = !{!107, !17, i64 352}
!323 = !{!107, !17, i64 356}
!324 = !{!107, !17, i64 396}
!325 = !{!107, !17, i64 392}
!326 = !{!107, !14, i64 401}
!327 = !{!107, !14, i64 400}
!328 = !{!107, !19, i64 430}
!329 = !{!107, !19, i64 428}
!330 = !{!107, !14, i64 432}
!331 = !{!107, !14, i64 433}
!332 = !{!107, !14, i64 434}
!333 = !{!107, !14, i64 435}
!334 = !{!107, !10, i64 472}
!335 = !{!107, !10, i64 476}
!336 = !{!107, !6, i64 496}
!337 = !{!107, !6, i64 504}
!338 = !{!107, !10, i64 516}
!339 = !{!107, !10, i64 520}
!340 = !{!107, !17, i64 556}
!341 = !{!107, !17, i64 560}
!342 = !{!107, !10, i64 524}
!343 = !{!200, !14, i64 91}
!344 = !{!13, !10, i64 10564}
!345 = !{!13, !14, i64 8912}
!346 = !{!13, !14, i64 111}
!347 = !{!44, !17, i64 0}
!348 = !{!44, !17, i64 4}
!349 = !{!44, !17, i64 8}
!350 = !{!44, !17, i64 12}
!351 = !{!107, !19, i64 714}
!352 = !{!107, !19, i64 712}
!353 = !{!13, !6, i64 9968}
!354 = !{!13, !14, i64 8940}
!355 = !{!107, !10, i64 528}
!356 = !{!13, !10, i64 7820}
!357 = !{!107, !10, i64 188}
!358 = !{!107, !14, i64 259}
!359 = !{!107, !19, i64 272}
!360 = !{!107, !10, i64 724}
!361 = !{!13, !14, i64 8489}
!362 = !{!107, !6, i64 1064}
!363 = !{!13, !14, i64 10416}
!364 = !{!107, !17, i64 600}
!365 = !{!107, !17, i64 608}
!366 = !{!107, !17, i64 612}
!367 = !{!24, !17, i64 0}
!368 = !{!107, !14, i64 265}
!369 = !{!107, !7, i64 295}
!370 = !{!107, !14, i64 262}
!371 = !{!13, !14, i64 147}
!372 = !{!13, !14, i64 148}
!373 = !{!13, !7, i64 10624}


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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [67 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: mustprogress uwtable
declare dso_local void @_ZN5ImGui8DebugLogEPKcz(ptr noundef, ...) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216), i64 noundef) local_unnamed_addr #10

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

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

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

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

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

; 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(328)) 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(1212)) local_unnamed_addr #7 align 2

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

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

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

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

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

51:                                               ; preds = %49
  %52 = getelementptr inbounds i8, ptr %47, i64 5196
  %53 = load i8, ptr %52, align 4, !tbaa !10, !range !99, !noundef !100
  %54 = trunc nuw i8 %53 to i1
  br i1 %54, label %56, label %55

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

56:                                               ; preds = %51
  %57 = getelementptr inbounds i8, ptr %47, i64 5180
  %58 = load i32, ptr %57, align 4, !tbaa !101
  %59 = getelementptr inbounds i8, ptr %47, i64 5176
  %60 = load i32, ptr %59, align 8, !tbaa !102
  %.not440 = icmp eq i32 %58, %60
  br i1 %.not440, label %61, label %62

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

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

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

67:                                               ; preds = %65, %62
  %68 = phi ptr [ %66, %65 ], [ %63, %62 ]
  %69 = getelementptr inbounds i8, ptr %47, i64 5352
  %70 = load i32, ptr %69, align 8, !tbaa !103
  %71 = getelementptr inbounds i8, ptr %68, i64 16
  %72 = load i32, ptr %71, align 8, !tbaa !104
  %73 = icmp eq i32 %70, %72
  br i1 %73, label %74, label %75

74:                                               ; preds = %67
  tail call void @llvm.debugtrap()
  br label %75

75:                                               ; preds = %74, %67
  %76 = and i32 %2, 197120
  %77 = icmp eq i32 %76, 197120
  %78 = or i32 %2, 6
  %spec.select = select i1 %77, i32 %78, i32 %2
  %79 = load i32, ptr %59, align 8, !tbaa !102
  %80 = getelementptr inbounds i8, ptr %68, i64 720
  %81 = load i32, ptr %80, align 8, !tbaa !119
  %.not441 = icmp eq i32 %81, %79
  %82 = getelementptr inbounds i8, ptr %47, i64 5312
  %83 = load i32, ptr %82, align 8, !tbaa !120
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %88

85:                                               ; preds = %75
  %86 = getelementptr inbounds i8, ptr %47, i64 5197
  %87 = load i8, ptr %86, align 1, !tbaa !121, !range !99, !noundef !100
  br label %88

88:                                               ; preds = %85, %75
  %89 = phi i8 [ 0, %75 ], [ %87, %85 ]
  %90 = getelementptr inbounds i8, ptr %68, i64 266
  store i8 %89, ptr %90, align 2, !tbaa !122
  %91 = add nsw i32 %79, -1
  %92 = icmp slt i32 %81, %91
  %93 = and i32 %spec.select, 67108864
  %.not442 = icmp eq i32 %93, 0
  br i1 %.not442, label %108, label %94

94:                                               ; preds = %88
  %95 = getelementptr inbounds i8, ptr %47, i64 8224
  %96 = getelementptr inbounds i8, ptr %47, i64 8240
  %97 = load i32, ptr %96, align 8, !tbaa !123
  %98 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %95, i32 noundef %97)
  %99 = getelementptr inbounds i8, ptr %68, i64 200
  %100 = load i32, ptr %99, align 8, !tbaa !124
  %101 = load i32, ptr %98, align 8, !tbaa !125
  %102 = icmp ne i32 %100, %101
  %103 = getelementptr inbounds i8, ptr %98, i64 8
  %104 = load ptr, ptr %103, align 8, !tbaa !127
  %105 = icmp ne ptr %68, %104
  %106 = or i1 %102, %105
  %107 = or i1 %92, %106
  br label %108

108:                                              ; preds = %94, %88
  %.0385.in = phi i1 [ %107, %94 ], [ %92, %88 ]
  %109 = getelementptr inbounds i8, ptr %68, i64 264
  %110 = load i8, ptr %109, align 8, !tbaa !128, !range !99, !noundef !100
  %111 = trunc nuw i8 %110 to i1
  br i1 %.not441, label %138, label %112

112:                                              ; preds = %108
  tail call void @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef nonnull %68, i1 noundef zeroext %64, i32 noundef %spec.select)
  %113 = zext i1 %.0385.in to i8
  store i8 %113, ptr %109, align 8, !tbaa !128
  br i1 %.0385.in, label %114, label %115

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

115:                                              ; preds = %114, %112
  %116 = getelementptr inbounds i8, ptr %68, i64 20
  %117 = load i32, ptr %116, align 4, !tbaa !129
  %118 = getelementptr inbounds i8, ptr %68, i64 24
  store i32 %117, ptr %118, align 8, !tbaa !130
  store i32 %spec.select, ptr %116, align 4, !tbaa !129
  %119 = getelementptr inbounds i8, ptr %47, i64 7960
  %120 = load i32, ptr %119, align 8, !tbaa !131
  %121 = and i32 %120, 512
  %.not443 = icmp eq i32 %121, 0
  br i1 %.not443, label %125, label %122

122:                                              ; preds = %115
  %123 = getelementptr inbounds i8, ptr %47, i64 8024
  %124 = load i32, ptr %123, align 8, !tbaa !132
  br label %125

125:                                              ; preds = %115, %122
  %126 = phi i32 [ %124, %122 ], [ 0, %115 ]
  %127 = getelementptr inbounds i8, ptr %68, i64 28
  store i32 %126, ptr %127, align 4, !tbaa !133
  store i32 %79, ptr %80, align 8, !tbaa !119
  %128 = getelementptr inbounds i8, ptr %47, i64 5168
  %129 = load double, ptr %128, align 8, !tbaa !134
  %130 = fptrunc double %129 to float
  %131 = getelementptr inbounds i8, ptr %68, i64 728
  store float %130, ptr %131, align 8, !tbaa !135
  %132 = getelementptr inbounds i8, ptr %68, i64 276
  store i16 0, ptr %132, align 4, !tbaa !136
  %133 = getelementptr inbounds i8, ptr %47, i64 5344
  %134 = load i32, ptr %133, align 8, !tbaa !137
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %133, align 8, !tbaa !137
  %136 = trunc i32 %134 to i16
  %137 = getelementptr inbounds i8, ptr %68, i64 278
  store i16 %136, ptr %137, align 2, !tbaa !138
  br label %141

138:                                              ; preds = %108
  %139 = getelementptr inbounds i8, ptr %68, i64 20
  %140 = load i32, ptr %139, align 4, !tbaa !129
  br label %141

141:                                              ; preds = %138, %125
  %.1 = phi i32 [ %spec.select, %125 ], [ %140, %138 ]
  %142 = getelementptr inbounds i8, ptr %68, i64 1192
  %143 = load ptr, ptr %142, align 8, !tbaa !139
  %144 = icmp eq ptr %143, null
  br i1 %144, label %.critedge2, label %145

145:                                              ; preds = %141
  %146 = getelementptr inbounds i8, ptr %68, i64 1200
  %147 = load ptr, ptr %146, align 8, !tbaa !140
  %148 = icmp eq ptr %147, null
  br i1 %148, label %.critedge2, label %149

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

.critedge2:                                       ; preds = %141, %145
  %150 = getelementptr inbounds i8, ptr %47, i64 7960
  %151 = load i32, ptr %150, align 8, !tbaa !131
  %152 = and i32 %151, 4096
  %.not444 = icmp eq i32 %152, 0
  br i1 %.not444, label %158, label %153

153:                                              ; preds = %.critedge2
  %154 = getelementptr inbounds i8, ptr %47, i64 8072
  %155 = load i32, ptr %154, align 8, !tbaa !141
  %156 = getelementptr inbounds i8, ptr %47, i64 7976
  %157 = load i32, ptr %156, align 8, !tbaa !142
  tail call void @_ZN5ImGui13SetWindowDockEP11ImGuiWindowji(ptr noundef nonnull %68, i32 noundef %155, i32 noundef %157)
  br label %158

158:                                              ; preds = %153, %.critedge2
  br i1 %.not441, label %193, label %159

159:                                              ; preds = %158
  %160 = getelementptr inbounds i8, ptr %68, i64 1208
  %161 = load i32, ptr %160, align 8, !tbaa !143
  %.not445 = icmp eq i32 %161, 0
  br i1 %.not445, label %162, label %.thread.thread

162:                                              ; preds = %159
  %163 = load ptr, ptr %142, align 8, !tbaa !139
  %.not636 = icmp eq ptr %163, null
  br i1 %.not636, label %.thread, label %.thread.thread

.thread.thread:                                   ; preds = %162, %159
  %164 = getelementptr inbounds i8, ptr %68, i64 1157
  %165 = load i8, ptr %164, align 1
  br label %169

.thread:                                          ; preds = %162
  %166 = tail call noundef zeroext i1 @_ZN5ImGui28GetWindowAlwaysWantOwnTabBarEP11ImGuiWindow(ptr noundef nonnull %68)
  %167 = getelementptr inbounds i8, ptr %68, i64 1157
  %168 = load i8, ptr %167, align 1
  br i1 %166, label %169, label %191

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

176:                                              ; preds = %169
  %177 = load ptr, ptr %142, align 8, !tbaa !139
  %.not448 = icmp eq ptr %177, null
  br i1 %.not448, label %178, label %179

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

179:                                              ; preds = %176
  %180 = load i32, ptr %150, align 8, !tbaa !131
  %181 = and i32 %180, -17
  store i32 %181, ptr %150, align 8, !tbaa !131
  %.pre = load i8, ptr %171, align 1
  br label %182

182:                                              ; preds = %179, %169
  %183 = phi i8 [ %.pre, %179 ], [ %174, %169 ]
  %184 = and i8 %183, 4
  %.not449 = icmp eq i8 %184, 0
  %185 = and i8 %170, 6
  %186 = icmp ne i8 %185, 2
  %brmerge549 = select i1 %.not449, i1 true, i1 %186
  br i1 %brmerge549, label %193, label %187

187:                                              ; preds = %182
  %188 = load i8, ptr %109, align 8, !tbaa !128, !range !99, !noundef !100
  %189 = trunc nuw i8 %188 to i1
  %brmerge550 = select i1 %189, i1 true, i1 %111
  br i1 %brmerge550, label %193, label %190

190:                                              ; preds = %187
  store i8 1, ptr %109, align 8, !tbaa !128
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %68, i32 noundef 8, i1 noundef zeroext true)
  br label %193

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

193:                                              ; preds = %191, %190, %182, %187, %158
  %.3 = phi i32 [ %.1, %158 ], [ %173, %187 ], [ %173, %190 ], [ %173, %182 ], [ %.1, %191 ]
  %194 = getelementptr inbounds i8, ptr %68, i64 1157
  %195 = load i8, ptr %194, align 1
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %201

197:                                              ; preds = %193
  %198 = load ptr, ptr %142, align 8, !tbaa !139
  %199 = getelementptr inbounds i8, ptr %198, i64 136
  %200 = load ptr, ptr %199, align 8, !tbaa !144
  %.not450 = icmp eq ptr %200, null
  br i1 %.not450, label %201, label %206

201:                                              ; preds = %197, %193
  %202 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %82)
  br i1 %202, label %206, label %203

203:                                              ; preds = %201
  %204 = tail call noundef nonnull align 8 dereferenceable(116) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %82)
  %205 = load ptr, ptr %204, align 8, !tbaa !148
  br label %206

206:                                              ; preds = %197, %203, %201
  %207 = phi ptr [ %205, %203 ], [ null, %201 ], [ %200, %197 ]
  br i1 %.not441, label %211, label %208

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

211:                                              ; preds = %206
  %212 = getelementptr inbounds i8, ptr %68, i64 1016
  %213 = load ptr, ptr %212, align 8, !tbaa !150
  br label %214

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

219:                                              ; preds = %214
  tail call void @__assert_fail(ptr noundef nonnull @.str.157, ptr noundef nonnull @.str.3, i32 noundef 7493, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

220:                                              ; preds = %214
  %221 = getelementptr inbounds i8, ptr %68, i64 320
  %222 = load i32, ptr %221, align 8, !tbaa !151
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %225

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

225:                                              ; preds = %224, %220
  %226 = getelementptr inbounds i8, ptr %47, i64 5360
  store ptr %68, ptr %226, align 8, !tbaa !152
  %227 = load i32, ptr %82, align 8, !tbaa !120
  %228 = add nsw i32 %227, 1
  tail call void @_ZN8ImVectorI20ImGuiWindowStackDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %82, i32 noundef %228)
  %229 = tail call noundef nonnull align 8 dereferenceable(116) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %82)
  store ptr %68, ptr %229, align 8, !tbaa !148
  %230 = getelementptr inbounds i8, ptr %47, i64 7880
  %231 = getelementptr inbounds i8, ptr %229, i64 8
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %231, ptr noundef nonnull align 8 dereferenceable(80) %230, i64 80, i1 false), !tbaa.struct !153
  %232 = and i32 %.3, 33554432
  %.not473 = icmp eq i32 %232, 0
  br i1 %.not473, label %238, label %233

233:                                              ; preds = %225
  %234 = getelementptr inbounds i8, ptr %47, i64 7816
  %235 = load i32, ptr %234, align 8, !tbaa !156
  %236 = and i32 %235, 1024
  %237 = icmp ne i32 %236, 0
  br label %238

238:                                              ; preds = %233, %225
  %239 = phi i1 [ false, %225 ], [ %237, %233 ]
  %240 = getelementptr inbounds i8, ptr %229, i64 110
  %241 = zext i1 %239 to i8
  store i8 %241, ptr %240, align 2, !tbaa !157
  %242 = getelementptr inbounds i8, ptr %229, i64 112
  store float 0.000000e+00, ptr %242, align 8, !tbaa !158
  %243 = getelementptr inbounds i8, ptr %229, i64 88
  tail call void @_ZN5ImGui23ErrorRecoveryStoreStateEP23ImGuiErrorRecoveryState(ptr noundef nonnull %243)
  %244 = getelementptr inbounds i8, ptr %47, i64 10552
  store ptr %243, ptr %244, align 8, !tbaa !159
  %245 = and i32 %.3, 268435456
  %.not454.not = icmp eq i32 %245, 0
  br i1 %.not454.not, label %250, label %246

246:                                              ; preds = %238
  %247 = getelementptr inbounds i8, ptr %47, i64 9820
  %248 = load i32, ptr %247, align 4, !tbaa !160
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %247, align 4, !tbaa !160
  br label %250

250:                                              ; preds = %246, %238
  br i1 %.not441, label %283, label %251

251:                                              ; preds = %250
  tail call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef nonnull %68, i32 noundef %.3, ptr noundef %215)
  %252 = getelementptr inbounds i8, ptr %68, i64 1024
  store ptr %207, ptr %252, align 8, !tbaa !161
  %253 = getelementptr inbounds i8, ptr %68, i64 1032
  %254 = load ptr, ptr %253, align 8, !tbaa !162
  %.not455 = icmp eq ptr %254, %68
  %255 = select i1 %.not455, ptr null, ptr %207
  %256 = getelementptr inbounds i8, ptr %68, i64 1072
  store ptr %255, ptr %256, align 8, !tbaa !163
  %257 = icmp eq ptr %255, null
  br i1 %257, label %258, label %267

258:                                              ; preds = %251
  %259 = load ptr, ptr %142, align 8, !tbaa !139
  %.not456 = icmp eq ptr %259, null
  br i1 %.not456, label %267, label %260

260:                                              ; preds = %258
  %261 = getelementptr inbounds i8, ptr %259, i64 16
  %262 = load i32, ptr %261, align 8, !tbaa !164
  %263 = and i32 %262, 262144
  %.not457 = icmp eq i32 %263, 0
  br i1 %.not457, label %267, label %264

264:                                              ; preds = %260
  %265 = getelementptr inbounds i8, ptr %259, i64 136
  %266 = load ptr, ptr %265, align 8, !tbaa !144
  store ptr %266, ptr %256, align 8, !tbaa !163
  br label %267

267:                                              ; preds = %260, %264, %258, %251
  %268 = getelementptr inbounds i8, ptr %68, i64 40
  %269 = load i32, ptr %268, align 8, !tbaa !165
  %.not458 = icmp eq i32 %269, 0
  br i1 %.not458, label %273, label %270

270:                                              ; preds = %267
  %271 = tail call noundef ptr @_ZN5ImGui14FindWindowByIDEj(i32 noundef %269)
  store ptr %271, ptr %256, align 8, !tbaa !163
  %.not459 = icmp eq ptr %271, null
  br i1 %.not459, label %272, label %273

272:                                              ; preds = %270
  tail call void @__assert_fail(ptr noundef nonnull @.str.158, ptr noundef nonnull @.str.3, i32 noundef 7530, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

273:                                              ; preds = %270, %267
  br i1 %216, label %280, label %274

274:                                              ; preds = %273
  %275 = getelementptr inbounds i8, ptr %215, i64 772
  %276 = load float, ptr %275, align 4, !tbaa !166
  %277 = getelementptr inbounds i8, ptr %215, i64 768
  %278 = load float, ptr %277, align 8, !tbaa !167
  %279 = fmul float %276, %278
  br label %280

280:                                              ; preds = %273, %274
  %281 = phi float [ %279, %274 ], [ 1.000000e+00, %273 ]
  %282 = getelementptr inbounds i8, ptr %68, i64 772
  store float %281, ptr %282, align 4, !tbaa !166
  br label %283

283:                                              ; preds = %280, %250
  %284 = getelementptr inbounds i8, ptr %68, i64 28
  %285 = load i32, ptr %284, align 4, !tbaa !133
  %286 = and i32 %285, 256
  %.not460 = icmp eq i32 %286, 0
  %287 = getelementptr inbounds i8, ptr %47, i64 7812
  %.in = select i1 %.not460, ptr %71, ptr %287
  %288 = load i32, ptr %.in, align 4, !tbaa !154
  tail call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %288)
  %289 = load i32, ptr %287, align 4, !tbaa !168
  %290 = getelementptr inbounds i8, ptr %68, i64 1144
  store i32 %289, ptr %290, align 8, !tbaa !169
  %291 = and i32 %.3, 67108864
  %.not461 = icmp eq i32 %291, 0
  br i1 %.not461, label %303, label %292

292:                                              ; preds = %283
  %293 = getelementptr inbounds i8, ptr %47, i64 8224
  %294 = getelementptr inbounds i8, ptr %47, i64 8240
  %295 = load i32, ptr %294, align 8, !tbaa !123
  %296 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %293, i32 noundef %295)
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  store ptr %68, ptr %297, align 8, !tbaa !127
  %298 = getelementptr inbounds i8, ptr %207, i64 424
  %299 = load i32, ptr %298, align 8, !tbaa !170
  %300 = getelementptr inbounds i8, ptr %296, i64 24
  store i32 %299, ptr %300, align 8, !tbaa !171
  tail call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %294, ptr noundef nonnull align 8 dereferenceable(52) %296)
  %301 = load i32, ptr %296, align 8, !tbaa !125
  %302 = getelementptr inbounds i8, ptr %68, i64 200
  store i32 %301, ptr %302, align 8, !tbaa !124
  br label %303

303:                                              ; preds = %292, %283
  %304 = load i32, ptr %150, align 8, !tbaa !131
  %305 = and i32 %304, 1
  %.not462 = icmp eq i32 %305, 0
  br i1 %.not462, label %330, label %306

306:                                              ; preds = %303
  %307 = getelementptr inbounds i8, ptr %68, i64 296
  %308 = load i32, ptr %307, align 8
  %309 = shl i32 %308, 24
  %310 = ashr exact i32 %309, 24
  %311 = getelementptr inbounds i8, ptr %47, i64 7964
  %312 = load i32, ptr %311, align 4, !tbaa !172
  %313 = and i32 %310, %312
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %327

315:                                              ; preds = %306
  %316 = getelementptr inbounds i8, ptr %47, i64 7988
  %317 = tail call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %316)
  %318 = fcmp ogt float %317, 0x3EE4F8B580000000
  br i1 %318, label %319, label %._crit_edge

._crit_edge:                                      ; preds = %315
  %.pre651 = load i32, ptr %311, align 4, !tbaa !172
  br label %327

319:                                              ; preds = %315
  %320 = getelementptr inbounds i8, ptr %47, i64 7980
  %321 = getelementptr inbounds i8, ptr %68, i64 300
  %322 = load i64, ptr %320, align 4
  store i64 %322, ptr %321, align 4
  %323 = getelementptr inbounds i8, ptr %68, i64 308
  %324 = load i64, ptr %316, align 4
  store i64 %324, ptr %323, align 4
  %325 = load i32, ptr %307, align 8
  %326 = and i32 %325, -15
  store i32 %326, ptr %307, align 8
  br label %330

327:                                              ; preds = %._crit_edge, %306
  %328 = phi i32 [ %.pre651, %._crit_edge ], [ %312, %306 ]
  %329 = getelementptr inbounds i8, ptr %47, i64 7980
  tail call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %68, ptr noundef nonnull align 4 dereferenceable(8) %329, i32 noundef %328)
  br label %330

330:                                              ; preds = %319, %327, %303
  %.0386.shrunk = phi i1 [ true, %319 ], [ %314, %327 ], [ false, %303 ]
  %331 = load i32, ptr %150, align 8, !tbaa !131
  %332 = and i32 %331, 2
  %.not463 = icmp eq i32 %332, 0
  br i1 %.not463, label %370, label %333

333:                                              ; preds = %330
  %334 = getelementptr inbounds i8, ptr %68, i64 296
  %335 = load i32, ptr %334, align 8
  %336 = shl i32 %335, 16
  %337 = ashr i32 %336, 24
  %338 = getelementptr inbounds i8, ptr %47, i64 7968
  %339 = load i32, ptr %338, align 8, !tbaa !173
  %340 = and i32 %337, %339
  %.not464 = icmp eq i32 %340, 0
  br i1 %.not464, label %.thread616, label %341

341:                                              ; preds = %333
  %342 = getelementptr inbounds i8, ptr %47, i64 7996
  %343 = load float, ptr %342, align 4, !tbaa !174
  %344 = fcmp ogt float %343, 0.000000e+00
  %345 = getelementptr inbounds i8, ptr %47, i64 8000
  %346 = load float, ptr %345, align 4, !tbaa !175
  %347 = fcmp ogt float %346, 0.000000e+00
  br label %.thread616

.thread616:                                       ; preds = %333, %341
  %348 = phi i1 [ %344, %341 ], [ false, %333 ]
  %349 = phi i1 [ %347, %341 ], [ false, %333 ]
  %350 = load i32, ptr %284, align 4, !tbaa !133
  %351 = and i32 %350, 4
  %.not466 = icmp ne i32 %351, 0
  %352 = and i32 %335, 1024
  %353 = icmp eq i32 %352, 0
  %or.cond633 = and i1 %353, %.not466
  br i1 %or.cond633, label %354, label %358

354:                                              ; preds = %.thread616
  %355 = getelementptr inbounds i8, ptr %68, i64 104
  %356 = load float, ptr %355, align 8, !tbaa !176
  %357 = getelementptr inbounds i8, ptr %47, i64 7996
  store float %356, ptr %357, align 4, !tbaa !174
  br label %358

358:                                              ; preds = %354, %.thread616
  %359 = and i32 %350, 8
  %.not467 = icmp eq i32 %359, 0
  br i1 %.not467, label %368, label %360

360:                                              ; preds = %358
  %361 = load i32, ptr %334, align 8
  %362 = and i32 %361, 1024
  %363 = icmp eq i32 %362, 0
  br i1 %363, label %364, label %368

364:                                              ; preds = %360
  %365 = getelementptr inbounds i8, ptr %68, i64 108
  %366 = load float, ptr %365, align 4, !tbaa !177
  %367 = getelementptr inbounds i8, ptr %47, i64 8000
  store float %366, ptr %367, align 4, !tbaa !175
  br label %368

368:                                              ; preds = %364, %360, %358
  %369 = getelementptr inbounds i8, ptr %47, i64 7996
  tail call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %68, ptr noundef nonnull align 4 dereferenceable(8) %369, i32 noundef %339)
  %.pre652 = load i32, ptr %150, align 8, !tbaa !131
  br label %370

370:                                              ; preds = %368, %330
  %371 = phi i32 [ %.pre652, %368 ], [ %331, %330 ]
  %.0388 = phi i1 [ %349, %368 ], [ false, %330 ]
  %.0387 = phi i1 [ %348, %368 ], [ false, %330 ]
  %372 = and i32 %371, 128
  %.not468 = icmp eq i32 %372, 0
  br i1 %.not468, label %387, label %373

373:                                              ; preds = %370
  %374 = getelementptr inbounds i8, ptr %47, i64 8012
  %375 = load float, ptr %374, align 4, !tbaa !178
  %376 = fcmp ult float %375, 0.000000e+00
  br i1 %376, label %380, label %377

377:                                              ; preds = %373
  %378 = getelementptr inbounds i8, ptr %68, i64 220
  store float %375, ptr %378, align 4, !tbaa !179
  %379 = getelementptr inbounds i8, ptr %68, i64 228
  store float 0.000000e+00, ptr %379, align 4, !tbaa !180
  br label %380

380:                                              ; preds = %377, %373
  %381 = getelementptr inbounds i8, ptr %47, i64 8016
  %382 = load float, ptr %381, align 4, !tbaa !181
  %383 = fcmp ult float %382, 0.000000e+00
  br i1 %383, label %387, label %384

384:                                              ; preds = %380
  %385 = getelementptr inbounds i8, ptr %68, i64 224
  store float %382, ptr %385, align 4, !tbaa !182
  %386 = getelementptr inbounds i8, ptr %68, i64 232
  store float 0.000000e+00, ptr %386, align 4, !tbaa !183
  br label %387

387:                                              ; preds = %380, %384, %370
  %388 = and i32 %371, 4
  %.not469 = icmp eq i32 %388, 0
  br i1 %.not469, label %393, label %389

389:                                              ; preds = %387
  %390 = getelementptr inbounds i8, ptr %47, i64 8004
  %391 = getelementptr inbounds i8, ptr %68, i64 128
  %392 = load i64, ptr %390, align 4
  store i64 %392, ptr %391, align 8
  br label %398

393:                                              ; preds = %387
  br i1 %.not441, label %398, label %394

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i64 128
  %397 = load i64, ptr %5, align 8
  store i64 %397, ptr %396, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  br label %398

398:                                              ; preds = %393, %394, %389
  %399 = phi ptr [ %68, %393 ], [ %395, %394 ], [ %68, %389 ]
  %400 = load i32, ptr %150, align 8, !tbaa !131
  %401 = and i32 %400, 8192
  %.not470 = icmp eq i32 %401, 0
  br i1 %.not470, label %405, label %402

402:                                              ; preds = %398
  %403 = getelementptr inbounds i8, ptr %47, i64 8076
  %404 = getelementptr inbounds i8, ptr %399, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(30) %404, ptr noundef nonnull align 4 dereferenceable(30) %403, i64 30, i1 false), !tbaa.struct !184
  %.pre653 = load i32, ptr %150, align 8, !tbaa !131
  br label %405

405:                                              ; preds = %402, %398
  %406 = phi i32 [ %.pre653, %402 ], [ %400, %398 ]
  %407 = and i32 %406, 8
  %.not471 = icmp eq i32 %407, 0
  br i1 %.not471, label %414, label %408

408:                                              ; preds = %405
  %409 = getelementptr inbounds i8, ptr %47, i64 8029
  %410 = load i8, ptr %409, align 1, !tbaa !186, !range !99, !noundef !100
  %411 = trunc nuw i8 %410 to i1
  %412 = getelementptr inbounds i8, ptr %47, i64 7972
  %413 = load i32, ptr %412, align 4, !tbaa !187
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef nonnull %399, i1 noundef zeroext %411, i32 noundef %413)
  %.pre654 = load i32, ptr %150, align 8, !tbaa !131
  %.pre656.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %414

414:                                              ; preds = %408, %405
  %.pre656 = phi ptr [ %.pre656.pre, %408 ], [ %399, %405 ]
  %415 = phi i32 [ %.pre654, %408 ], [ %406, %405 ]
  %416 = and i32 %415, 32
  %.not472 = icmp eq i32 %416, 0
  br i1 %.not472, label %418, label %417

417:                                              ; preds = %414
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre656, i32 noundef 0)
  %.pre655 = load ptr, ptr %4, align 8, !tbaa !5
  br label %418

418:                                              ; preds = %417, %414
  %419 = phi ptr [ %.pre655, %417 ], [ %.pre656, %414 ]
  %420 = getelementptr inbounds i8, ptr %419, i64 264
  %421 = load i8, ptr %420, align 8, !tbaa !128, !range !99, !noundef !100
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %424

423:                                              ; preds = %418
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %419, i32 noundef 8, i1 noundef zeroext false)
  %.pre657 = load ptr, ptr %4, align 8, !tbaa !5
  br label %424

424:                                              ; preds = %423, %418
  %425 = phi ptr [ %.pre657, %423 ], [ %419, %418 ]
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %425)
  %426 = load i8, ptr %240, align 2, !tbaa !157, !range !99, !noundef !100
  %427 = trunc nuw i8 %426 to i1
  %.pre701.pre711 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %427, label %428, label %433

428:                                              ; preds = %424
  %429 = getelementptr inbounds i8, ptr %.pre701.pre711, i64 1032
  %430 = load ptr, ptr %429, align 8, !tbaa !162
  %431 = icmp eq ptr %430, %.pre701.pre711
  br i1 %431, label %432, label %433

432:                                              ; preds = %428
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  %.pre701.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %433

433:                                              ; preds = %432, %428, %424
  %.pre701 = phi ptr [ %.pre701.pre, %432 ], [ %.pre701.pre711, %428 ], [ %.pre701.pre711, %424 ]
  store ptr null, ptr %226, align 8, !tbaa !152
  %.phi.trans.insert703 = getelementptr inbounds i8, ptr %.pre701, i64 263
  %.pre704 = load i8, ptr %.phi.trans.insert703, align 1, !tbaa !188, !range !99
  br i1 %.not441, label %._crit_edge702, label %434

434:                                              ; preds = %433
  %435 = trunc nuw i8 %.pre704 to i1
  br i1 %435, label %._crit_edge702, label %436

436:                                              ; preds = %434
  %437 = and i32 %.3, 50331648
  %438 = icmp eq i32 %437, 50331648
  %439 = getelementptr inbounds i8, ptr %.pre701, i64 293
  %440 = load i8, ptr %439, align 1, !tbaa !189
  %441 = icmp slt i8 %440, 1
  %442 = getelementptr inbounds i8, ptr %.pre701, i64 257
  store i8 1, ptr %442, align 1, !tbaa !190
  %443 = icmp ne ptr %1, null
  %444 = getelementptr inbounds i8, ptr %.pre701, i64 268
  %445 = zext i1 %443 to i8
  store i8 %445, ptr %444, align 4, !tbaa !191
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(16) %7)
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = getelementptr inbounds i8, ptr %446, i64 680
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %447, ptr noundef nonnull align 4 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !192
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #12
  %448 = getelementptr inbounds i8, ptr %446, i64 320
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %448, i32 noundef 1)
  %449 = load ptr, ptr %4, align 8, !tbaa !5
  %450 = getelementptr inbounds i8, ptr %449, i64 792
  %451 = load ptr, ptr %450, align 8, !tbaa !193
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(216) %451)
  %452 = load ptr, ptr %4, align 8, !tbaa !5
  %453 = getelementptr inbounds i8, ptr %452, i64 512
  store i32 -1, ptr %453, align 8, !tbaa !194
  %454 = and i32 %.3, 8388608
  %.not474 = icmp eq i32 %454, 0
  br i1 %.not474, label %461, label %455

455:                                              ; preds = %436
  %456 = getelementptr inbounds i8, ptr %452, i64 792
  %457 = load ptr, ptr %456, align 8, !tbaa !193
  call void @_ZN10ImDrawList13ChannelsSplitEi(ptr noundef nonnull align 8 dereferenceable(216) %457, i32 noundef 2)
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %458, i64 792
  %460 = load ptr, ptr %459, align 8, !tbaa !193
  call void @_ZN10ImDrawList18ChannelsSetCurrentEi(ptr noundef nonnull align 8 dereferenceable(216) %460, i32 noundef 1)
  %.pre658 = load ptr, ptr %4, align 8, !tbaa !5
  br label %461

461:                                              ; preds = %455, %436
  %462 = phi ptr [ %.pre658, %455 ], [ %452, %436 ]
  %463 = getelementptr inbounds i8, ptr %462, i64 1156
  %464 = load i8, ptr %463, align 4, !tbaa !195, !range !99, !noundef !100
  %465 = trunc nuw i8 %464 to i1
  br i1 %465, label %466, label %467

466:                                              ; preds = %461
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %462)
  %.pre659 = load ptr, ptr %4, align 8, !tbaa !5
  br label %467

467:                                              ; preds = %466, %461
  %468 = phi ptr [ %.pre659, %466 ], [ %462, %461 ]
  %469 = getelementptr inbounds i8, ptr %468, i64 64
  %470 = load ptr, ptr %469, align 8, !tbaa !196
  %.not475 = icmp eq ptr %470, null
  br i1 %.not475, label %475, label %471

471:                                              ; preds = %467
  %472 = getelementptr inbounds i8, ptr %470, i64 96
  %473 = load ptr, ptr %472, align 8, !tbaa !197
  %474 = icmp eq ptr %473, %468
  br i1 %474, label %.critedge554, label %475

475:                                              ; preds = %471, %467
  %476 = getelementptr inbounds i8, ptr %468, i64 1157
  %477 = load i8, ptr %476, align 1
  %478 = trunc i8 %477 to i1
  br i1 %478, label %.critedge554, label %479

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %47, i64 8896
  %481 = load ptr, ptr %480, align 8, !tbaa !203
  %.not476 = icmp ne ptr %481, null
  %482 = and i32 %.3, 131072
  %483 = icmp eq i32 %482, 0
  %or.cond = select i1 %.not476, i1 %483, i1 false
  br i1 %or.cond, label %.critedge554, label %484

484:                                              ; preds = %479
  %brmerge555 = or i1 %64, %.not454.not
  br i1 %brmerge555, label %499, label %485

.critedge554:                                     ; preds = %479, %471, %475
  br i1 %64, label %499, label %485

485:                                              ; preds = %484, %.critedge554
  %486 = getelementptr inbounds i8, ptr %468, i64 8
  %487 = load ptr, ptr %486, align 8, !tbaa !204
  %488 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %487) #15
  %.not477 = icmp eq i32 %488, 0
  br i1 %.not477, label %499, label %489

489:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  %490 = getelementptr inbounds i8, ptr %468, i64 184
  %491 = load i32, ptr %490, align 8, !tbaa !205
  %492 = sext i32 %491 to i64
  store i64 %492, ptr %8, align 8, !tbaa !206
  %493 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %487, ptr noundef nonnull %8, ptr noundef nonnull %0)
  %494 = load ptr, ptr %4, align 8, !tbaa !5
  %495 = getelementptr inbounds i8, ptr %494, i64 8
  store ptr %493, ptr %495, align 8, !tbaa !204
  %496 = load i64, ptr %8, align 8, !tbaa !206
  %497 = trunc i64 %496 to i32
  %498 = getelementptr inbounds i8, ptr %494, i64 184
  store i32 %497, ptr %498, align 8, !tbaa !205
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  br label %499

499:                                              ; preds = %484, %489, %485, %.critedge554
  %500 = phi ptr [ %468, %484 ], [ %494, %489 ], [ %468, %485 ], [ %468, %.critedge554 ]
  %501 = getelementptr inbounds i8, ptr %500, i64 112
  %502 = getelementptr inbounds i8, ptr %500, i64 120
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef nonnull %500, ptr noundef nonnull %501, ptr noundef nonnull %502)
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %503, i64 292
  %505 = load i8, ptr %504, align 4, !tbaa !208
  %506 = icmp sgt i8 %505, 0
  br i1 %506, label %507, label %509

507:                                              ; preds = %499
  %508 = add nsw i8 %505, -1
  store i8 %508, ptr %504, align 4, !tbaa !208
  br label %509

509:                                              ; preds = %507, %499
  %510 = getelementptr inbounds i8, ptr %503, i64 293
  %511 = load i8, ptr %510, align 1, !tbaa !189
  %512 = icmp sgt i8 %511, 0
  br i1 %512, label %513, label %515

513:                                              ; preds = %509
  %514 = add nsw i8 %511, -1
  store i8 %514, ptr %510, align 1, !tbaa !189
  br label %515

515:                                              ; preds = %513, %509
  %516 = getelementptr inbounds i8, ptr %503, i64 294
  %517 = load i8, ptr %516, align 2, !tbaa !209
  %518 = icmp sgt i8 %517, 0
  br i1 %518, label %519, label %521

519:                                              ; preds = %515
  %520 = add nsw i8 %517, -1
  store i8 %520, ptr %516, align 2, !tbaa !209
  br label %521

521:                                              ; preds = %519, %515
  %.not649 = xor i1 %64, true
  %522 = select i1 %.0387, i1 %.0388, i1 false
  %or.cond650 = select i1 %.not649, i1 true, i1 %522
  br i1 %or.cond650, label %524, label %523

523:                                              ; preds = %521
  store i8 1, ptr %510, align 1, !tbaa !189
  br label %524

524:                                              ; preds = %523, %521
  %525 = and i32 %.3, 100663296
  %.not478 = icmp ne i32 %525, 0
  %or.cond557.not = select i1 %.0385.in, i1 %.not478, i1 false
  br i1 %or.cond557.not, label %526, label %541

526:                                              ; preds = %524
  store i8 1, ptr %510, align 1, !tbaa !189
  %527 = and i32 %.3, 64
  %.not479 = icmp eq i32 %527, 0
  br i1 %.not479, label %541, label %528

528:                                              ; preds = %526
  br i1 %.0387, label %532, label %529

529:                                              ; preds = %528
  %530 = getelementptr inbounds i8, ptr %503, i64 104
  store float 0.000000e+00, ptr %530, align 8, !tbaa !176
  %531 = getelementptr inbounds i8, ptr %503, i64 96
  store float 0.000000e+00, ptr %531, align 8, !tbaa !210
  br label %532

532:                                              ; preds = %529, %528
  br i1 %.0388, label %536, label %533

533:                                              ; preds = %532
  %534 = getelementptr inbounds i8, ptr %503, i64 108
  store float 0.000000e+00, ptr %534, align 4, !tbaa !177
  %535 = getelementptr inbounds i8, ptr %503, i64 100
  store float 0.000000e+00, ptr %535, align 4, !tbaa !211
  br label %536

536:                                              ; preds = %533, %532
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %537, i64 120
  %539 = load i64, ptr %9, align 8
  store i64 %539, ptr %538, align 8
  %540 = getelementptr inbounds i8, ptr %537, i64 112
  store i64 %539, ptr %540, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %541

541:                                              ; preds = %526, %536, %524
  %542 = phi ptr [ %503, %526 ], [ %537, %536 ], [ %503, %524 ]
  call void @_ZN5ImGuiL20WindowSelectViewportEP11ImGuiWindow(ptr noundef nonnull %542)
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %543, i64 64
  %545 = load ptr, ptr %544, align 8, !tbaa !196
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %543, ptr noundef %545)
  %546 = getelementptr inbounds i8, ptr %47, i64 8
  %547 = load i32, ptr %546, align 8, !tbaa !212
  %548 = and i32 %547, 32768
  %.not480 = icmp eq i32 %548, 0
  %.pre660 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not480, label %554, label %549

549:                                              ; preds = %541
  %550 = getelementptr inbounds i8, ptr %.pre660, i64 64
  %551 = load ptr, ptr %550, align 8, !tbaa !196
  %552 = getelementptr inbounds i8, ptr %551, i64 40
  %553 = load float, ptr %552, align 8, !tbaa !213
  br label %554

554:                                              ; preds = %541, %549
  %555 = phi float [ %553, %549 ], [ 1.000000e+00, %541 ]
  %556 = getelementptr inbounds i8, ptr %.pre660, i64 776
  store float %555, ptr %556, align 8, !tbaa !214
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre660)
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = getelementptr inbounds i8, ptr %557, i64 20
  %559 = load i32, ptr %558, align 4, !tbaa !129
  %560 = getelementptr inbounds i8, ptr %557, i64 1157
  %561 = load i8, ptr %560, align 1
  %562 = trunc i8 %561 to i1
  %563 = and i32 %559, 16777216
  %.not481 = icmp eq i32 %563, 0
  %or.cond558 = select i1 %562, i1 true, i1 %.not481
  br i1 %or.cond558, label %564, label %567

564:                                              ; preds = %554
  %565 = and i32 %559, 100663296
  %.not482 = icmp ne i32 %565, 0
  %566 = and i32 %559, 134217728
  %.not483 = icmp eq i32 %566, 0
  %or.cond559 = and i1 %.not482, %.not483
  %.in484.v = select i1 %or.cond559, i64 3452, i64 3412
  br label %567

567:                                              ; preds = %554, %564
  %.in484.v.sink = phi i64 [ %.in484.v, %564 ], [ 3444, %554 ]
  %.in484 = getelementptr inbounds i8, ptr %47, i64 %.in484.v.sink
  %568 = load float, ptr %.in484, align 4, !tbaa !155
  %569 = getelementptr inbounds i8, ptr %557, i64 148
  store float %568, ptr %569, align 4
  %570 = getelementptr inbounds i8, ptr %47, i64 3400
  %571 = getelementptr inbounds i8, ptr %557, i64 136
  %572 = load i64, ptr %570, align 4
  store i64 %572, ptr %571, align 8
  %or.cond560.not = xor i1 %or.cond558, true
  %573 = and i32 %559, 67108864
  %.not486 = icmp eq i32 %573, 0
  %or.cond561 = select i1 %or.cond560.not, i1 %.not486, i1 false
  br i1 %or.cond561, label %574, label %589

574:                                              ; preds = %567
  %575 = getelementptr inbounds i8, ptr %557, i64 28
  %576 = load i32, ptr %575, align 4, !tbaa !133
  %577 = and i32 %576, 2
  %.not487 = icmp eq i32 %577, 0
  %578 = fcmp oeq float %568, 0.000000e+00
  %or.cond725 = select i1 %.not487, i1 %578, i1 false
  br i1 %or.cond725, label %579, label %589

579:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %580 = and i32 %559, 1024
  %.not488 = icmp eq i32 %580, 0
  br i1 %.not488, label %584, label %581

581:                                              ; preds = %579
  %582 = getelementptr inbounds i8, ptr %47, i64 3404
  %583 = load float, ptr %582, align 4, !tbaa !215
  br label %584

584:                                              ; preds = %579, %581
  %585 = phi float [ %583, %581 ], [ 0.000000e+00, %579 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef %585)
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds i8, ptr %586, i64 136
  %588 = load i64, ptr %10, align 8
  store i64 %588, ptr %587, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %589

589:                                              ; preds = %584, %574, %567
  %.in718.in = phi i64 [ %588, %584 ], [ %572, %574 ], [ %572, %567 ]
  %.in718 = trunc i64 %.in718.in to i32
  %590 = bitcast i32 %.in718 to float
  %591 = getelementptr inbounds i8, ptr %47, i64 3472
  %592 = load float, ptr %591, align 4, !tbaa !216
  %593 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %590, float noundef %592)
  %594 = getelementptr inbounds i8, ptr %47, i64 8108
  %595 = load float, ptr %594, align 4, !tbaa !217
  %596 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %593, float noundef %595)
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds i8, ptr %597, i64 436
  store float %596, ptr %598, align 4, !tbaa !218
  %599 = getelementptr inbounds i8, ptr %47, i64 8112
  %600 = load float, ptr %599, align 4, !tbaa !219
  %601 = getelementptr inbounds i8, ptr %597, i64 440
  store float %600, ptr %601, align 4, !tbaa !220
  %602 = and i32 %559, 1
  %.not489 = icmp eq i32 %602, 0
  br i1 %.not489, label %603, label %609

603:                                              ; preds = %589
  %604 = getelementptr inbounds i8, ptr %47, i64 4616
  %605 = load float, ptr %604, align 8, !tbaa !221
  %606 = getelementptr inbounds i8, ptr %47, i64 3460
  %607 = load float, ptr %606, align 4, !tbaa !222
  %608 = call float @llvm.fmuladd.f32(float %607, float 2.000000e+00, float %605)
  br label %609

609:                                              ; preds = %589, %603
  %610 = phi float [ %608, %603 ], [ 0.000000e+00, %589 ]
  %611 = getelementptr inbounds i8, ptr %597, i64 152
  store float %610, ptr %611, align 8, !tbaa !223
  %612 = and i32 %559, 1024
  %.not490.not = icmp eq i32 %612, 0
  %.phi.trans.insert = getelementptr inbounds i8, ptr %47, i64 4616
  %.pre662 = load float, ptr %.phi.trans.insert, align 8, !tbaa !221
  br i1 %.not490.not, label %._crit_edge661, label %613

613:                                              ; preds = %609
  %614 = fadd float %600, %.pre662
  %615 = getelementptr inbounds i8, ptr %47, i64 3460
  %616 = load float, ptr %615, align 4, !tbaa !222
  %617 = call float @llvm.fmuladd.f32(float %616, float 2.000000e+00, float %614)
  br label %._crit_edge661

._crit_edge661:                                   ; preds = %609, %613
  %618 = phi float [ %617, %613 ], [ 0.000000e+00, %609 ]
  %619 = getelementptr inbounds i8, ptr %597, i64 156
  store float %618, ptr %619, align 4, !tbaa !224
  %620 = getelementptr inbounds i8, ptr %47, i64 4616
  %621 = getelementptr inbounds i8, ptr %597, i64 780
  store float %.pre662, ptr %621, align 4, !tbaa !225
  br i1 %.0387, label %622, label %627

622:                                              ; preds = %._crit_edge661
  %623 = getelementptr inbounds i8, ptr %597, i64 128
  %624 = load float, ptr %623, align 8, !tbaa !226
  %625 = fcmp une float %624, 0.000000e+00
  br i1 %625, label %626, label %627

626:                                              ; preds = %622
  br label %627

627:                                              ; preds = %626, %622, %._crit_edge661
  %.0390 = phi i1 [ true, %626 ], [ %64, %622 ], [ %64, %._crit_edge661 ]
  br i1 %.0388, label %628, label %633

628:                                              ; preds = %627
  %629 = getelementptr inbounds i8, ptr %597, i64 132
  %630 = load float, ptr %629, align 4, !tbaa !227
  %631 = fcmp une float %630, 0.000000e+00
  br i1 %631, label %632, label %633

632:                                              ; preds = %628
  br label %633

633:                                              ; preds = %632, %628, %627
  %.0395 = phi i1 [ true, %632 ], [ %64, %628 ], [ %64, %627 ]
  %634 = and i32 %559, 33
  %or.cond562 = icmp eq i32 %634, 0
  br i1 %or.cond562, label %635, label %682

635:                                              ; preds = %633
  %636 = getelementptr inbounds i8, ptr %597, i64 1157
  %637 = load i8, ptr %636, align 1
  %638 = trunc i8 %637 to i1
  br i1 %638, label %682, label %639

639:                                              ; preds = %635
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #12
  %640 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %597)
  %641 = extractvalue { <2 x float>, <2 x float> } %640, 0
  store <2 x float> %641, ptr %11, align 8
  %642 = getelementptr inbounds i8, ptr %11, i64 8
  %643 = extractvalue { <2 x float>, <2 x float> } %640, 1
  store <2 x float> %643, ptr %642, align 8
  %644 = getelementptr inbounds i8, ptr %47, i64 5368
  %645 = load ptr, ptr %644, align 8, !tbaa !228
  %646 = load ptr, ptr %4, align 8, !tbaa !5
  %647 = icmp eq ptr %645, %646
  br i1 %647, label %648, label %672

648:                                              ; preds = %639
  %649 = getelementptr inbounds i8, ptr %47, i64 5452
  %650 = load i32, ptr %649, align 4, !tbaa !229
  %651 = icmp eq i32 %650, 0
  br i1 %651, label %652, label %672

652:                                              ; preds = %648
  %653 = getelementptr inbounds i8, ptr %47, i64 5456
  %654 = load i32, ptr %653, align 8, !tbaa !230
  %655 = icmp eq i32 %654, 0
  br i1 %655, label %656, label %672

656:                                              ; preds = %652
  %657 = getelementptr inbounds i8, ptr %47, i64 5476
  %658 = load i32, ptr %657, align 4, !tbaa !231
  %659 = icmp eq i32 %658, 0
  br i1 %659, label %660, label %672

660:                                              ; preds = %656
  %661 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %642, i1 noundef zeroext true)
  br i1 %661, label %662, label %672

662:                                              ; preds = %660
  %663 = getelementptr inbounds i8, ptr %47, i64 2866
  %664 = load i16, ptr %663, align 2, !tbaa !232
  %665 = icmp eq i16 %664, 2
  br i1 %665, label %666, label %672

666:                                              ; preds = %662
  %667 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 656)
  %668 = icmp eq i32 %667, -1
  br i1 %668, label %669, label %672

669:                                              ; preds = %666
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds i8, ptr %670, i64 261
  store i8 1, ptr %671, align 1, !tbaa !233
  br label %672

672:                                              ; preds = %662, %666, %669, %660, %656, %652, %648, %639
  %673 = load ptr, ptr %4, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %673, i64 261
  %675 = load i8, ptr %674, align 1, !tbaa !233, !range !99, !noundef !100
  %676 = trunc nuw i8 %675 to i1
  br i1 %676, label %677, label %681

677:                                              ; preds = %672
  %678 = getelementptr inbounds i8, ptr %673, i64 260
  %679 = load i8, ptr %678, align 4, !tbaa !234, !range !99, !noundef !100
  %680 = xor i8 %679, 1
  store i8 %680, ptr %678, align 4, !tbaa !234
  %.not637.not = icmp ne i8 %679, 0
  %spec.select563 = or i1 %.not637.not, %.0395
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %673)
  %.pre663.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %681

681:                                              ; preds = %677, %672
  %.pre663 = phi ptr [ %.pre663.pre, %677 ], [ %673, %672 ]
  %.2397 = phi i1 [ %spec.select563, %677 ], [ %.0395, %672 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  %.phi.trans.insert664 = getelementptr inbounds i8, ptr %.pre663, i64 152
  %.pre665 = load float, ptr %.phi.trans.insert664, align 8, !tbaa !223
  %.phi.trans.insert666 = getelementptr inbounds i8, ptr %.pre663, i64 156
  %.pre667 = load float, ptr %.phi.trans.insert666, align 4, !tbaa !224
  br label %684

682:                                              ; preds = %635, %633
  %683 = getelementptr inbounds i8, ptr %597, i64 260
  store i8 0, ptr %683, align 4, !tbaa !234
  br label %684

684:                                              ; preds = %682, %681
  %685 = phi float [ %618, %682 ], [ %.pre667, %681 ]
  %686 = phi float [ %610, %682 ], [ %.pre665, %681 ]
  %687 = phi ptr [ %597, %682 ], [ %.pre663, %681 ]
  %.3398 = phi i1 [ %.0395, %682 ], [ %.2397, %681 ]
  %688 = getelementptr inbounds i8, ptr %687, i64 261
  store i8 0, ptr %688, align 1, !tbaa !233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %689 = getelementptr inbounds i8, ptr %687, i64 244
  %690 = load i64, ptr %689, align 4
  store i64 %690, ptr %12, align 8
  %691 = getelementptr inbounds i8, ptr %687, i64 160
  store float 0.000000e+00, ptr %691, align 8, !tbaa !235
  %692 = getelementptr inbounds i8, ptr %687, i64 168
  %693 = fadd float %686, %685
  %694 = getelementptr inbounds i8, ptr %687, i64 164
  store float %693, ptr %694, align 4, !tbaa !236
  store <2 x float> zeroinitializer, ptr %692, align 8, !tbaa !155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %695 = load ptr, ptr %4, align 8, !tbaa !5
  %696 = getelementptr inbounds i8, ptr %695, i64 244
  %697 = load i64, ptr %13, align 8
  store i64 %697, ptr %696, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %698 = getelementptr inbounds i8, ptr %695, i64 120
  %699 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %695, ptr noundef nonnull align 4 dereferenceable(8) %698)
  store <2 x float> %699, ptr %14, align 8
  %700 = and i32 %559, 64
  %.not492.not = icmp eq i32 %700, 0
  %701 = extractelement <2 x float> %699, i64 0
  %702 = extractelement <2 x float> %699, i64 1
  %.pre668 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not492.not, label %713, label %703

703:                                              ; preds = %684
  %704 = getelementptr inbounds i8, ptr %.pre668, i64 260
  %705 = load i8, ptr %704, align 4, !tbaa !234, !range !99, !noundef !100
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %713, label %707

707:                                              ; preds = %703
  br i1 %.0387, label %710, label %708

708:                                              ; preds = %707
  %709 = getelementptr inbounds i8, ptr %.pre668, i64 104
  store float %701, ptr %709, align 8, !tbaa !176
  br label %710

710:                                              ; preds = %708, %707
  %.1391 = phi i1 [ %.0390, %707 ], [ true, %708 ]
  br i1 %.0388, label %762, label %711

711:                                              ; preds = %710
  %712 = getelementptr inbounds i8, ptr %.pre668, i64 108
  store float %702, ptr %712, align 4, !tbaa !177
  br label %762

713:                                              ; preds = %703, %684
  %714 = getelementptr inbounds i8, ptr %.pre668, i64 282
  %715 = load i8, ptr %714, align 2, !tbaa !237
  %716 = icmp sgt i8 %715, 0
  br i1 %716, label %721, label %717

717:                                              ; preds = %713
  %718 = getelementptr inbounds i8, ptr %.pre668, i64 283
  %719 = load i8, ptr %718, align 1, !tbaa !238
  %720 = icmp sgt i8 %719, 0
  br i1 %720, label %.thread618, label %762

721:                                              ; preds = %713
  br i1 %.0387, label %.thread618, label %722

722:                                              ; preds = %721
  %723 = getelementptr inbounds i8, ptr %.pre668, i64 284
  %724 = load i8, ptr %723, align 4, !tbaa !239, !range !99, !noundef !100
  %725 = trunc nuw i8 %724 to i1
  br i1 %725, label %726, label %730

726:                                              ; preds = %722
  %727 = getelementptr inbounds i8, ptr %.pre668, i64 104
  %728 = load float, ptr %727, align 8, !tbaa !176
  %729 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %728, float noundef %701)
  %.pre669 = load ptr, ptr %4, align 8, !tbaa !5
  br label %730

730:                                              ; preds = %722, %726
  %731 = phi ptr [ %.pre669, %726 ], [ %.pre668, %722 ]
  %732 = phi float [ %729, %726 ], [ %701, %722 ]
  %733 = getelementptr inbounds i8, ptr %731, i64 104
  store float %732, ptr %733, align 8, !tbaa !176
  br label %.thread618

.thread618:                                       ; preds = %717, %730, %721
  %734 = phi ptr [ %.pre668, %721 ], [ %731, %730 ], [ %.pre668, %717 ]
  %.2392 = phi i1 [ %.0390, %721 ], [ true, %730 ], [ %.0390, %717 ]
  br i1 %.0388, label %756, label %735

735:                                              ; preds = %.thread618
  %736 = getelementptr inbounds i8, ptr %734, i64 283
  %737 = load i8, ptr %736, align 1, !tbaa !238
  %738 = icmp sgt i8 %737, 0
  br i1 %738, label %739, label %756

739:                                              ; preds = %735
  %740 = getelementptr inbounds i8, ptr %734, i64 284
  %741 = load i8, ptr %740, align 4, !tbaa !239, !range !99, !noundef !100
  %742 = trunc nuw i8 %741 to i1
  br i1 %742, label %743, label %749

743:                                              ; preds = %739
  %744 = getelementptr inbounds i8, ptr %734, i64 108
  %745 = load float, ptr %744, align 4, !tbaa !177
  %746 = getelementptr inbounds i8, ptr %14, i64 4
  %747 = load float, ptr %746, align 4, !tbaa !240
  %748 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %745, float noundef %747)
  %.pre670 = load ptr, ptr %4, align 8, !tbaa !5
  br label %752

749:                                              ; preds = %739
  %750 = getelementptr inbounds i8, ptr %14, i64 4
  %751 = load float, ptr %750, align 4, !tbaa !240
  br label %752

752:                                              ; preds = %749, %743
  %753 = phi ptr [ %.pre670, %743 ], [ %734, %749 ]
  %754 = phi float [ %748, %743 ], [ %751, %749 ]
  %755 = getelementptr inbounds i8, ptr %753, i64 108
  store float %754, ptr %755, align 4, !tbaa !177
  br label %756

756:                                              ; preds = %752, %735, %.thread618
  %757 = phi ptr [ %734, %.thread618 ], [ %753, %752 ], [ %734, %735 ]
  %.4399 = phi i1 [ %.3398, %.thread618 ], [ true, %752 ], [ %.3398, %735 ]
  %758 = getelementptr inbounds i8, ptr %757, i64 260
  %759 = load i8, ptr %758, align 4, !tbaa !234, !range !99, !noundef !100
  %760 = trunc nuw i8 %759 to i1
  br i1 %760, label %762, label %761

761:                                              ; preds = %756
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %757)
  %.pre671 = load ptr, ptr %4, align 8, !tbaa !5
  br label %762

762:                                              ; preds = %717, %761, %756, %710, %711
  %763 = phi ptr [ %757, %756 ], [ %.pre671, %761 ], [ %.pre668, %717 ], [ %.pre668, %710 ], [ %.pre668, %711 ]
  %.5400 = phi i1 [ %.4399, %756 ], [ %.4399, %761 ], [ %.3398, %717 ], [ %.3398, %710 ], [ true, %711 ]
  %.3393 = phi i1 [ %.2392, %756 ], [ %.2392, %761 ], [ %.0390, %717 ], [ %.1391, %710 ], [ %.1391, %711 ]
  %764 = getelementptr inbounds i8, ptr %763, i64 104
  %765 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %763, ptr noundef nonnull align 4 dereferenceable(8) %764)
  %766 = load ptr, ptr %4, align 8, !tbaa !5
  %767 = getelementptr inbounds i8, ptr %766, i64 104
  store <2 x float> %765, ptr %767, align 8
  %768 = getelementptr inbounds i8, ptr %766, i64 260
  %769 = load i8, ptr %768, align 4, !tbaa !234, !range !99, !noundef !100
  %770 = trunc nuw i8 %769 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #12
  %or.cond564 = select i1 %770, i1 %.not481, i1 false
  br i1 %or.cond564, label %771, label %777

771:                                              ; preds = %762
  %772 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %766)
  %773 = extractvalue { <2 x float>, <2 x float> } %772, 0
  store <2 x float> %773, ptr %15, align 8
  %774 = getelementptr inbounds i8, ptr %15, i64 8
  %775 = extractvalue { <2 x float>, <2 x float> } %772, 1
  store <2 x float> %775, ptr %774, align 8
  %776 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %15)
  %.pre672 = load ptr, ptr %4, align 8, !tbaa !5
  br label %777

777:                                              ; preds = %762, %771
  %778 = phi ptr [ %.pre672, %771 ], [ %766, %762 ]
  %.sroa.060.0 = phi <2 x float> [ %776, %771 ], [ %765, %762 ]
  %779 = getelementptr inbounds i8, ptr %778, i64 96
  store <2 x float> %.sroa.060.0, ptr %779, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #12
  br i1 %.0385.in, label %780, label %790

780:                                              ; preds = %777
  %781 = getelementptr inbounds i8, ptr %778, i64 288
  store i32 -1, ptr %781, align 8, !tbaa !241
  %782 = and i32 %559, 201326592
  %or.cond565 = icmp ne i32 %782, 67108864
  %brmerge566 = or i1 %.0386.shrunk, %or.cond565
  br i1 %brmerge566, label %790, label %783

783:                                              ; preds = %780
  %784 = getelementptr inbounds i8, ptr %47, i64 8240
  %785 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %784)
  %786 = getelementptr inbounds i8, ptr %785, i64 36
  %787 = load ptr, ptr %4, align 8, !tbaa !5
  %788 = getelementptr inbounds i8, ptr %787, i64 88
  %789 = load i64, ptr %786, align 4
  store i64 %789, ptr %788, align 8
  br label %790

790:                                              ; preds = %780, %783, %777
  %791 = phi ptr [ %778, %780 ], [ %787, %783 ], [ %778, %777 ]
  br i1 %.not481, label %806, label %792

792:                                              ; preds = %790
  br i1 %216, label %.critedge4, label %793

793:                                              ; preds = %792
  %794 = getelementptr inbounds i8, ptr %215, i64 257
  %795 = load i8, ptr %794, align 1, !tbaa !190, !range !99, !noundef !100
  %796 = trunc nuw i8 %795 to i1
  br i1 %796, label %797, label %.critedge4

.critedge4:                                       ; preds = %792, %793
  call void @__assert_fail(ptr noundef nonnull @.str.159, ptr noundef nonnull @.str.3, i32 noundef 7811, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

797:                                              ; preds = %793
  %798 = getelementptr inbounds i8, ptr %215, i64 480
  %799 = load i32, ptr %798, align 8, !tbaa !242
  %800 = trunc i32 %799 to i16
  %801 = getelementptr inbounds i8, ptr %791, i64 276
  store i16 %800, ptr %801, align 4, !tbaa !136
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %798, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not497.not = xor i1 %.not486, true
  %brmerge567 = or i1 %.0386.shrunk, %.not497.not
  %brmerge568 = select i1 %brmerge567, i1 true, i1 %438
  %.pre673 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge568, label %806, label %802

802:                                              ; preds = %797
  %803 = getelementptr inbounds i8, ptr %215, i64 336
  %804 = getelementptr inbounds i8, ptr %.pre673, i64 88
  %805 = load i64, ptr %803, align 8
  store i64 %805, ptr %804, align 8
  br label %806

806:                                              ; preds = %797, %802, %790
  %807 = phi ptr [ %.pre673, %797 ], [ %.pre673, %802 ], [ %791, %790 ]
  %808 = getelementptr inbounds i8, ptr %807, i64 300
  %809 = load float, ptr %808, align 4, !tbaa !243
  %810 = fcmp une float %809, 0x47EFFFFFE0000000
  br i1 %810, label %811, label %.critedge570

811:                                              ; preds = %806
  %812 = getelementptr inbounds i8, ptr %807, i64 293
  %813 = load i8, ptr %812, align 1, !tbaa !189
  %814 = icmp eq i8 %813, 0
  br i1 %814, label %815, label %.critedge570

815:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %816 = getelementptr inbounds i8, ptr %807, i64 96
  %817 = getelementptr inbounds i8, ptr %807, i64 308
  %818 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %816, ptr noundef nonnull align 4 dereferenceable(8) %817)
  store <2 x float> %818, ptr %17, align 8
  %819 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %808, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %819, ptr %16, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %807, ptr noundef nonnull align 4 dereferenceable(8) %16, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  %.pre674 = load ptr, ptr %4, align 8, !tbaa !5
  br label %836

.critedge570:                                     ; preds = %806, %811
  %820 = and i32 %559, 268435456
  %.not498 = icmp eq i32 %820, 0
  br i1 %.not498, label %825, label %821

821:                                              ; preds = %.critedge570
  %822 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %807)
  %823 = load ptr, ptr %4, align 8, !tbaa !5
  %824 = getelementptr inbounds i8, ptr %823, i64 88
  store <2 x float> %822, ptr %824, align 8
  br label %836

825:                                              ; preds = %.critedge570
  %brmerge571 = or i1 %.0386.shrunk, %.not486
  %brmerge573 = select i1 %brmerge571, i1 true, i1 %441
  br i1 %brmerge573, label %830, label %826

826:                                              ; preds = %825
  %827 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %807)
  %828 = load ptr, ptr %4, align 8, !tbaa !5
  %829 = getelementptr inbounds i8, ptr %828, i64 88
  store <2 x float> %827, ptr %829, align 8
  br label %836

830:                                              ; preds = %825
  %831 = and i32 %559, 33554432
  %.not500 = icmp eq i32 %831, 0
  %brmerge574 = or i1 %.0386.shrunk, %.not500
  %brmerge575 = select i1 %brmerge574, i1 true, i1 %438
  br i1 %brmerge575, label %836, label %832

832:                                              ; preds = %830
  %833 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %807)
  %834 = load ptr, ptr %4, align 8, !tbaa !5
  %835 = getelementptr inbounds i8, ptr %834, i64 88
  store <2 x float> %833, ptr %835, align 8
  br label %836

836:                                              ; preds = %830, %821, %832, %826, %815
  %837 = phi ptr [ %807, %830 ], [ %823, %821 ], [ %834, %832 ], [ %828, %826 ], [ %.pre674, %815 ]
  %838 = getelementptr inbounds i8, ptr %837, i64 84
  %839 = load i32, ptr %838, align 4, !tbaa !244
  %840 = icmp sgt i32 %839, -1
  br i1 %840, label %841, label %880

841:                                              ; preds = %836
  %842 = getelementptr inbounds i8, ptr %837, i64 256
  %843 = load i8, ptr %842, align 8, !tbaa !245, !range !99, !noundef !100
  %844 = trunc nuw i8 %843 to i1
  br i1 %844, label %880, label %845

845:                                              ; preds = %841
  %846 = getelementptr inbounds i8, ptr %837, i64 64
  %847 = load ptr, ptr %846, align 8, !tbaa !196
  %848 = getelementptr inbounds i8, ptr %847, i64 4
  %849 = load i32, ptr %848, align 4, !tbaa !246
  %850 = and i32 %849, 4096
  %.not501 = icmp eq i32 %850, 0
  br i1 %.not501, label %851, label %880

851:                                              ; preds = %845
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #12
  %852 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %847)
  %853 = extractvalue { <2 x float>, <2 x float> } %852, 0
  store <2 x float> %853, ptr %18, align 8
  %854 = getelementptr inbounds i8, ptr %18, i64 8
  %855 = extractvalue { <2 x float>, <2 x float> } %852, 1
  store <2 x float> %855, ptr %854, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #12
  %856 = load ptr, ptr %4, align 8, !tbaa !5
  %857 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %856)
  %858 = extractvalue { <2 x float>, <2 x float> } %857, 0
  store <2 x float> %858, ptr %19, align 8
  %859 = getelementptr inbounds i8, ptr %19, i64 8
  %860 = extractvalue { <2 x float>, <2 x float> } %857, 1
  store <2 x float> %860, ptr %859, align 8
  %861 = call noundef zeroext i1 @_ZNK6ImRect8ContainsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %18, ptr noundef nonnull align 4 dereferenceable(16) %19)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #12
  %.pre677 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %861, label %880, label %862

862:                                              ; preds = %851
  %863 = getelementptr inbounds i8, ptr %.pre677, i64 16
  %864 = load i32, ptr %863, align 8, !tbaa !104
  %865 = getelementptr inbounds i8, ptr %.pre677, i64 88
  %866 = getelementptr inbounds i8, ptr %.pre677, i64 96
  %867 = call noundef ptr @_ZN5ImGuiL17AddUpdateViewportEP11ImGuiWindowjRK6ImVec2S4_i(ptr noundef %.pre677, i32 noundef %864, ptr noundef nonnull align 4 dereferenceable(8) %865, ptr noundef nonnull align 4 dereferenceable(8) %866, i32 noundef 32)
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds i8, ptr %868, i64 64
  store ptr %867, ptr %869, align 8, !tbaa !196
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %868, ptr noundef %867)
  %870 = load i32, ptr %546, align 8, !tbaa !212
  %871 = and i32 %870, 32768
  %.not502 = icmp eq i32 %871, 0
  %.pre675 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not502, label %877, label %872

872:                                              ; preds = %862
  %873 = getelementptr inbounds i8, ptr %.pre675, i64 64
  %874 = load ptr, ptr %873, align 8, !tbaa !196
  %875 = getelementptr inbounds i8, ptr %874, i64 40
  %876 = load float, ptr %875, align 8, !tbaa !213
  br label %877

877:                                              ; preds = %862, %872
  %878 = phi float [ %876, %872 ], [ 1.000000e+00, %862 ]
  %879 = getelementptr inbounds i8, ptr %.pre675, i64 776
  store float %878, ptr %879, align 8, !tbaa !214
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %.pre675)
  %.pre676 = load ptr, ptr %4, align 8, !tbaa !5
  br label %880

880:                                              ; preds = %851, %877, %845, %841, %836
  %881 = phi ptr [ %.pre677, %851 ], [ %.pre676, %877 ], [ %837, %845 ], [ %837, %841 ], [ %837, %836 ]
  %882 = getelementptr inbounds i8, ptr %881, i64 256
  %883 = load i8, ptr %882, align 8, !tbaa !245, !range !99, !noundef !100
  %884 = trunc nuw i8 %883 to i1
  br i1 %884, label %885, label %886

885:                                              ; preds = %880
  call void @_ZN5ImGuiL23WindowSyncOwnedViewportEP11ImGuiWindowS1_(ptr noundef nonnull %881, ptr noundef %207)
  %.pre678 = load ptr, ptr %4, align 8, !tbaa !5
  br label %886

886:                                              ; preds = %885, %880
  %887 = phi ptr [ %.pre678, %885 ], [ %881, %880 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #12
  %888 = getelementptr inbounds i8, ptr %887, i64 64
  %889 = load ptr, ptr %888, align 8, !tbaa !196
  %890 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %889)
  %891 = extractvalue { <2 x float>, <2 x float> } %890, 0
  store <2 x float> %891, ptr %20, align 8
  %892 = getelementptr inbounds i8, ptr %20, i64 8
  %893 = extractvalue { <2 x float>, <2 x float> } %890, 1
  store <2 x float> %893, ptr %892, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #12
  %894 = load ptr, ptr %4, align 8, !tbaa !5
  %895 = getelementptr inbounds i8, ptr %894, i64 64
  %896 = load ptr, ptr %895, align 8, !tbaa !196
  %897 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328) %896)
  %898 = extractvalue { <2 x float>, <2 x float> } %897, 0
  store <2 x float> %898, ptr %21, align 8
  %899 = getelementptr inbounds i8, ptr %21, i64 8
  %900 = extractvalue { <2 x float>, <2 x float> } %897, 1
  store <2 x float> %900, ptr %899, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %901 = getelementptr inbounds i8, ptr %47, i64 3612
  %902 = getelementptr inbounds i8, ptr %47, i64 3620
  %903 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %901, ptr noundef nonnull align 4 dereferenceable(8) %902)
  store <2 x float> %903, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %904 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %904, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %905 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %899, ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %905, ptr %25, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %25)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  %.not496.not = xor i1 %.not481, true
  %brmerge576 = or i1 %.0386.shrunk, %.not496.not
  br i1 %brmerge576, label %947, label %906

906:                                              ; preds = %886
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds i8, ptr %907, i64 256
  %909 = load i8, ptr %908, align 8, !tbaa !245, !range !99, !noundef !100
  %910 = trunc nuw i8 %909 to i1
  br i1 %910, label %917, label %911

911:                                              ; preds = %906
  %912 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %20)
  %913 = fcmp ogt float %912, 0.000000e+00
  br i1 %913, label %914, label %._crit_edge679

._crit_edge679:                                   ; preds = %911
  %.pre680 = load ptr, ptr %4, align 8, !tbaa !5
  br label %917

914:                                              ; preds = %911
  %915 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %20)
  %916 = fcmp ogt float %915, 0.000000e+00
  %.pre681 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %916, label %.sink.split, label %917

917:                                              ; preds = %._crit_edge679, %914, %906
  %918 = phi ptr [ %.pre680, %._crit_edge679 ], [ %.pre681, %914 ], [ %907, %906 ]
  %919 = getelementptr inbounds i8, ptr %918, i64 256
  %920 = load i8, ptr %919, align 8, !tbaa !245, !range !99, !noundef !100
  %921 = trunc nuw i8 %920 to i1
  br i1 %921, label %922, label %947

922:                                              ; preds = %917
  %923 = getelementptr inbounds i8, ptr %47, i64 3360
  %924 = load i32, ptr %923, align 8, !tbaa !247
  %925 = icmp sgt i32 %924, 0
  br i1 %925, label %926, label %947

926:                                              ; preds = %922
  %927 = getelementptr inbounds i8, ptr %47, i64 5392
  %928 = load ptr, ptr %927, align 8, !tbaa !248
  %.not503 = icmp eq ptr %928, null
  br i1 %.not503, label %937, label %929

929:                                              ; preds = %926
  %930 = getelementptr inbounds i8, ptr %918, i64 1048
  %931 = load ptr, ptr %930, align 8, !tbaa !249
  %932 = getelementptr inbounds i8, ptr %928, i64 1048
  %933 = load ptr, ptr %932, align 8, !tbaa !249
  %934 = icmp eq ptr %931, %933
  br i1 %934, label %935, label %937

935:                                              ; preds = %929
  %936 = getelementptr inbounds i8, ptr %47, i64 8368
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(16) %936, i64 16, i1 false), !tbaa.struct !192
  br label %944

937:                                              ; preds = %929, %926
  %938 = getelementptr inbounds i8, ptr %918, i64 64
  %939 = load ptr, ptr %938, align 8, !tbaa !196
  %940 = call noundef ptr @_ZN5ImGui26GetViewportPlatformMonitorEP13ImGuiViewport(ptr noundef %939)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #12
  %941 = getelementptr inbounds i8, ptr %940, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %942 = getelementptr inbounds i8, ptr %940, i64 24
  %943 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %941, ptr noundef nonnull align 4 dereferenceable(8) %942)
  store <2 x float> %943, ptr %27, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(8) %941, ptr noundef nonnull align 4 dereferenceable(8) %27)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(16) %26, i64 16, i1 false), !tbaa.struct !192
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #12
  br label %944

944:                                              ; preds = %937, %935
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %945 = call <2 x float> @_ZngRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %945, ptr %28, align 8
  call void @_ZN6ImRect6ExpandERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(8) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  %946 = load ptr, ptr %4, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %914, %944
  %.pre681.sink = phi ptr [ %946, %944 ], [ %.pre681, %914 ]
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %.pre681.sink, ptr noundef nonnull align 4 dereferenceable(16) %23)
  br label %947

947:                                              ; preds = %.sink.split, %886, %922, %917
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds i8, ptr %948, i64 88
  %950 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %949)
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds i8, ptr %951, i64 88
  store <2 x float> %950, ptr %952, align 8
  %953 = getelementptr inbounds i8, ptr %951, i64 256
  %954 = load i8, ptr %953, align 8, !tbaa !245, !range !99, !noundef !100
  %955 = trunc nuw i8 %954 to i1
  br i1 %955, label %964, label %956

956:                                              ; preds = %947
  %957 = getelementptr inbounds i8, ptr %951, i64 1157
  %958 = load i8, ptr %957, align 1
  %959 = trunc i8 %958 to i1
  br i1 %959, label %964, label %960

960:                                              ; preds = %956
  %961 = and i32 %559, 201326592
  %or.cond577 = icmp eq i32 %961, 67108864
  %. = select i1 %or.cond577, i64 3448, i64 3408
  %.sink = select i1 %.not481, i64 %., i64 3440
  %962 = getelementptr inbounds i8, ptr %47, i64 %.sink
  %963 = load float, ptr %962, align 4, !tbaa !155
  br label %964

964:                                              ; preds = %947, %956, %960
  %.sink726 = phi float [ %963, %960 ], [ 0.000000e+00, %956 ], [ 0.000000e+00, %947 ]
  %965 = getelementptr inbounds i8, ptr %951, i64 144
  store float %.sink726, ptr %965, align 8, !tbaa !250
  %966 = and i32 %559, 4096
  %.not507 = icmp eq i32 %966, 0
  %or.cond578.not = select i1 %.0385.in, i1 %.not507, i1 false
  %brmerge634.not = select i1 %or.cond578.not, i1 %.not486, i1 false
  br i1 %brmerge634.not, label %967, label %972

967:                                              ; preds = %964
  %968 = getelementptr inbounds i8, ptr %951, i64 1157
  %969 = load i8, ptr %968, align 1
  %970 = trunc i8 %969 to i1
  %or.cond579 = or i1 %.not481, %970
  %971 = and i32 %559, 33554432
  %.not509 = icmp eq i32 %971, 0
  %or.cond580 = select i1 %or.cond579, i1 %.not509, i1 false
  br label %972

972:                                              ; preds = %964, %967
  %.0402 = phi i1 [ %or.cond578.not, %964 ], [ %or.cond580, %967 ]
  %973 = getelementptr inbounds i8, ptr %951, i64 1200
  %974 = load ptr, ptr %973, align 8, !tbaa !140
  %.not510 = icmp eq ptr %974, null
  br i1 %.not510, label %975, label %980

975:                                              ; preds = %972
  %976 = getelementptr inbounds i8, ptr %951, i64 1157
  %977 = load i8, ptr %976, align 1
  %978 = trunc i8 %977 to i1
  %979 = xor i1 %978, true
  br label %980

980:                                              ; preds = %975, %972
  %981 = phi i1 [ true, %972 ], [ %979, %975 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #12
  store i32 -1, ptr %29, align 4, !tbaa !154
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #12
  store i32 -1, ptr %30, align 4, !tbaa !154
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %31, i8 0, i64 16, i1 false)
  %or.cond582 = select i1 %.not496.not, i1 %.not486, i1 false
  br i1 %or.cond582, label %987, label %982

982:                                              ; preds = %980
  %983 = getelementptr inbounds i8, ptr %47, i64 109
  %984 = load i8, ptr %983, align 1, !tbaa !251, !range !99, !noundef !100
  %985 = trunc nuw i8 %984 to i1
  %986 = select i1 %985, i32 2, i32 1
  br label %987

987:                                              ; preds = %980, %982
  %988 = phi i32 [ %986, %982 ], [ 0, %980 ]
  %989 = load float, ptr %620, align 8, !tbaa !221
  %990 = fmul float %989, 0x3FF19999A0000000
  %991 = fadd float %.sink726, 1.000000e+00
  %992 = call float @llvm.fmuladd.f32(float %989, float 0x3FC99999A0000000, float %991)
  %993 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %990, float noundef %992)
  %994 = fptosi float %993 to i32
  %995 = sitofp i32 %994 to float
  br i1 %981, label %996, label %1006

996:                                              ; preds = %987
  %997 = load ptr, ptr %4, align 8, !tbaa !5
  %998 = getelementptr inbounds i8, ptr %997, i64 260
  %999 = load i8, ptr %998, align 4, !tbaa !234, !range !99, !noundef !100
  %1000 = trunc nuw i8 %999 to i1
  br i1 %1000, label %1006, label %1001

1001:                                             ; preds = %996
  %1002 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %997, ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull %29, ptr noundef nonnull %30, i32 noundef %988, ptr noundef nonnull %31, ptr noundef nonnull align 4 dereferenceable(16) %23)
  %.not512 = icmp eq i32 %1002, 0
  br i1 %.not512, label %1006, label %1003

1003:                                             ; preds = %1001
  %1004 = and i32 %1002, 1
  %.not513 = icmp ne i32 %1004, 0
  %spec.select583 = or i1 %.not513, %.3393
  %1005 = and i32 %1002, 2
  %.not514 = icmp ne i32 %1005, 0
  %spec.select615 = or i1 %.not514, %.5400
  br label %1006

1006:                                             ; preds = %1003, %1001, %996, %987
  %.7 = phi i1 [ %.5400, %996 ], [ %.5400, %987 ], [ %.5400, %1001 ], [ %spec.select615, %1003 ]
  %.6 = phi i1 [ %.3393, %996 ], [ %.3393, %987 ], [ %.3393, %1001 ], [ %spec.select583, %1003 ]
  %1007 = load i32, ptr %29, align 4, !tbaa !154
  %1008 = trunc i32 %1007 to i8
  %1009 = load ptr, ptr %4, align 8, !tbaa !5
  %1010 = getelementptr inbounds i8, ptr %1009, i64 269
  store i8 %1008, ptr %1010, align 1, !tbaa !252
  %1011 = load i32, ptr %30, align 4, !tbaa !154
  %1012 = trunc i32 %1011 to i8
  %1013 = getelementptr inbounds i8, ptr %1009, i64 270
  store i8 %1012, ptr %1013, align 2, !tbaa !253
  %1014 = getelementptr inbounds i8, ptr %1009, i64 256
  %1015 = load i8, ptr %1014, align 8, !tbaa !245, !range !99, !noundef !100
  %1016 = trunc nuw i8 %1015 to i1
  br i1 %1016, label %1017, label %1044

1017:                                             ; preds = %1006
  %1018 = getelementptr inbounds i8, ptr %1009, i64 64
  %1019 = load ptr, ptr %1018, align 8, !tbaa !196
  %1020 = getelementptr inbounds i8, ptr %1019, i64 89
  %1021 = load i8, ptr %1020, align 1, !tbaa !254, !range !99, !noundef !100
  %1022 = trunc nuw i8 %1021 to i1
  br i1 %1022, label %1027, label %1023

1023:                                             ; preds = %1017
  %1024 = getelementptr inbounds i8, ptr %1009, i64 88
  %1025 = getelementptr inbounds i8, ptr %1019, i64 8
  %1026 = load i64, ptr %1024, align 8
  store i64 %1026, ptr %1025, align 8
  %.pre682 = load ptr, ptr %1018, align 8, !tbaa !196
  br label %1027

1027:                                             ; preds = %1023, %1017
  %1028 = phi ptr [ %.pre682, %1023 ], [ %1019, %1017 ]
  %1029 = getelementptr inbounds i8, ptr %1028, i64 90
  %1030 = load i8, ptr %1029, align 2, !tbaa !255, !range !99, !noundef !100
  %1031 = trunc nuw i8 %1030 to i1
  br i1 %1031, label %1036, label %1032

1032:                                             ; preds = %1027
  %1033 = getelementptr inbounds i8, ptr %1009, i64 96
  %1034 = getelementptr inbounds i8, ptr %1028, i64 16
  %1035 = load i64, ptr %1033, align 8
  store i64 %1035, ptr %1034, align 8
  %.pre683 = load ptr, ptr %1018, align 8, !tbaa !196
  br label %1036

1036:                                             ; preds = %1032, %1027
  %1037 = phi ptr [ %.pre683, %1032 ], [ %1028, %1027 ]
  call void @_ZN14ImGuiViewportP14UpdateWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328) %1037)
  %1038 = load ptr, ptr %4, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i64 64
  %1040 = load ptr, ptr %1039, align 8, !tbaa !196
  %1041 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(328) %1040)
  %1042 = extractvalue { <2 x float>, <2 x float> } %1041, 0
  %1043 = extractvalue { <2 x float>, <2 x float> } %1041, 1
  store <2 x float> %1042, ptr %20, align 8
  store <2 x float> %1043, ptr %892, align 8
  %.pre684 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1044

1044:                                             ; preds = %1036, %1006
  %1045 = phi ptr [ %.pre684, %1036 ], [ %1009, %1006 ]
  %1046 = getelementptr inbounds i8, ptr %1045, i64 64
  %1047 = load ptr, ptr %1046, align 8, !tbaa !196
  %1048 = getelementptr inbounds i8, ptr %1047, i64 8
  %1049 = getelementptr inbounds i8, ptr %1045, i64 76
  %1050 = load i64, ptr %1048, align 8
  store i64 %1050, ptr %1049, align 4
  %1051 = getelementptr inbounds i8, ptr %1045, i64 260
  %1052 = load i8, ptr %1051, align 4, !tbaa !234, !range !99, !noundef !100
  %1053 = trunc nuw i8 %1052 to i1
  br i1 %1053, label %1170, label %1054

1054:                                             ; preds = %1044
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %1055 = getelementptr inbounds i8, ptr %1045, i64 104
  %1056 = load float, ptr %1055, align 8, !tbaa !176
  %1057 = getelementptr inbounds i8, ptr %1045, i64 108
  %1058 = load float, ptr %1057, align 4, !tbaa !177
  %1059 = getelementptr inbounds i8, ptr %1045, i64 164
  %1060 = load float, ptr %1059, align 4, !tbaa !236
  %1061 = getelementptr inbounds i8, ptr %1045, i64 172
  %1062 = load float, ptr %1061, align 4, !tbaa !256
  %1063 = fadd float %1060, %1062
  %1064 = fsub float %1058, %1063
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %1056, float noundef %1064)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #12
  %1065 = load ptr, ptr %4, align 8, !tbaa !5
  %1066 = getelementptr inbounds i8, ptr %1065, i64 616
  %1067 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1066)
  store <2 x float> %1067, ptr %33, align 8
  %1068 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  br i1 %64, label %1069, label %1070

1069:                                             ; preds = %1054
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %1076

1070:                                             ; preds = %1054
  %1071 = load ptr, ptr %4, align 8, !tbaa !5
  %1072 = getelementptr inbounds i8, ptr %1071, i64 112
  %1073 = getelementptr inbounds i8, ptr %1071, i64 136
  %1074 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1073, float noundef 2.000000e+00)
  store <2 x float> %1074, ptr %35, align 8
  %1075 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1072, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1075, ptr %34, align 8
  br label %1076

1076:                                             ; preds = %1070, %1069
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  %1077 = load float, ptr %32, align 4
  %.sroa.038.0.vec.extract = extractelement <2 x float> %1068, i64 0
  %1078 = select i1 %.6, float %1077, float %.sroa.038.0.vec.extract
  %1079 = getelementptr inbounds i8, ptr %32, i64 4
  %1080 = load float, ptr %1079, align 4
  %.sroa.038.4.vec.extract = extractelement <2 x float> %1068, i64 1
  %1081 = select i1 %.7, float %1080, float %.sroa.038.4.vec.extract
  %1082 = load ptr, ptr %4, align 8, !tbaa !5
  %1083 = getelementptr inbounds i8, ptr %1082, i64 252
  %1084 = load i8, ptr %1083, align 4, !tbaa !257, !range !99, !noundef !100
  %1085 = and i32 %559, 16384
  %.not515 = icmp eq i32 %1085, 0
  br i1 %.not515, label %1086, label %.thread619

1086:                                             ; preds = %1076
  %1087 = getelementptr inbounds i8, ptr %34, i64 4
  %1088 = load float, ptr %1087, align 4, !tbaa !240
  %1089 = fcmp ogt float %1088, %1081
  %1090 = and i32 %559, 8
  %.not516 = icmp eq i32 %1090, 0
  %1091 = select i1 %1089, i1 %.not516, i1 false
  %1092 = getelementptr inbounds i8, ptr %1082, i64 253
  %1093 = zext i1 %1091 to i8
  store i8 %1093, ptr %1092, align 1, !tbaa !258
  %1094 = and i32 %559, 32768
  %.not517 = icmp eq i32 %1094, 0
  br i1 %.not517, label %1098, label %1112

.thread619:                                       ; preds = %1076
  %1095 = getelementptr inbounds i8, ptr %1082, i64 253
  store i8 1, ptr %1095, align 1, !tbaa !258
  %1096 = and i32 %559, 32768
  %.not517620 = icmp eq i32 %1096, 0
  br i1 %.not517620, label %.thread621, label %1112

.thread621:                                       ; preds = %.thread619
  %1097 = load float, ptr %34, align 8, !tbaa !259
  %.pre716 = and i32 %559, 8
  br label %1100

1098:                                             ; preds = %1086
  %1099 = load float, ptr %34, align 8, !tbaa !259
  br i1 %1091, label %1100, label %1104

1100:                                             ; preds = %.thread621, %1098
  %.pre715.pre-phi = phi i32 [ %.pre716, %.thread621 ], [ 0, %1098 ]
  %1101 = phi float [ %1097, %.thread621 ], [ %1099, %1098 ]
  %1102 = getelementptr inbounds i8, ptr %47, i64 3512
  %1103 = load float, ptr %1102, align 4, !tbaa !260
  br label %1104

1104:                                             ; preds = %1098, %1100
  %.pre-phi = phi i32 [ %1090, %1098 ], [ %.pre715.pre-phi, %1100 ]
  %1105 = phi float [ %1099, %1098 ], [ %1101, %1100 ]
  %1106 = phi float [ 0.000000e+00, %1098 ], [ %1103, %1100 ]
  %1107 = fsub float %1078, %1106
  %1108 = fcmp ogt float %1105, %1107
  %.not518 = icmp eq i32 %.pre-phi, 0
  %or.cond584 = select i1 %1108, i1 %.not518, i1 false
  br i1 %or.cond584, label %1109, label %1112

1109:                                             ; preds = %1104
  %1110 = and i32 %559, 2048
  %1111 = icmp ne i32 %1110, 0
  br label %1112

1112:                                             ; preds = %.thread619, %1104, %1109, %1086
  %1113 = phi i1 [ true, %1086 ], [ false, %1104 ], [ %1111, %1109 ], [ true, %.thread619 ]
  %1114 = zext i1 %1113 to i8
  store i8 %1114, ptr %1083, align 4, !tbaa !257
  %1115 = getelementptr inbounds i8, ptr %1082, i64 255
  %1116 = load i8, ptr %1115, align 1, !tbaa !261
  %1117 = shl i8 %1116, 1
  %.not519 = icmp ne i8 %1084, %1114
  %1118 = zext i1 %.not519 to i8
  %1119 = or disjoint i8 %1117, %1118
  store i8 %1119, ptr %1115, align 1, !tbaa !261
  %.not520 = icmp eq i8 %1119, 0
  br i1 %.not520, label %.thread622, label %1120

1120:                                             ; preds = %1112
  %1121 = zext i8 %1119 to i32
  %1122 = call noundef i32 @_ZL14ImCountSetBitsj(i32 noundef %1121)
  %1123 = icmp ugt i32 %1122, 3
  %.pre685 = load ptr, ptr %4, align 8, !tbaa !5
  %1124 = getelementptr inbounds i8, ptr %.pre685, i64 252
  br i1 %1123, label %.thread622.thread, label %..thread622_crit_edge

..thread622_crit_edge:                            ; preds = %1120
  %.pre687 = load i8, ptr %1124, align 4, !tbaa !257, !range !99
  br label %.thread622

.thread622.thread:                                ; preds = %1120
  store i8 1, ptr %1124, align 4, !tbaa !257
  %1125 = getelementptr inbounds i8, ptr %.pre685, i64 254
  store i8 1, ptr %1125, align 2, !tbaa !262
  br label %1130

.thread622:                                       ; preds = %..thread622_crit_edge, %1112
  %1126 = phi i8 [ %.pre687, %..thread622_crit_edge ], [ %1114, %1112 ]
  %1127 = phi ptr [ %.pre685, %..thread622_crit_edge ], [ %1082, %1112 ]
  %1128 = getelementptr inbounds i8, ptr %1127, i64 254
  store i8 0, ptr %1128, align 2, !tbaa !262
  %1129 = trunc nuw i8 %1126 to i1
  br i1 %1129, label %1130, label %.thread622._crit_edge

.thread622._crit_edge:                            ; preds = %.thread622
  %.phi.trans.insert688 = getelementptr inbounds i8, ptr %1127, i64 253
  %.pre689 = load i8, ptr %.phi.trans.insert688, align 1, !tbaa !258, !range !99
  br label %1145

1130:                                             ; preds = %.thread622.thread, %.thread622
  %1131 = phi ptr [ %.pre685, %.thread622.thread ], [ %1127, %.thread622 ]
  %1132 = getelementptr inbounds i8, ptr %1131, i64 253
  %1133 = load i8, ptr %1132, align 1, !tbaa !258, !range !99, !noundef !100
  %1134 = trunc nuw i8 %1133 to i1
  br i1 %1134, label %1145, label %1135

1135:                                             ; preds = %1130
  %1136 = getelementptr inbounds i8, ptr %34, i64 4
  %1137 = load float, ptr %1136, align 4, !tbaa !240
  %1138 = getelementptr inbounds i8, ptr %47, i64 3512
  %1139 = load float, ptr %1138, align 4, !tbaa !260
  %1140 = fsub float %1081, %1139
  %1141 = fcmp ogt float %1137, %1140
  %1142 = and i32 %559, 8
  %.not521 = icmp eq i32 %1142, 0
  %1143 = select i1 %1141, i1 %.not521, i1 false
  %1144 = zext i1 %1143 to i8
  store i8 %1144, ptr %1132, align 1, !tbaa !258
  br label %1145

1145:                                             ; preds = %.thread622._crit_edge, %1135, %1130
  %1146 = phi i1 [ false, %.thread622._crit_edge ], [ true, %1135 ], [ true, %1130 ]
  %1147 = phi i8 [ %.pre689, %.thread622._crit_edge ], [ %1144, %1135 ], [ %1133, %1130 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #12
  %1148 = trunc nuw i8 %1147 to i1
  br i1 %1148, label %1149, label %1152

1149:                                             ; preds = %1145
  %1150 = getelementptr inbounds i8, ptr %47, i64 3512
  %1151 = load float, ptr %1150, align 4, !tbaa !260
  br label %1152

1152:                                             ; preds = %1145, %1149
  %1153 = phi float [ %1151, %1149 ], [ 0.000000e+00, %1145 ]
  br i1 %1146, label %1154, label %1157

1154:                                             ; preds = %1152
  %1155 = getelementptr inbounds i8, ptr %47, i64 3512
  %1156 = load float, ptr %1155, align 4, !tbaa !260
  br label %1157

1157:                                             ; preds = %1152, %1154
  %1158 = phi float [ %1156, %1154 ], [ 0.000000e+00, %1152 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef %1153, float noundef %1158)
  %1159 = load ptr, ptr %4, align 8, !tbaa !5
  %1160 = getelementptr inbounds i8, ptr %1159, i64 244
  %1161 = load i64, ptr %36, align 8
  store i64 %1161, ptr %1160, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #12
  %1162 = getelementptr inbounds i8, ptr %1159, i64 168
  %1163 = lshr i64 %1161, 32
  %1164 = insertelement <2 x i64> poison, i64 %1161, i64 0
  %1165 = insertelement <2 x i64> %1164, i64 %1163, i64 1
  %1166 = trunc <2 x i64> %1165 to <2 x i32>
  %1167 = bitcast <2 x i32> %1166 to <2 x float>
  %1168 = load <2 x float>, ptr %1162, align 8, !tbaa !155
  %1169 = fadd <2 x float> %1168, %1167
  store <2 x float> %1169, ptr %1162, align 8, !tbaa !155
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  br label %1170

1170:                                             ; preds = %1157, %1044
  %1171 = phi ptr [ %1159, %1157 ], [ %1045, %1044 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #12
  %1172 = getelementptr inbounds i8, ptr %215, i64 680
  %spec.select587 = select i1 %438, ptr %20, ptr %1172
  %1173 = select i1 %or.cond582, ptr %spec.select587, ptr %20
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %1173, i64 16, i1 false), !tbaa.struct !192
  %1174 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1171)
  %1175 = extractvalue { <2 x float>, <2 x float> } %1174, 0
  %1176 = extractvalue { <2 x float>, <2 x float> } %1174, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #12
  %1177 = load ptr, ptr %4, align 8, !tbaa !5
  %1178 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1177)
  %1179 = extractvalue { <2 x float>, <2 x float> } %1178, 0
  store <2 x float> %1179, ptr %38, align 8
  %1180 = getelementptr inbounds i8, ptr %38, i64 8
  %1181 = extractvalue { <2 x float>, <2 x float> } %1178, 1
  store <2 x float> %1181, ptr %1180, align 8
  %1182 = load ptr, ptr %4, align 8, !tbaa !5
  %1183 = getelementptr inbounds i8, ptr %1182, i64 600
  store <2 x float> %1175, ptr %1183, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %1182, i64 608
  store <2 x float> %1176, ptr %.sroa.4.0..sroa_idx, align 8
  %1184 = getelementptr inbounds i8, ptr %1182, i64 1157
  %1185 = load i8, ptr %1184, align 1
  %1186 = trunc i8 %1185 to i1
  br i1 %1186, label %1187, label %1193

1187:                                             ; preds = %1170
  %1188 = extractelement <2 x float> %1175, i64 1
  %1189 = getelementptr inbounds i8, ptr %1182, i64 152
  %1190 = load float, ptr %1189, align 8, !tbaa !223
  %1191 = getelementptr inbounds i8, ptr %1182, i64 604
  %1192 = fadd float %1190, %1188
  store float %1192, ptr %1191, align 4, !tbaa !263
  br label %1193

1193:                                             ; preds = %1187, %1170
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1183, ptr noundef nonnull align 4 dereferenceable(16) %37)
  %1194 = load ptr, ptr %4, align 8
  %1195 = getelementptr inbounds i8, ptr %1194, i64 88
  %1196 = getelementptr inbounds i8, ptr %1194, i64 160
  %1197 = getelementptr inbounds i8, ptr %1194, i64 616
  %1198 = getelementptr inbounds i8, ptr %1194, i64 96
  %1199 = load <2 x float>, ptr %1195, align 8, !tbaa !155
  %1200 = load <2 x float>, ptr %1198, align 8, !tbaa !155
  %1201 = fadd <2 x float> %1199, %1200
  %1202 = load <4 x float>, ptr %1196, align 8, !tbaa !155
  %1203 = shufflevector <2 x float> %1199, <2 x float> %1201, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %1204 = fadd <4 x float> %1203, %1202
  %1205 = fsub <4 x float> %1203, %1202
  %1206 = shufflevector <4 x float> %1204, <4 x float> %1205, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %1206, ptr %1197, align 8, !tbaa !155
  %1207 = and i32 %559, 1025
  %brmerge588.not = icmp eq i32 %1207, 1
  %1208 = getelementptr inbounds i8, ptr %47, i64 3468
  %1209 = getelementptr inbounds i8, ptr %1194, i64 148
  %.in523 = select i1 %brmerge588.not, ptr %1209, ptr %1208
  %1210 = load float, ptr %.in523, align 4, !tbaa !155
  %1211 = extractelement <4 x float> %1204, i64 0
  %1212 = fadd float %1211, 5.000000e-01
  %1213 = load float, ptr %1209, align 4, !tbaa !264
  %1214 = call float @llvm.fmuladd.f32(float %1213, float 5.000000e-01, float %1212)
  %1215 = call noundef float @_ZL7ImFloorf(float noundef %1214)
  %1216 = load ptr, ptr %4, align 8, !tbaa !5
  %1217 = getelementptr inbounds i8, ptr %1216, i64 632
  store float %1215, ptr %1217, align 8, !tbaa !265
  %1218 = getelementptr inbounds i8, ptr %1216, i64 620
  %1219 = load float, ptr %1218, align 4, !tbaa !266
  %1220 = fadd float %1219, 5.000000e-01
  %1221 = call float @llvm.fmuladd.f32(float %1210, float 5.000000e-01, float %1220)
  %1222 = call noundef float @_ZL7ImFloorf(float noundef %1221)
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds i8, ptr %1223, i64 636
  store float %1222, ptr %1224, align 4, !tbaa !267
  %1225 = getelementptr inbounds i8, ptr %1223, i64 624
  %1226 = load float, ptr %1225, align 8, !tbaa !268
  %1227 = getelementptr inbounds i8, ptr %1223, i64 148
  %1228 = load float, ptr %1227, align 4, !tbaa !264
  %1229 = fneg float %1228
  %1230 = call float @llvm.fmuladd.f32(float %1229, float 5.000000e-01, float %1226)
  %1231 = call noundef float @_ZL7ImFloorf(float noundef %1230)
  %1232 = load ptr, ptr %4, align 8, !tbaa !5
  %1233 = getelementptr inbounds i8, ptr %1232, i64 640
  store float %1231, ptr %1233, align 8, !tbaa !269
  %1234 = getelementptr inbounds i8, ptr %1232, i64 628
  %1235 = load float, ptr %1234, align 4, !tbaa !270
  %1236 = getelementptr inbounds i8, ptr %1232, i64 148
  %1237 = load float, ptr %1236, align 4, !tbaa !264
  %1238 = fneg float %1237
  %1239 = call float @llvm.fmuladd.f32(float %1238, float 5.000000e-01, float %1235)
  %1240 = call noundef float @_ZL7ImFloorf(float noundef %1239)
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = getelementptr inbounds i8, ptr %1241, i64 644
  store float %1240, ptr %1242, align 4, !tbaa !271
  %1243 = getelementptr inbounds i8, ptr %1241, i64 632
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1243, ptr noundef nonnull align 4 dereferenceable(16) %37)
  %1244 = load ptr, ptr %4, align 8, !tbaa !5
  %1245 = getelementptr inbounds i8, ptr %1244, i64 96
  %1246 = load float, ptr %1245, align 8, !tbaa !210
  %1247 = fcmp ule float %1246, 0.000000e+00
  %1248 = and i32 %559, 33554432
  %.not524.not = icmp eq i32 %1248, 0
  %1249 = and i32 %559, 33554496
  %1250 = icmp ne i32 %1249, 0
  %brmerge590 = select i1 %1247, i1 true, i1 %1250
  br i1 %brmerge590, label %1253, label %1251

1251:                                             ; preds = %1193
  %1252 = fmul float %1246, 0x3FE4CCCCC0000000
  br label %1256

1253:                                             ; preds = %1193
  %1254 = load float, ptr %620, align 8, !tbaa !221
  %1255 = fmul float %1254, 1.600000e+01
  br label %1256

1256:                                             ; preds = %1253, %1251
  %.sink731 = phi float [ %1255, %1253 ], [ %1252, %1251 ]
  %1257 = call noundef float @_ZL7ImTruncf(float noundef %.sink731)
  %.sink730 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds i8, ptr %.sink730, i64 732
  store float %1257, ptr %1258, align 4, !tbaa !272
  %1259 = getelementptr inbounds i8, ptr %.sink730, i64 112
  %1260 = load float, ptr %1259, align 8, !tbaa !273
  %1261 = getelementptr inbounds i8, ptr %.sink730, i64 136
  %1262 = load float, ptr %1261, align 8, !tbaa !274
  %1263 = call float @llvm.fmuladd.f32(float %1262, float 2.000000e+00, float %1260)
  %1264 = getelementptr inbounds i8, ptr %.sink730, i64 616
  %1265 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1264)
  %1266 = fsub float %1263, %1265
  %1267 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1266)
  %1268 = load ptr, ptr %4, align 8, !tbaa !5
  %1269 = getelementptr inbounds i8, ptr %1268, i64 212
  store float %1267, ptr %1269, align 4, !tbaa !275
  %1270 = getelementptr inbounds i8, ptr %1268, i64 116
  %1271 = load float, ptr %1270, align 4, !tbaa !276
  %1272 = getelementptr inbounds i8, ptr %1268, i64 140
  %1273 = load float, ptr %1272, align 4, !tbaa !277
  %1274 = call float @llvm.fmuladd.f32(float %1273, float 2.000000e+00, float %1271)
  %1275 = getelementptr inbounds i8, ptr %1268, i64 616
  %1276 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1275)
  %1277 = fsub float %1274, %1276
  %1278 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1277)
  %1279 = load ptr, ptr %4, align 8, !tbaa !5
  %1280 = getelementptr inbounds i8, ptr %1279, i64 216
  store float %1278, ptr %1280, align 4, !tbaa !278
  %1281 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1279)
  %1282 = load ptr, ptr %4, align 8, !tbaa !5
  %1283 = getelementptr inbounds i8, ptr %1282, i64 204
  store <2 x float> %1281, ptr %1283, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1284 = load ptr, ptr %4, align 8, !tbaa !5
  %1285 = getelementptr inbounds i8, ptr %1284, i64 220
  %1286 = load i64, ptr %39, align 8
  store i64 %1286, ptr %1285, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  %1287 = getelementptr inbounds i8, ptr %1284, i64 176
  store <2 x float> zeroinitializer, ptr %1287, align 8, !tbaa !155
  %1288 = getelementptr inbounds i8, ptr %1284, i64 792
  %1289 = load ptr, ptr %1288, align 8, !tbaa !193
  %1290 = load i32, ptr %1289, align 8, !tbaa !279
  %1291 = icmp eq i32 %1290, 1
  br i1 %1291, label %1292, label %.critedge6

1292:                                             ; preds = %1256
  %1293 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1289, i32 noundef 0)
  %1294 = getelementptr inbounds i8, ptr %1293, i64 32
  %1295 = load i32, ptr %1294, align 8, !tbaa !280
  %1296 = icmp eq i32 %1295, 0
  br i1 %1296, label %1297, label %.critedge6

.critedge6:                                       ; preds = %1256, %1292
  call void @__assert_fail(ptr noundef nonnull @.str.160, ptr noundef nonnull @.str.3, i32 noundef 8060, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1297:                                             ; preds = %1292
  %1298 = load ptr, ptr %4, align 8, !tbaa !5
  %1299 = getelementptr inbounds i8, ptr %1298, i64 792
  %1300 = load ptr, ptr %1299, align 8, !tbaa !193
  %1301 = getelementptr inbounds i8, ptr %47, i64 4608
  %1302 = load ptr, ptr %1301, align 8, !tbaa !282
  %1303 = getelementptr inbounds i8, ptr %1302, i64 64
  %1304 = load ptr, ptr %1303, align 8, !tbaa !283
  %1305 = getelementptr inbounds i8, ptr %1304, i64 8
  %1306 = load i64, ptr %1305, align 8, !tbaa !284
  call void @_ZN10ImDrawList13PushTextureIDEy(ptr noundef nonnull align 8 dereferenceable(216) %1300, i64 noundef %1306)
  %1307 = getelementptr inbounds i8, ptr %37, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1307, i1 noundef zeroext false)
  %1308 = load ptr, ptr %4, align 8, !tbaa !5
  %1309 = getelementptr inbounds i8, ptr %1308, i64 1157
  %1310 = load i8, ptr %1309, align 1
  %1311 = trunc i8 %1310 to i1
  %1312 = and i8 %1310, 4
  %1313 = icmp eq i8 %1312, 0
  %.not641 = and i1 %1313, %1311
  br i1 %.not641, label %1379, label %1314

1314:                                             ; preds = %1297
  %or.cond592.not = xor i1 %or.cond582, true
  %brmerge593 = select i1 %or.cond592.not, i1 true, i1 %438
  br i1 %brmerge593, label %.thread625, label %1315

1315:                                             ; preds = %1314
  %1316 = getelementptr inbounds i8, ptr %215, i64 480
  %1317 = load i32, ptr %1316, align 8, !tbaa !242
  %1318 = icmp sgt i32 %1317, 1
  br i1 %1318, label %1319, label %.thread623

.thread623:                                       ; preds = %1315
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #12
  br label %1334

1319:                                             ; preds = %1315
  %1320 = add nsw i32 %1317, -2
  %1321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1316, i32 noundef %1320)
  %1322 = load ptr, ptr %1321, align 8, !tbaa !5
  %.not526 = icmp eq ptr %1322, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #12
  br i1 %.not526, label %1334, label %1323

1323:                                             ; preds = %1319
  %1324 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1322)
  %1325 = extractvalue { <2 x float>, <2 x float> } %1324, 0
  store <2 x float> %1325, ptr %40, align 8
  %1326 = getelementptr inbounds i8, ptr %40, i64 8
  %1327 = extractvalue { <2 x float>, <2 x float> } %1324, 1
  store <2 x float> %1327, ptr %1326, align 8
  %1328 = load ptr, ptr %4, align 8, !tbaa !5
  %1329 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1328)
  %1330 = extractvalue { <2 x float>, <2 x float> } %1329, 0
  store <2 x float> %1330, ptr %41, align 8
  %1331 = getelementptr inbounds i8, ptr %41, i64 8
  %1332 = extractvalue { <2 x float>, <2 x float> } %1329, 1
  store <2 x float> %1332, ptr %1331, align 8
  %1333 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(16) %41)
  br label %1334

1334:                                             ; preds = %.thread623, %1319, %1323
  %1335 = phi i1 [ %1333, %1323 ], [ false, %1319 ], [ false, %.thread623 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #12
  %1336 = getelementptr inbounds i8, ptr %215, i64 792
  %1337 = load ptr, ptr %1336, align 8, !tbaa !193
  %1338 = getelementptr inbounds i8, ptr %1337, i64 32
  %1339 = load i32, ptr %1338, align 8, !tbaa !288
  %1340 = load ptr, ptr %4, align 8, !tbaa !5
  %1341 = getelementptr inbounds i8, ptr %1340, i64 792
  %1342 = load ptr, ptr %1341, align 8, !tbaa !193
  %1343 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1342)
  %1344 = getelementptr inbounds i8, ptr %1343, i64 32
  %1345 = load i32, ptr %1344, align 8, !tbaa !280
  %1346 = icmp ne i32 %1345, 0
  %1347 = icmp eq i32 %1339, 0
  %or.cond594.not644.not647 = select i1 %1346, i1 true, i1 %1347
  %or.cond635.not = or i1 %1335, %or.cond594.not644.not647
  br i1 %or.cond635.not, label %.thread625, label %1348

1348:                                             ; preds = %1334
  %1349 = load ptr, ptr %1336, align 8, !tbaa !193
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds i8, ptr %1350, i64 792
  store ptr %1349, ptr %1351, align 8, !tbaa !193
  br label %.thread625

.thread625:                                       ; preds = %1334, %1314, %1348
  %.1404627 = phi i1 [ true, %1348 ], [ false, %1314 ], [ false, %1334 ]
  %1352 = getelementptr inbounds i8, ptr %47, i64 8880
  %1353 = load ptr, ptr %1352, align 8, !tbaa !289
  %.not527 = icmp eq ptr %1353, null
  br i1 %.not527, label %1354, label %1357

1354:                                             ; preds = %.thread625
  %1355 = getelementptr inbounds i8, ptr %47, i64 8408
  %1356 = load ptr, ptr %1355, align 8, !tbaa !290
  br label %1357

1357:                                             ; preds = %.thread625, %1354
  %1358 = phi ptr [ %1356, %1354 ], [ %1353, %.thread625 ]
  br i1 %.0402, label %._crit_edge690, label %1359

._crit_edge690:                                   ; preds = %1357
  %.pre691 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1373

1359:                                             ; preds = %1357
  %.not528 = icmp eq ptr %1358, null
  %.pre692 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not528, label %1373, label %1360

1360:                                             ; preds = %1359
  %1361 = getelementptr inbounds i8, ptr %.pre692, i64 1056
  %1362 = load ptr, ptr %1361, align 8, !tbaa !291
  %1363 = getelementptr inbounds i8, ptr %1358, i64 1056
  %1364 = load ptr, ptr %1363, align 8, !tbaa !291
  %1365 = icmp eq ptr %1362, %1364
  br i1 %1365, label %1373, label %1366

1366:                                             ; preds = %1360
  %1367 = getelementptr inbounds i8, ptr %.pre692, i64 1192
  %1368 = load ptr, ptr %1367, align 8, !tbaa !139
  %.not529 = icmp eq ptr %1368, null
  br i1 %.not529, label %1373, label %1369

1369:                                             ; preds = %1366
  %1370 = getelementptr inbounds i8, ptr %1358, i64 1192
  %1371 = load ptr, ptr %1370, align 8, !tbaa !139
  %1372 = icmp eq ptr %1368, %1371
  br label %1373

1373:                                             ; preds = %._crit_edge690, %1359, %1366, %1369, %1360
  %1374 = phi ptr [ %.pre691, %._crit_edge690 ], [ %.pre692, %1359 ], [ %.pre692, %1360 ], [ %.pre692, %1366 ], [ %.pre692, %1369 ]
  %1375 = phi i1 [ true, %._crit_edge690 ], [ false, %1359 ], [ true, %1360 ], [ false, %1366 ], [ %1372, %1369 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1374, ptr noundef nonnull align 4 dereferenceable(16) %38, i1 noundef zeroext %1375, i1 noundef zeroext %981, i32 noundef %988, ptr noundef nonnull %31, float noundef %995)
  %.pre693 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1404627, label %1376, label %1379

1376:                                             ; preds = %1373
  %1377 = getelementptr inbounds i8, ptr %.pre693, i64 800
  %1378 = getelementptr inbounds i8, ptr %.pre693, i64 792
  store ptr %1377, ptr %1378, align 8, !tbaa !193
  br label %1379

1379:                                             ; preds = %1373, %1376, %1297
  %1380 = phi ptr [ %.pre693, %1373 ], [ %.pre693, %1376 ], [ %1308, %1297 ]
  %1381 = and i32 %559, 8
  %.not530 = icmp eq i32 %1381, 0
  %1382 = getelementptr inbounds i8, ptr %1380, i64 128
  %1383 = load float, ptr %1382, align 8, !tbaa !226
  %1384 = fcmp une float %1383, 0.000000e+00
  br i1 %1384, label %1406, label %1385

1385:                                             ; preds = %1379
  %1386 = and i32 %559, 2056
  %1387 = icmp eq i32 %1386, 2048
  br i1 %1387, label %1388, label %1391

1388:                                             ; preds = %1385
  %1389 = getelementptr inbounds i8, ptr %1380, i64 112
  %1390 = load float, ptr %1389, align 8, !tbaa !273
  br label %1391

1391:                                             ; preds = %1385, %1388
  %1392 = phi float [ %1390, %1388 ], [ 0.000000e+00, %1385 ]
  %1393 = getelementptr inbounds i8, ptr %1380, i64 96
  %1394 = load float, ptr %1393, align 8, !tbaa !210
  %1395 = getelementptr inbounds i8, ptr %1380, i64 136
  %1396 = load float, ptr %1395, align 8, !tbaa !274
  %1397 = fneg float %1396
  %1398 = call float @llvm.fmuladd.f32(float %1397, float 2.000000e+00, float %1394)
  %1399 = getelementptr inbounds i8, ptr %1380, i64 160
  %1400 = load float, ptr %1399, align 8, !tbaa !235
  %1401 = getelementptr inbounds i8, ptr %1380, i64 168
  %1402 = load float, ptr %1401, align 8, !tbaa !292
  %1403 = fadd float %1400, %1402
  %1404 = fsub float %1398, %1403
  %1405 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1392, float noundef %1404)
  %.pre694 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1406

1406:                                             ; preds = %1379, %1391
  %1407 = phi ptr [ %.pre694, %1391 ], [ %1380, %1379 ]
  %1408 = phi float [ %1405, %1391 ], [ %1383, %1379 ]
  %1409 = getelementptr inbounds i8, ptr %1407, i64 132
  %1410 = load float, ptr %1409, align 4, !tbaa !227
  %1411 = fcmp une float %1410, 0.000000e+00
  br i1 %1411, label %1431, label %1412

1412:                                             ; preds = %1406
  br i1 %.not530, label %1413, label %1416

1413:                                             ; preds = %1412
  %1414 = getelementptr inbounds i8, ptr %1407, i64 116
  %1415 = load float, ptr %1414, align 4, !tbaa !276
  br label %1416

1416:                                             ; preds = %1412, %1413
  %1417 = phi float [ %1415, %1413 ], [ 0.000000e+00, %1412 ]
  %1418 = getelementptr inbounds i8, ptr %1407, i64 100
  %1419 = load float, ptr %1418, align 4, !tbaa !211
  %1420 = getelementptr inbounds i8, ptr %1407, i64 140
  %1421 = load float, ptr %1420, align 4, !tbaa !277
  %1422 = fneg float %1421
  %1423 = call float @llvm.fmuladd.f32(float %1422, float 2.000000e+00, float %1419)
  %1424 = getelementptr inbounds i8, ptr %1407, i64 164
  %1425 = load float, ptr %1424, align 4, !tbaa !236
  %1426 = getelementptr inbounds i8, ptr %1407, i64 172
  %1427 = load float, ptr %1426, align 4, !tbaa !256
  %1428 = fadd float %1425, %1427
  %1429 = fsub float %1423, %1428
  %1430 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1417, float noundef %1429)
  %.pre695 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1431

1431:                                             ; preds = %1406, %1416
  %1432 = phi ptr [ %.pre695, %1416 ], [ %1407, %1406 ]
  %1433 = phi float [ %1430, %1416 ], [ %1410, %1406 ]
  %1434 = getelementptr inbounds i8, ptr %1432, i64 616
  %1435 = load float, ptr %1434, align 8, !tbaa !293
  %1436 = getelementptr inbounds i8, ptr %1432, i64 204
  %1437 = load float, ptr %1436, align 4, !tbaa !294
  %1438 = fsub float %1435, %1437
  %1439 = getelementptr inbounds i8, ptr %1432, i64 136
  %1440 = load float, ptr %1439, align 8, !tbaa !274
  %1441 = getelementptr inbounds i8, ptr %1432, i64 148
  %1442 = load float, ptr %1441, align 4, !tbaa !264
  %1443 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1440, float noundef %1442)
  %1444 = fadd float %1438, %1443
  %1445 = call noundef float @_ZL7ImTruncf(float noundef %1444)
  %1446 = load ptr, ptr %4, align 8, !tbaa !5
  %1447 = getelementptr inbounds i8, ptr %1446, i64 648
  store float %1445, ptr %1447, align 8, !tbaa !295
  %1448 = getelementptr inbounds i8, ptr %1446, i64 620
  %1449 = load float, ptr %1448, align 4, !tbaa !266
  %1450 = getelementptr inbounds i8, ptr %1446, i64 208
  %1451 = load float, ptr %1450, align 4, !tbaa !296
  %1452 = fsub float %1449, %1451
  %1453 = getelementptr inbounds i8, ptr %1446, i64 140
  %1454 = load float, ptr %1453, align 4, !tbaa !277
  %1455 = getelementptr inbounds i8, ptr %1446, i64 148
  %1456 = load float, ptr %1455, align 4, !tbaa !264
  %1457 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1454, float noundef %1456)
  %1458 = fadd float %1452, %1457
  %1459 = call noundef float @_ZL7ImTruncf(float noundef %1458)
  %1460 = load ptr, ptr %4, align 8, !tbaa !5
  %1461 = getelementptr inbounds i8, ptr %1460, i64 652
  store float %1459, ptr %1461, align 4, !tbaa !297
  %1462 = getelementptr inbounds i8, ptr %1460, i64 648
  %1463 = load float, ptr %1462, align 8, !tbaa !295
  %1464 = getelementptr inbounds i8, ptr %1460, i64 656
  %1465 = insertelement <2 x float> poison, float %1408, i64 0
  %1466 = insertelement <2 x float> %1465, float %1433, i64 1
  %1467 = insertelement <2 x float> poison, float %1463, i64 0
  %1468 = insertelement <2 x float> %1467, float %1459, i64 1
  %1469 = fadd <2 x float> %1466, %1468
  store <2 x float> %1469, ptr %1464, align 8, !tbaa !155
  %1470 = getelementptr inbounds i8, ptr %1460, i64 664
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1470, ptr noundef nonnull align 8 dereferenceable(16) %1462, i64 16, i1 false), !tbaa.struct !192
  %1471 = getelementptr inbounds i8, ptr %1460, i64 88
  %1472 = getelementptr inbounds i8, ptr %1460, i64 204
  %1473 = getelementptr inbounds i8, ptr %1460, i64 136
  %1474 = getelementptr inbounds i8, ptr %1460, i64 160
  %1475 = getelementptr inbounds i8, ptr %1460, i64 696
  %1476 = load <2 x float>, ptr %1471, align 8, !tbaa !155
  %1477 = load <2 x float>, ptr %1472, align 4, !tbaa !155
  %1478 = fsub <2 x float> %1476, %1477
  %1479 = load <2 x float>, ptr %1473, align 8, !tbaa !155
  %1480 = fadd <2 x float> %1478, %1479
  %1481 = load <2 x float>, ptr %1474, align 8, !tbaa !155
  %1482 = fadd <2 x float> %1480, %1481
  store <2 x float> %1482, ptr %1475, align 8, !tbaa !155
  %1483 = getelementptr inbounds i8, ptr %1460, i64 128
  %1484 = load float, ptr %1483, align 8, !tbaa !226
  %1485 = fcmp une float %1484, 0.000000e+00
  br i1 %1485, label %1497, label %1486

1486:                                             ; preds = %1431
  %1487 = getelementptr inbounds i8, ptr %1460, i64 96
  %1488 = load float, ptr %1487, align 8, !tbaa !210
  %1489 = extractelement <2 x float> %1479, i64 0
  %1490 = fneg float %1489
  %1491 = call float @llvm.fmuladd.f32(float %1490, float 2.000000e+00, float %1488)
  %1492 = getelementptr inbounds i8, ptr %1460, i64 168
  %1493 = load float, ptr %1492, align 8, !tbaa !292
  %1494 = extractelement <2 x float> %1481, i64 0
  %1495 = fadd float %1494, %1493
  %1496 = fsub float %1491, %1495
  br label %1497

1497:                                             ; preds = %1431, %1486
  %1498 = phi float [ %1496, %1486 ], [ %1484, %1431 ]
  %1499 = extractelement <2 x float> %1482, i64 0
  %1500 = fadd float %1499, %1498
  %1501 = getelementptr inbounds i8, ptr %1460, i64 704
  store float %1500, ptr %1501, align 8, !tbaa !298
  %1502 = getelementptr inbounds i8, ptr %1460, i64 132
  %1503 = load float, ptr %1502, align 4, !tbaa !227
  %1504 = fcmp une float %1503, 0.000000e+00
  br i1 %1504, label %1516, label %1505

1505:                                             ; preds = %1497
  %1506 = getelementptr inbounds i8, ptr %1460, i64 100
  %1507 = load float, ptr %1506, align 4, !tbaa !211
  %1508 = extractelement <2 x float> %1479, i64 1
  %1509 = fneg float %1508
  %1510 = call float @llvm.fmuladd.f32(float %1509, float 2.000000e+00, float %1507)
  %1511 = getelementptr inbounds i8, ptr %1460, i64 172
  %1512 = load float, ptr %1511, align 4, !tbaa !256
  %1513 = extractelement <2 x float> %1481, i64 1
  %1514 = fadd float %1513, %1512
  %1515 = fsub float %1510, %1514
  br label %1516

1516:                                             ; preds = %1497, %1505
  %1517 = phi float [ %1515, %1505 ], [ %1503, %1497 ]
  %1518 = extractelement <2 x float> %1482, i64 1
  %1519 = fadd float %1518, %1517
  %1520 = getelementptr inbounds i8, ptr %1460, i64 708
  store float %1519, ptr %1520, align 4, !tbaa !299
  %1521 = extractelement <2 x float> %1479, i64 0
  %1522 = extractelement <2 x float> %1481, i64 0
  %1523 = fadd <2 x float> %1479, %1481
  %1524 = extractelement <2 x float> %1477, i64 0
  %1525 = fsub <2 x float> %1523, %1477
  %1526 = extractelement <2 x float> %1525, i64 0
  %1527 = getelementptr inbounds i8, ptr %1460, i64 404
  store float %1526, ptr %1527, align 4, !tbaa !300
  %1528 = getelementptr inbounds i8, ptr %1460, i64 408
  store <2 x float> zeroinitializer, ptr %1528, align 8, !tbaa !155
  %1529 = extractelement <2 x float> %1476, i64 0
  %1530 = fpext float %1529 to double
  %1531 = fpext float %1521 to double
  %1532 = fadd double %1530, %1531
  %1533 = fpext float %1524 to double
  %1534 = fsub double %1532, %1533
  %1535 = fpext float %1522 to double
  %1536 = fadd double %1534, %1535
  %1537 = fadd double %1536, 0.000000e+00
  %1538 = extractelement <2 x float> %1476, i64 1
  %1539 = fpext float %1538 to double
  %1540 = extractelement <2 x float> %1479, i64 1
  %1541 = fpext float %1540 to double
  %1542 = fadd double %1539, %1541
  %1543 = extractelement <2 x float> %1477, i64 1
  %1544 = fpext float %1543 to double
  %1545 = fsub double %1542, %1544
  %1546 = extractelement <2 x float> %1481, i64 1
  %1547 = fpext float %1546 to double
  %1548 = fadd double %1545, %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #12
  %1549 = fptrunc double %1537 to float
  %1550 = fptrunc double %1548 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef %1549, float noundef %1550)
  %1551 = load ptr, ptr %4, align 8, !tbaa !5
  %1552 = getelementptr inbounds i8, ptr %1551, i64 352
  %1553 = load i64, ptr %42, align 8
  store i64 %1553, ptr %1552, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #12
  %1554 = trunc i64 %1553 to i32
  %1555 = bitcast i32 %1554 to float
  %1556 = fpext float %1555 to double
  %1557 = fsub double %1537, %1556
  %1558 = fptrunc double %1557 to float
  %1559 = lshr i64 %1553, 32
  %1560 = trunc nuw i64 %1559 to i32
  %1561 = bitcast i32 %1560 to float
  %1562 = fpext float %1561 to double
  %1563 = fsub double %1548, %1562
  %1564 = fptrunc double %1563 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %1558, float noundef %1564)
  %1565 = load ptr, ptr %4, align 8, !tbaa !5
  %1566 = getelementptr inbounds i8, ptr %1565, i64 416
  %1567 = load i64, ptr %43, align 8
  store i64 %1567, ptr %1566, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #12
  %1568 = getelementptr inbounds i8, ptr %1565, i64 336
  %1569 = getelementptr inbounds i8, ptr %1565, i64 352
  %1570 = load i64, ptr %1569, align 8
  store i64 %1570, ptr %1568, align 8
  %1571 = getelementptr inbounds i8, ptr %1565, i64 344
  store i64 %1570, ptr %1571, align 8
  %1572 = getelementptr inbounds i8, ptr %1565, i64 360
  store i64 %1570, ptr %1572, align 8
  %1573 = getelementptr inbounds i8, ptr %1565, i64 368
  store i64 %1570, ptr %1573, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1574 = load ptr, ptr %4, align 8, !tbaa !5
  %1575 = getelementptr inbounds i8, ptr %1574, i64 384
  %1576 = load i64, ptr %44, align 8
  store i64 %1576, ptr %1575, align 8
  %1577 = getelementptr inbounds i8, ptr %1574, i64 376
  store i64 %1576, ptr %1577, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #12
  %1578 = getelementptr inbounds i8, ptr %1574, i64 392
  %1579 = getelementptr inbounds i8, ptr %1574, i64 424
  store i32 0, ptr %1579, align 8, !tbaa !170
  %1580 = getelementptr inbounds i8, ptr %1574, i64 430
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1578, i8 0, i64 10, i1 false)
  %1581 = load i16, ptr %1580, align 2, !tbaa !301
  %1582 = getelementptr inbounds i8, ptr %1574, i64 428
  store i16 %1581, ptr %1582, align 4, !tbaa !302
  store i16 0, ptr %1580, align 2, !tbaa !301
  %1583 = getelementptr inbounds i8, ptr %1574, i64 432
  store i8 1, ptr %1583, align 8, !tbaa !303
  %1584 = getelementptr inbounds i8, ptr %1574, i64 433
  store i8 0, ptr %1584, align 1, !tbaa !304
  %1585 = getelementptr inbounds i8, ptr %1574, i64 216
  %1586 = load float, ptr %1585, align 4, !tbaa !278
  %1587 = fcmp ogt float %1586, 0.000000e+00
  %1588 = getelementptr inbounds i8, ptr %1574, i64 434
  %1589 = zext i1 %1587 to i8
  store i8 %1589, ptr %1588, align 2, !tbaa !305
  %1590 = getelementptr inbounds i8, ptr %1574, i64 435
  store i8 0, ptr %1590, align 1, !tbaa !306
  %1591 = getelementptr inbounds i8, ptr %1574, i64 444
  %1592 = load float, ptr %591, align 4, !tbaa !216
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1591, float noundef %1592, i1 noundef zeroext %.0385.in)
  %1593 = load ptr, ptr %4, align 8, !tbaa !5
  %1594 = getelementptr inbounds i8, ptr %1593, i64 472
  store i32 0, ptr %1594, align 8, !tbaa !307
  %1595 = getelementptr inbounds i8, ptr %1593, i64 476
  store i32 0, ptr %1595, align 4, !tbaa !308
  %1596 = getelementptr inbounds i8, ptr %1593, i64 480
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1596, i32 noundef 0)
  %1597 = load ptr, ptr %4, align 8, !tbaa !5
  %1598 = getelementptr inbounds i8, ptr %1597, i64 736
  %1599 = getelementptr inbounds i8, ptr %1597, i64 496
  store ptr %1598, ptr %1599, align 8, !tbaa !309
  %1600 = getelementptr inbounds i8, ptr %1597, i64 504
  store ptr null, ptr %1600, align 8, !tbaa !310
  %1601 = getelementptr inbounds i8, ptr %1597, i64 516
  store i32 1, ptr %1601, align 4, !tbaa !311
  br i1 %216, label %1605, label %1602

1602:                                             ; preds = %1516
  %1603 = getelementptr inbounds i8, ptr %215, i64 516
  %1604 = load i32, ptr %1603, align 4, !tbaa !311
  br label %1605

1605:                                             ; preds = %1516, %1602
  %1606 = phi i32 [ %1604, %1602 ], [ 1, %1516 ]
  %1607 = getelementptr inbounds i8, ptr %1597, i64 520
  store i32 %1606, ptr %1607, align 8, !tbaa !312
  %1608 = getelementptr inbounds i8, ptr %1597, i64 732
  %1609 = load float, ptr %1608, align 4, !tbaa !272
  %1610 = getelementptr inbounds i8, ptr %1597, i64 556
  store float %1609, ptr %1610, align 4, !tbaa !313
  %1611 = getelementptr inbounds i8, ptr %1597, i64 560
  store float -1.000000e+00, ptr %1611, align 8, !tbaa !314
  %1612 = getelementptr inbounds i8, ptr %1597, i64 568
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1612, i32 noundef 0)
  %1613 = load ptr, ptr %4, align 8, !tbaa !5
  %1614 = getelementptr inbounds i8, ptr %1613, i64 584
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1614, i32 noundef 0)
  %1615 = and i32 %559, 134217728
  %.not531 = icmp eq i32 %1615, 0
  br i1 %.not531, label %._crit_edge696, label %1616

._crit_edge696:                                   ; preds = %1605
  %.pre697 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1621

1616:                                             ; preds = %1605
  %1617 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 57)
  %1618 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %1617)
  %1619 = load ptr, ptr %4, align 8, !tbaa !5
  %1620 = getelementptr inbounds i8, ptr %1619, i64 524
  store i32 %1618, ptr %1620, align 4, !tbaa !315
  br label %1621

1621:                                             ; preds = %._crit_edge696, %1616
  %1622 = phi ptr [ %.pre697, %._crit_edge696 ], [ %1619, %1616 ]
  %1623 = getelementptr inbounds i8, ptr %1622, i64 282
  %1624 = load i8, ptr %1623, align 2, !tbaa !237
  %1625 = icmp sgt i8 %1624, 0
  br i1 %1625, label %1626, label %1628

1626:                                             ; preds = %1621
  %1627 = add nsw i8 %1624, -1
  store i8 %1627, ptr %1623, align 2, !tbaa !237
  br label %1628

1628:                                             ; preds = %1626, %1621
  %1629 = getelementptr inbounds i8, ptr %1622, i64 283
  %1630 = load i8, ptr %1629, align 1, !tbaa !238
  %1631 = icmp sgt i8 %1630, 0
  br i1 %1631, label %1632, label %1634

1632:                                             ; preds = %1628
  %1633 = add nsw i8 %1630, -1
  store i8 %1633, ptr %1629, align 1, !tbaa !238
  br label %1634

1634:                                             ; preds = %1632, %1628
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(160) %150)
  br i1 %.0402, label %1635, label %.critedge597

1635:                                             ; preds = %1634
  %1636 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %1636, i32 noundef 2)
  %1637 = load ptr, ptr %4, align 8, !tbaa !5
  %1638 = getelementptr inbounds i8, ptr %47, i64 8408
  %1639 = load ptr, ptr %1638, align 8, !tbaa !290
  %1640 = icmp eq ptr %1637, %1639
  br i1 %1640, label %1641, label %.critedge597

1641:                                             ; preds = %1635
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1637, i1 noundef zeroext false)
  br label %.critedge597

.critedge597:                                     ; preds = %1634, %1641, %1635
  br i1 %443, label %1642, label %1661

1642:                                             ; preds = %.critedge597
  %1643 = load ptr, ptr %4, align 8, !tbaa !5
  %1644 = getelementptr inbounds i8, ptr %1643, i64 64
  %1645 = load ptr, ptr %1644, align 8, !tbaa !196
  %1646 = getelementptr inbounds i8, ptr %1645, i64 91
  %1647 = load i8, ptr %1646, align 1, !tbaa !316, !range !99, !noundef !100
  %1648 = trunc nuw i8 %1647 to i1
  br i1 %1648, label %1649, label %1661

1649:                                             ; preds = %1642
  %1650 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %.not532 = icmp eq ptr %1645, %1650
  br i1 %.not532, label %1661, label %1651

1651:                                             ; preds = %1649
  %1652 = getelementptr inbounds i8, ptr %47, i64 10564
  %1653 = load i32, ptr %1652, align 4, !tbaa !317
  %1654 = and i32 %1653, 2048
  %.not533 = icmp eq i32 %1654, 0
  br i1 %.not533, label %1659, label %1655

1655:                                             ; preds = %1651
  %1656 = load ptr, ptr %4, align 8, !tbaa !5
  %1657 = getelementptr inbounds i8, ptr %1656, i64 8
  %1658 = load ptr, ptr %1657, align 8, !tbaa !204
  call void (ptr, ...) @_ZN5ImGui8DebugLogEPKcz(ptr noundef nonnull @.str.161, ptr noundef %1658)
  br label %1659

1659:                                             ; preds = %1655, %1651
  store i8 0, ptr %1, align 1, !tbaa !185
  %1660 = getelementptr inbounds i8, ptr %47, i64 8912
  store i8 0, ptr %1660, align 8, !tbaa !318
  br label %1661

1661:                                             ; preds = %1659, %1649, %1642, %.critedge597
  %1662 = getelementptr inbounds i8, ptr %47, i64 111
  %1663 = load i8, ptr %1662, align 1, !tbaa !319, !range !99, !noundef !100
  %1664 = trunc nuw i8 %1663 to i1
  br i1 %1664, label %1665, label %1680

1665:                                             ; preds = %1661
  %1666 = getelementptr inbounds i8, ptr %47, i64 8408
  %1667 = load ptr, ptr %1666, align 8, !tbaa !290
  %.not534 = icmp eq ptr %1667, null
  br i1 %.not534, label %1680, label %1668

1668:                                             ; preds = %1665
  %1669 = getelementptr inbounds i8, ptr %1667, i64 1032
  %1670 = load ptr, ptr %1669, align 8, !tbaa !162
  %1671 = load ptr, ptr %4, align 8, !tbaa !5
  %1672 = icmp eq ptr %1670, %1671
  br i1 %1672, label %1673, label %1680

1673:                                             ; preds = %1668
  %1674 = getelementptr inbounds i8, ptr %47, i64 5476
  %1675 = load i32, ptr %1674, align 4, !tbaa !231
  %1676 = icmp eq i32 %1675, 0
  br i1 %1676, label %1677, label %1680

1677:                                             ; preds = %1673
  %1678 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef 4644, i32 noundef 0)
  br i1 %1678, label %1679, label %1680

1679:                                             ; preds = %1677
  call void @_ZN5ImGui14LogToClipboardEi(i32 noundef 0)
  br label %1680

1680:                                             ; preds = %1665, %1668, %1673, %1677, %1679, %1661
  br i1 %.not489, label %1681, label %.critedge599

1681:                                             ; preds = %1680
  %1682 = load ptr, ptr %4, align 8, !tbaa !5
  %1683 = getelementptr inbounds i8, ptr %1682, i64 1157
  %1684 = load i8, ptr %1683, align 1
  %1685 = trunc i8 %1684 to i1
  br i1 %1685, label %1697, label %1686

1686:                                             ; preds = %1681
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #12
  %1687 = load float, ptr %38, align 8, !tbaa !320
  %1688 = getelementptr inbounds i8, ptr %1682, i64 148
  %1689 = load float, ptr %1688, align 4, !tbaa !264
  %1690 = fadd float %1687, %1689
  %1691 = getelementptr inbounds i8, ptr %38, i64 4
  %1692 = load float, ptr %1691, align 4, !tbaa !321
  %1693 = load float, ptr %1180, align 8, !tbaa !322
  %1694 = fsub float %1693, %1689
  %1695 = getelementptr inbounds i8, ptr %38, i64 12
  %1696 = load float, ptr %1695, align 4, !tbaa !323
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %45, float noundef %1690, float noundef %1692, float noundef %1694, float noundef %1696)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef nonnull %1682, ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #12
  br label %.critedge599

1697:                                             ; preds = %1681
  %1698 = getelementptr inbounds i8, ptr %1682, i64 8
  %1699 = load ptr, ptr %1698, align 8, !tbaa !204
  %1700 = call noundef ptr @_ZN5ImGui19FindRenderedTextEndEPKcS1_(ptr noundef %1699, ptr noundef null)
  %1701 = load ptr, ptr %4, align 8, !tbaa !5
  %1702 = getelementptr inbounds i8, ptr %1701, i64 8
  %1703 = load ptr, ptr %1702, align 8, !tbaa !204
  %1704 = ptrtoint ptr %1700 to i64
  %1705 = ptrtoint ptr %1703 to i64
  %1706 = sub i64 %1704, %1705
  %1707 = trunc i64 %1706 to i32
  call void (ptr, ...) @_ZN5ImGui7LogTextEPKcz(ptr noundef nonnull @.str.162, i32 noundef %1707, ptr noundef %1703)
  br label %.critedge599

.critedge599:                                     ; preds = %1680, %1697, %1686
  %1708 = load ptr, ptr %4, align 8, !tbaa !5
  %1709 = getelementptr inbounds i8, ptr %1708, i64 714
  store i16 0, ptr %1709, align 2, !tbaa !324
  %1710 = getelementptr inbounds i8, ptr %1708, i64 712
  store i16 0, ptr %1710, align 8, !tbaa !325
  br i1 %.not524.not, label %1713, label %1711

1711:                                             ; preds = %.critedge599
  %1712 = getelementptr inbounds i8, ptr %47, i64 9968
  store ptr %1708, ptr %1712, align 8, !tbaa !326
  br label %1713

1713:                                             ; preds = %1711, %.critedge599
  %1714 = load i32, ptr %546, align 8, !tbaa !212
  %1715 = and i32 %1714, 128
  %.not536 = icmp eq i32 %1715, 0
  br i1 %.not536, label %1748, label %1716

1716:                                             ; preds = %1713
  %1717 = getelementptr inbounds i8, ptr %47, i64 5392
  %1718 = load ptr, ptr %1717, align 8, !tbaa !248
  %1719 = icmp eq ptr %1718, %1708
  br i1 %1719, label %1720, label %1728

1720:                                             ; preds = %1716
  %1721 = getelementptr inbounds i8, ptr %1708, i64 1048
  %1722 = load ptr, ptr %1721, align 8, !tbaa !249
  %1723 = getelementptr inbounds i8, ptr %1722, i64 20
  %1724 = load i32, ptr %1723, align 4, !tbaa !129
  %1725 = and i32 %1724, 524288
  %1726 = icmp eq i32 %1725, 0
  br i1 %1726, label %1727, label %1728

1727:                                             ; preds = %1720
  call void @_ZN5ImGui27BeginDockableDragDropSourceEP11ImGuiWindow(ptr noundef nonnull %1708)
  %.pre700.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1728

1728:                                             ; preds = %1727, %1720, %1716
  %.pre700 = phi ptr [ %.pre700.pre, %1727 ], [ %1708, %1720 ], [ %1708, %1716 ]
  %1729 = getelementptr inbounds i8, ptr %47, i64 8940
  %1730 = load i8, ptr %1729, align 4, !tbaa !327, !range !99, !noundef !100
  %1731 = trunc nuw i8 %1730 to i1
  %1732 = and i32 %559, 524288
  %.not537 = icmp eq i32 %1732, 0
  %or.cond600 = select i1 %1731, i1 %.not537, i1 false
  br i1 %or.cond600, label %1733, label %1748

1733:                                             ; preds = %1728
  %1734 = load ptr, ptr %1717, align 8, !tbaa !248
  %1735 = icmp eq ptr %1734, null
  br i1 %1735, label %1739, label %1736

1736:                                             ; preds = %1733
  %1737 = getelementptr inbounds i8, ptr %1734, i64 1048
  %1738 = load ptr, ptr %1737, align 8, !tbaa !249
  %.not538 = icmp eq ptr %1738, %.pre700
  br i1 %.not538, label %1748, label %1739

1739:                                             ; preds = %1736, %1733
  %1740 = getelementptr inbounds i8, ptr %.pre700, i64 1048
  %1741 = load ptr, ptr %1740, align 8, !tbaa !249
  %1742 = icmp eq ptr %.pre700, %1741
  br i1 %1742, label %1743, label %1748

1743:                                             ; preds = %1739
  %1744 = getelementptr inbounds i8, ptr %.pre700, i64 20
  %1745 = load i32, ptr %1744, align 4, !tbaa !129
  %1746 = and i32 %1745, 8388608
  %.not539 = icmp eq i32 %1746, 0
  br i1 %.not539, label %1747, label %1748

1747:                                             ; preds = %1743
  call void @_ZN5ImGui27BeginDockableDragDropTargetEP11ImGuiWindow(ptr noundef nonnull %.pre700)
  %.pre699 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1748

1748:                                             ; preds = %1728, %1739, %1743, %1747, %1736, %1713
  %1749 = phi ptr [ %.pre700, %1728 ], [ %.pre700, %1739 ], [ %.pre700, %1743 ], [ %.pre699, %1747 ], [ %.pre700, %1736 ], [ %1708, %1713 ]
  %1750 = getelementptr inbounds i8, ptr %1749, i64 528
  store i32 0, ptr %1750, align 8, !tbaa !328
  %1751 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef nonnull align 4 dereferenceable(8) %1180, i1 noundef zeroext false)
  %1752 = zext i1 %1751 to i32
  %1753 = load ptr, ptr %4, align 8, !tbaa !5
  %1754 = getelementptr inbounds i8, ptr %1753, i64 528
  %1755 = load i32, ptr %1754, align 8, !tbaa !328
  %1756 = or i32 %1755, %1752
  store i32 %1756, ptr %1754, align 8, !tbaa !328
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %1753, ptr noundef nonnull align 4 dereferenceable(16) %38)
  %1757 = getelementptr inbounds i8, ptr %47, i64 7820
  %1758 = load i32, ptr %1757, align 4, !tbaa !329
  %.not540 = icmp eq i32 %1758, 0
  br i1 %.not540, label %1769, label %1759

1759:                                             ; preds = %1748
  %1760 = load ptr, ptr %4, align 8, !tbaa !5
  %1761 = getelementptr inbounds i8, ptr %1760, i64 16
  %1762 = load i32, ptr %1761, align 8, !tbaa !104
  %1763 = icmp eq i32 %1762, %1758
  br i1 %1763, label %1768, label %1764

1764:                                             ; preds = %1759
  %1765 = getelementptr inbounds i8, ptr %1760, i64 188
  %1766 = load i32, ptr %1765, align 4, !tbaa !330
  %1767 = icmp eq i32 %1766, %1758
  br i1 %1767, label %1768, label %1769

1768:                                             ; preds = %1764, %1759
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1769

1769:                                             ; preds = %1768, %1764, %1748
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br label %1782

._crit_edge702:                                   ; preds = %433, %434
  %1770 = trunc nuw i8 %.pre704 to i1
  br i1 %1770, label %1771, label %1772

1771:                                             ; preds = %._crit_edge702
  call void @_ZL29SetWindowActiveForSkipRefreshP11ImGuiWindow(ptr noundef nonnull %.pre701)
  %.pre705 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1772

1772:                                             ; preds = %1771, %._crit_edge702
  %1773 = phi ptr [ %.pre705, %1771 ], [ %.pre701, %._crit_edge702 ]
  %1774 = getelementptr inbounds i8, ptr %1773, i64 64
  %1775 = load ptr, ptr %1774, align 8, !tbaa !196
  call void @_ZN5ImGui18SetCurrentViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %1773, ptr noundef %1775)
  %1776 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1776)
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(160) %150)
  %1777 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #12
  %1778 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1212) %1777)
  %1779 = extractvalue { <2 x float>, <2 x float> } %1778, 0
  store <2 x float> %1779, ptr %46, align 8
  %1780 = getelementptr inbounds i8, ptr %46, i64 8
  %1781 = extractvalue { <2 x float>, <2 x float> } %1778, 1
  store <2 x float> %1781, ptr %1780, align 8
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef nonnull %1777, ptr noundef nonnull align 4 dereferenceable(16) %46)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #12
  br label %1782

1782:                                             ; preds = %1772, %1769
  %.4 = phi i32 [ %.3, %1772 ], [ %559, %1769 ]
  %1783 = and i32 %.4, 8388608
  %.not541 = icmp eq i32 %1783, 0
  %.pre707 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not541, label %1784, label %1791

1784:                                             ; preds = %1782
  %1785 = getelementptr inbounds i8, ptr %.pre707, i64 263
  %1786 = load i8, ptr %1785, align 1, !tbaa !188, !range !99, !noundef !100
  %1787 = trunc nuw i8 %1786 to i1
  br i1 %1787, label %1791, label %1788

1788:                                             ; preds = %1784
  %1789 = getelementptr inbounds i8, ptr %.pre707, i64 632
  %1790 = getelementptr inbounds i8, ptr %.pre707, i64 640
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1789, ptr noundef nonnull align 4 dereferenceable(8) %1790, i1 noundef zeroext true)
  %.pre706 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1791

1791:                                             ; preds = %1788, %1784, %1782
  %1792 = phi ptr [ %.pre706, %1788 ], [ %.pre707, %1784 ], [ %.pre707, %1782 ]
  %1793 = getelementptr inbounds i8, ptr %1792, i64 259
  store i8 0, ptr %1793, align 1, !tbaa !331
  %1794 = getelementptr inbounds i8, ptr %1792, i64 272
  %1795 = load i16, ptr %1794, align 8, !tbaa !332
  %1796 = add i16 %1795, 1
  store i16 %1796, ptr %1794, align 8, !tbaa !332
  br i1 %.not441, label %.critedge610, label %1797

1797:                                             ; preds = %1791
  %1798 = getelementptr inbounds i8, ptr %1792, i64 263
  %1799 = load i8, ptr %1798, align 1, !tbaa !188, !range !99, !noundef !100
  %1800 = trunc nuw i8 %1799 to i1
  br i1 %1800, label %1931, label %1801

1801:                                             ; preds = %1797
  %1802 = getelementptr inbounds i8, ptr %1792, i64 1157
  %1803 = load i8, ptr %1802, align 1
  %1804 = trunc i8 %1803 to i1
  %1805 = and i8 %1803, 4
  %.not542 = icmp eq i8 %1805, 0
  %or.cond601 = and i1 %.not542, %1804
  br i1 %or.cond601, label %1806, label %1815

1806:                                             ; preds = %1801
  %1807 = getelementptr inbounds i8, ptr %1792, i64 724
  %1808 = load i32, ptr %1807, align 4, !tbaa !333
  %1809 = load i32, ptr %59, align 8, !tbaa !102
  %1810 = icmp eq i32 %1808, %1809
  br i1 %1810, label %1811, label %1813

1811:                                             ; preds = %1806
  %1812 = getelementptr inbounds i8, ptr %1792, i64 293
  store i8 1, ptr %1812, align 1, !tbaa !189
  br label %1815

1813:                                             ; preds = %1806
  %1814 = getelementptr inbounds i8, ptr %1792, i64 292
  store i8 1, ptr %1814, align 4, !tbaa !208
  br label %1815

1815:                                             ; preds = %1811, %1813, %1801
  %1816 = and i32 %.4, 285212672
  %or.cond602 = icmp eq i32 %1816, 16777216
  br i1 %or.cond602, label %1817, label %.critedge605

1817:                                             ; preds = %1815
  %1818 = and i32 %.4, 1
  %.not545 = icmp ne i32 %1818, 0
  %brmerge = or i1 %.not545, %1804
  br i1 %brmerge, label %.critedge8, label %1819

1819:                                             ; preds = %1817
  call void @__assert_fail(ptr noundef nonnull @.str.163, ptr noundef nonnull @.str.3, i32 noundef 8283, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

.critedge8:                                       ; preds = %1817
  %1820 = getelementptr inbounds i8, ptr %1792, i64 28
  %1821 = load i32, ptr %1820, align 4, !tbaa !133
  %1822 = and i32 %1821, 256
  %.not546 = icmp eq i32 %1822, 0
  br i1 %.not546, label %1836, label %1823

1823:                                             ; preds = %.critedge8
  %1824 = getelementptr inbounds i8, ptr %47, i64 8489
  %1825 = load i8, ptr %1824, align 1, !tbaa !334, !range !99, !noundef !100
  %1826 = trunc nuw i8 %1825 to i1
  br i1 %1826, label %1827, label %1836

1827:                                             ; preds = %1823
  %1828 = getelementptr inbounds i8, ptr %47, i64 8408
  %1829 = load ptr, ptr %1828, align 8, !tbaa !290
  %.not547 = icmp eq ptr %1829, null
  br i1 %.not547, label %1836, label %1830

1830:                                             ; preds = %1827
  %1831 = getelementptr inbounds i8, ptr %1829, i64 1064
  %1832 = load ptr, ptr %1831, align 8, !tbaa !335
  %1833 = getelementptr inbounds i8, ptr %1792, i64 1064
  %1834 = load ptr, ptr %1833, align 8, !tbaa !335
  %1835 = icmp eq ptr %1832, %1834
  br label %1836

1836:                                             ; preds = %1823, %1827, %1830, %.critedge8
  %1837 = phi i1 [ false, %.critedge8 ], [ false, %1827 ], [ false, %1823 ], [ %1835, %1830 ]
  %1838 = getelementptr inbounds i8, ptr %47, i64 10416
  %1839 = load i8, ptr %1838, align 8, !tbaa !336, !range !99, !noundef !100
  %1840 = trunc nuw i8 %1839 to i1
  %brmerge603 = select i1 %1840, i1 true, i1 %1837
  br i1 %brmerge603, label %1865, label %1841

1841:                                             ; preds = %1836
  %1842 = getelementptr inbounds i8, ptr %1792, i64 600
  %1843 = load float, ptr %1842, align 8, !tbaa !337
  %1844 = getelementptr inbounds i8, ptr %1792, i64 608
  %1845 = load float, ptr %1844, align 8, !tbaa !338
  %1846 = fcmp ult float %1843, %1845
  br i1 %1846, label %1847, label %1853

1847:                                             ; preds = %1841
  %1848 = getelementptr inbounds i8, ptr %1792, i64 604
  %1849 = load float, ptr %1848, align 4, !tbaa !263
  %1850 = getelementptr inbounds i8, ptr %1792, i64 612
  %1851 = load float, ptr %1850, align 4, !tbaa !339
  %1852 = fcmp ult float %1849, %1851
  br i1 %1852, label %1865, label %1853

1853:                                             ; preds = %1847, %1841
  %1854 = getelementptr inbounds i8, ptr %1792, i64 282
  %1855 = load i8, ptr %1854, align 2, !tbaa !237
  %1856 = icmp sgt i8 %1855, 0
  br i1 %1856, label %1861, label %1857

1857:                                             ; preds = %1853
  %1858 = getelementptr inbounds i8, ptr %1792, i64 283
  %1859 = load i8, ptr %1858, align 1, !tbaa !238
  %1860 = icmp sgt i8 %1859, 0
  br i1 %1860, label %1861, label %1863

1861:                                             ; preds = %1857, %1853
  %1862 = getelementptr inbounds i8, ptr %1792, i64 293
  store i8 1, ptr %1862, align 1, !tbaa !189
  br label %1865

1863:                                             ; preds = %1857
  %1864 = getelementptr inbounds i8, ptr %1792, i64 292
  store i8 1, ptr %1864, align 4, !tbaa !208
  br label %1865

1865:                                             ; preds = %1836, %1847, %1863, %1861
  br i1 %216, label %.critedge605, label %1866

1866:                                             ; preds = %1865
  %1867 = getelementptr inbounds i8, ptr %215, i64 260
  %1868 = load i8, ptr %1867, align 4, !tbaa !234, !range !99, !noundef !100
  %1869 = trunc nuw i8 %1868 to i1
  br i1 %1869, label %1874, label %1870

1870:                                             ; preds = %1866
  %1871 = getelementptr inbounds i8, ptr %215, i64 292
  %1872 = load i8, ptr %1871, align 4, !tbaa !208
  %1873 = icmp sgt i8 %1872, 0
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1870, %1866
  %1875 = getelementptr inbounds i8, ptr %1792, i64 292
  store i8 1, ptr %1875, align 4, !tbaa !208
  br label %1876

1876:                                             ; preds = %1870, %1874
  %1877 = getelementptr inbounds i8, ptr %215, i64 293
  %1878 = load i8, ptr %1877, align 1, !tbaa !189
  %1879 = icmp sgt i8 %1878, 0
  br i1 %1879, label %1880, label %.critedge605

1880:                                             ; preds = %1876
  %1881 = getelementptr inbounds i8, ptr %1792, i64 293
  store i8 1, ptr %1881, align 1, !tbaa !189
  br label %.critedge605

.critedge605:                                     ; preds = %1876, %1880, %1865, %1815
  %1882 = load float, ptr %48, align 4, !tbaa !340
  %1883 = fcmp ugt float %1882, 0.000000e+00
  %.phi.trans.insert708 = getelementptr inbounds i8, ptr %1792, i64 292
  br i1 %1883, label %1884, label %.thread724

.thread724:                                       ; preds = %.critedge605
  store i8 1, ptr %.phi.trans.insert708, align 4, !tbaa !208
  br label %.thread628

1884:                                             ; preds = %.critedge605
  %.pre709 = load i8, ptr %.phi.trans.insert708, align 4, !tbaa !208
  %1885 = icmp sgt i8 %.pre709, 0
  br i1 %1885, label %.thread628, label %1886

1886:                                             ; preds = %1884
  %1887 = getelementptr inbounds i8, ptr %1792, i64 293
  %1888 = load i8, ptr %1887, align 1, !tbaa !189
  %1889 = icmp sgt i8 %1888, 0
  br i1 %1889, label %.thread628, label %1890

1890:                                             ; preds = %1886
  %1891 = getelementptr inbounds i8, ptr %1792, i64 294
  %1892 = load i8, ptr %1891, align 2, !tbaa !209
  %1893 = icmp sgt i8 %1892, 0
  %1894 = zext i1 %1893 to i8
  br label %.thread628

.thread628:                                       ; preds = %.thread724, %1884, %1890, %1886
  %.not648 = phi i1 [ false, %1886 ], [ true, %1890 ], [ false, %1884 ], [ false, %.thread724 ]
  %1895 = phi i8 [ 1, %1886 ], [ %1894, %1890 ], [ 1, %1884 ], [ 1, %.thread724 ]
  %1896 = getelementptr inbounds i8, ptr %1792, i64 265
  store i8 %1895, ptr %1896, align 1, !tbaa !341
  %1897 = getelementptr inbounds i8, ptr %1792, i64 295
  %1898 = load i8, ptr %1897, align 1, !tbaa !342
  %1899 = icmp sgt i8 %1898, 0
  br i1 %1899, label %1900, label %1905

1900:                                             ; preds = %.thread628
  %1901 = add nsw i8 %1898, -1
  store i8 %1901, ptr %1897, align 1, !tbaa !342
  %1902 = getelementptr inbounds i8, ptr %1792, i64 20
  %1903 = load i32, ptr %1902, align 4, !tbaa !129
  %1904 = or i32 %1903, 197120
  store i32 %1904, ptr %1902, align 4, !tbaa !129
  br label %1905

1905:                                             ; preds = %1900, %.thread628
  %1906 = getelementptr inbounds i8, ptr %1792, i64 260
  %1907 = load i8, ptr %1906, align 4, !tbaa !234, !range !99, !noundef !100
  %1908 = trunc nuw i8 %1907 to i1
  br i1 %1908, label %1913, label %1909

1909:                                             ; preds = %1905
  %1910 = getelementptr inbounds i8, ptr %1792, i64 257
  %1911 = load i8, ptr %1910, align 1, !tbaa !190, !range !99, !noundef !100
  %1912 = trunc nuw i8 %1911 to i1
  %brmerge607.not = and i1 %.not648, %1912
  br i1 %brmerge607.not, label %.thread630, label %1913

1913:                                             ; preds = %1909, %1905
  %1914 = getelementptr inbounds i8, ptr %1792, i64 282
  %1915 = load i8, ptr %1914, align 2, !tbaa !237
  %1916 = icmp slt i8 %1915, 1
  br i1 %1916, label %1917, label %.thread630

1917:                                             ; preds = %1913
  %1918 = getelementptr inbounds i8, ptr %1792, i64 283
  %1919 = load i8, ptr %1918, align 1, !tbaa !238
  %1920 = icmp slt i8 %1919, 1
  br i1 %1920, label %1922, label %.thread630

.thread630:                                       ; preds = %1917, %1913, %1909
  %1921 = getelementptr inbounds i8, ptr %1792, i64 262
  store i8 0, ptr %1921, align 2, !tbaa !343
  br label %.critedge610

1922:                                             ; preds = %1917
  %1923 = getelementptr inbounds i8, ptr %1792, i64 293
  %1924 = load i8, ptr %1923, align 1, !tbaa !189
  %1925 = icmp slt i8 %1924, 1
  %spec.select608 = zext i1 %1925 to i8
  %1926 = getelementptr inbounds i8, ptr %1792, i64 262
  store i8 %spec.select608, ptr %1926, align 2, !tbaa !343
  br i1 %1925, label %1927, label %.critedge610

1927:                                             ; preds = %1922
  %1928 = getelementptr inbounds i8, ptr %1792, i64 428
  %1929 = load i16, ptr %1928, align 4, !tbaa !302
  %1930 = getelementptr inbounds i8, ptr %1792, i64 430
  store i16 %1929, ptr %1930, align 2, !tbaa !301
  br label %.critedge610

1931:                                             ; preds = %1797
  %1932 = getelementptr inbounds i8, ptr %1792, i64 262
  store i8 1, ptr %1932, align 2, !tbaa !343
  br label %.critedge610

.critedge610:                                     ; preds = %.thread630, %1922, %1927, %1791, %1931
  %1933 = getelementptr inbounds i8, ptr %1792, i64 266
  %1934 = load i8, ptr %1933, align 2, !tbaa !122, !range !99, !noundef !100
  %1935 = trunc nuw i8 %1934 to i1
  br i1 %1935, label %1962, label %1936

1936:                                             ; preds = %.critedge610
  %1937 = getelementptr inbounds i8, ptr %47, i64 147
  %1938 = load i8, ptr %1937, align 1, !tbaa !344, !range !99, !noundef !100
  %1939 = trunc nuw i8 %1938 to i1
  %brmerge613.demorgan = and i1 %64, %1939
  br i1 %brmerge613.demorgan, label %1950, label %1940

1940:                                             ; preds = %1936
  %1941 = getelementptr inbounds i8, ptr %47, i64 148
  %1942 = load i8, ptr %1941, align 4, !tbaa !345, !range !99, !noundef !100
  %1943 = trunc nuw i8 %1942 to i1
  br i1 %1943, label %1944, label %1962

1944:                                             ; preds = %1940
  %1945 = getelementptr inbounds i8, ptr %47, i64 10624
  %1946 = load i8, ptr %1945, align 8, !tbaa !346
  %1947 = sext i8 %1946 to i32
  %1948 = load i32, ptr %82, align 8, !tbaa !120
  %1949 = icmp eq i32 %1948, %1947
  br i1 %1949, label %1950, label %1962

1950:                                             ; preds = %1936, %1944
  %1951 = getelementptr inbounds i8, ptr %1792, i64 282
  %1952 = load i8, ptr %1951, align 2, !tbaa !237
  %1953 = icmp sgt i8 %1952, 0
  br i1 %1953, label %1954, label %1956

1954:                                             ; preds = %1950
  %1955 = add nuw i8 %1952, 1
  store i8 %1955, ptr %1951, align 2, !tbaa !237
  br label %1956

1956:                                             ; preds = %1954, %1950
  %1957 = getelementptr inbounds i8, ptr %1792, i64 283
  %1958 = load i8, ptr %1957, align 1, !tbaa !238
  %1959 = icmp sgt i8 %1958, 0
  br i1 %1959, label %1960, label %1967

1960:                                             ; preds = %1956
  %1961 = add nuw i8 %1958, 1
  store i8 %1961, ptr %1957, align 1, !tbaa !238
  br label %1967

1962:                                             ; preds = %1940, %1944, %.critedge610
  %1963 = getelementptr inbounds i8, ptr %1792, i64 262
  %1964 = load i8, ptr %1963, align 2, !tbaa !343, !range !99, !noundef !100
  %1965 = trunc nuw i8 %1964 to i1
  %1966 = xor i1 %1965, true
  br label %1967

1967:                                             ; preds = %1956, %1960, %1962
  %.0383 = phi i1 [ %1966, %1962 ], [ false, %1960 ], [ false, %1956 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  ret i1 %.0383
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 @_ZN5ImGuiL28UpdateWindowInFocusOrderListEP11ImGuiWindowbi(ptr noundef, i1 noundef zeroext, i32 noundef) local_unnamed_addr #7

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

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

; 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(116) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #13

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare 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 #7

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

; Function Attrs: mustprogress uwtable
declare dso_local { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(328)) local_unnamed_addr #7 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 #7

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui8ShortcutEii(i32 noundef, i32 noundef) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 5196}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 3096, !23, i64 3392, !14, i64 4596, !14, i64 4600, !6, i64 4608, !16, i64 4616, !16, i64 4620, !16, i64 4624, !16, i64 4628, !25, i64 4632, !28, i64 5168, !14, i64 5176, !14, i64 5180, !14, i64 5184, !14, i64 5188, !14, i64 5192, !12, i64 5196, !12, i64 5197, !12, i64 5198, !12, i64 5199, !6, i64 5200, !7, i64 5208, !29, i64 5224, !29, i64 5240, !17, i64 5256, !14, i64 5260, !30, i64 5264, !30, i64 5280, !30, i64 5296, !31, i64 5312, !32, i64 5328, !14, i64 5344, !16, i64 5348, !14, i64 5352, !6, i64 5360, !6, i64 5368, !6, i64 5376, !6, i64 5384, !6, i64 5392, !6, i64 5400, !15, i64 5408, !14, i64 5416, !14, i64 5420, !16, i64 5424, !15, i64 5428, !15, i64 5436, !14, i64 5444, !14, i64 5448, !14, i64 5452, !14, i64 5456, !14, i64 5460, !16, i64 5464, !16, i64 5468, !12, i64 5472, !12, i64 5473, !12, i64 5474, !14, i64 5476, !14, i64 5480, !16, i64 5484, !12, i64 5488, !12, i64 5489, !12, i64 5490, !12, i64 5491, !12, i64 5492, !12, i64 5493, !12, i64 5494, !14, i64 5495, !15, i64 5496, !6, i64 5504, !34, i64 5512, !14, i64 5516, !35, i64 5520, !36, i64 5532, !14, i64 5540, !16, i64 5544, !28, i64 5552, !28, i64 5560, !28, i64 5568, !37, i64 5576, !7, i64 5596, !38, i64 7456, !14, i64 7800, !12, i64 7804, !14, i64 7808, !14, i64 7812, !14, i64 7816, !14, i64 7820, !40, i64 7824, !42, i64 7880, !44, i64 7960, !12, i64 8120, !14, i64 8124, !46, i64 8128, !47, i64 8144, !48, i64 8160, !49, i64 8176, !50, i64 8192, !51, i64 8208, !52, i64 8224, !52, i64 8240, !53, i64 8256, !54, i64 8272, !6, i64 8288, !6, i64 8296, !6, i64 8304, !14, i64 8312, !55, i64 8320, !43, i64 8368, !14, i64 8384, !14, i64 8388, !14, i64 8392, !12, i64 8396, !12, i64 8397, !12, i64 8398, !12, i64 8399, !14, i64 8400, !6, i64 8408, !14, i64 8416, !56, i64 8420, !14, i64 8424, !14, i64 8428, !14, i64 8432, !14, i64 8436, !49, i64 8440, !14, i64 8456, !16, i64 8460, !14, i64 8464, !14, i64 8468, !34, i64 8472, !41, i64 8480, !7, i64 8488, !12, i64 8489, !12, i64 8490, !12, i64 8491, !57, i64 8496, !12, i64 8552, !12, i64 8553, !12, i64 8554, !14, i64 8556, !14, i64 8560, !14, i64 8564, !24, i64 8568, !24, i64 8572, !24, i64 8576, !43, i64 8580, !43, i64 8596, !14, i64 8612, !14, i64 8616, !14, i64 8620, !57, i64 8624, !57, i64 8680, !57, i64 8736, !57, i64 8792, !14, i64 8848, !14, i64 8852, !14, i64 8856, !14, i64 8860, !12, i64 8864, !12, i64 8865, !14, i64 8868, !14, i64 8872, !6, i64 8880, !6, i64 8888, !6, i64 8896, !16, i64 8904, !16, i64 8908, !12, i64 8912, !58, i64 8916, !15, i64 8920, !15, i64 8928, !16, i64 8936, !12, i64 8940, !12, i64 8941, !12, i64 8942, !14, i64 8944, !14, i64 8948, !14, i64 8952, !59, i64 8960, !43, i64 9024, !43, i64 9040, !14, i64 9056, !14, i64 9060, !16, i64 9064, !14, i64 9068, !14, i64 9072, !14, i64 9076, !14, i64 9080, !60, i64 9088, !7, i64 9104, !14, i64 9120, !61, i64 9128, !6, i64 9144, !14, i64 9152, !14, i64 9156, !62, i64 9160, !63, i64 9176, !65, i64 9216, !66, i64 9232, !6, i64 9248, !67, i64 9256, !69, i64 9296, !70, i64 9312, !71, i64 9328, !6, i64 9432, !14, i64 9440, !72, i64 9448, !73, i64 9464, !14, i64 9504, !14, i64 9508, !16, i64 9512, !16, i64 9516, !14, i64 9520, !14, i64 9524, !14, i64 9528, !16, i64 9532, !15, i64 9536, !75, i64 9544, !77, i64 9664, !78, i64 9688, !14, i64 9808, !36, i64 9812, !14, i64 9820, !14, i64 9824, !14, i64 9828, !14, i64 9832, !14, i64 9836, !16, i64 9840, !16, i64 9844, !14, i64 9848, !26, i64 9852, !80, i64 9868, !43, i64 9916, !12, i64 9932, !18, i64 9934, !16, i64 9936, !16, i64 9940, !16, i64 9944, !12, i64 9948, !12, i64 9949, !16, i64 9952, !16, i64 9956, !16, i64 9960, !18, i64 9964, !18, i64 9966, !6, i64 9968, !76, i64 9976, !81, i64 9992, !82, i64 10008, !84, i64 10112, !84, i64 10128, !14, i64 10144, !85, i64 10152, !6, i64 10208, !12, i64 10216, !16, i64 10220, !88, i64 10224, !89, i64 10240, !90, i64 10256, !91, i64 10272, !92, i64 10288, !14, i64 10304, !7, i64 10312, !12, i64 10416, !14, i64 10420, !6, i64 10424, !6, i64 10432, !88, i64 10440, !6, i64 10456, !6, i64 10464, !16, i64 10472, !12, i64 10476, !14, i64 10480, !14, i64 10484, !14, i64 10488, !6, i64 10496, !6, i64 10504, !15, i64 10512, !12, i64 10520, !14, i64 10524, !93, i64 10528, !6, i64 10552, !14, i64 10560, !14, i64 10564, !88, i64 10568, !94, i64 10584, !14, i64 10608, !14, i64 10612, !7, i64 10616, !7, i64 10617, !12, i64 10618, !14, i64 10620, !7, i64 10624, !12, i64 10625, !7, i64 10626, !14, i64 10628, !16, i64 10632, !26, i64 10636, !95, i64 10652, !96, i64 10680, !98, i64 10736, !6, i64 10800, !7, i64 10808, !14, i64 11048, !14, i64 11052, !16, i64 11056, !14, i64 11060, !14, i64 11064, !14, i64 11068, !76, i64 11072, !7, i64 11088}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS7ImGuiIO", !14, i64 0, !14, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !12, i64 60, !6, i64 64, !15, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91, !12, i64 92, !12, i64 93, !12, i64 94, !12, i64 95, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !12, i64 100, !12, i64 101, !12, i64 102, !12, i64 103, !12, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !12, i64 132, !12, i64 133, !12, i64 134, !12, i64 135, !12, i64 136, !12, i64 137, !12, i64 138, !12, i64 139, !12, i64 140, !12, i64 141, !12, i64 142, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !12, i64 189, !12, i64 190, !16, i64 192, !14, i64 196, !14, i64 200, !14, i64 204, !14, i64 208, !15, i64 212, !6, i64 224, !15, i64 232, !7, i64 240, !16, i64 248, !16, i64 252, !17, i64 256, !14, i64 260, !12, i64 264, !12, i64 265, !12, i64 266, !12, i64 267, !14, i64 268, !7, i64 272, !12, i64 2752, !15, i64 2756, !7, i64 2764, !7, i64 2808, !7, i64 2848, !7, i64 2853, !7, i64 2858, !7, i64 2868, !7, i64 2878, !7, i64 2888, !7, i64 2928, !7, i64 2933, !12, i64 2938, !12, i64 2939, !7, i64 2940, !7, i64 2960, !7, i64 2980, !7, i64 3020, !16, i64 3040, !12, i64 3044, !12, i64 3045, !18, i64 3046, !19, i64 3048, !6, i64 3064, !6, i64 3072, !6, i64 3080}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !18, i64 56, !6, i64 64, !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, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !21, i64 264, !22, i64 280}
!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, !16, i64 24, !15, i64 28, !15, i64 36, !24, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !15, i64 64, !16, i64 72, !16, i64 76, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !15, i64 172, !24, i64 180, !15, i64 184, !15, i64 192, !16, i64 200, !15, i64 204, !15, i64 212, !15, i64 220, !15, i64 228, !16, i64 236, !16, i64 240, !12, i64 244, !12, i64 245, !12, i64 246, !16, i64 248, !16, i64 252, !7, i64 256, !16, i64 1184, !16, i64 1188, !16, i64 1192, !14, i64 1196, !14, i64 1200}
!24 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!25 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !6, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !14, i64 44, !26, i64 48, !27, i64 64, !7, i64 80, !16, i64 464, !7, i64 468}
!26 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!27 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!28 = !{!"double", !7, i64 0}
!29 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS12ImGuiStorage", !33, i64 0}
!33 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !14, i64 0, !14, i64 4, !6, i64 8}
!34 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!35 = !{!"_ZTS24ImGuiDeactivatedItemData", !14, i64 0, !14, i64 4, !12, i64 8, !12, i64 9}
!36 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!37 = !{!"_ZTS10ImBitArrayILi155ELin512EE", !7, i64 0}
!38 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !39, i64 312, !39, i64 328}
!39 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!40 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !14, i64 8, !41, i64 16, !16, i64 24, !14, i64 28, !14, i64 32, !12, i64 36, !7, i64 37, !36, i64 38, !14, i64 48}
!41 = !{!"long long", !7, i64 0}
!42 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !43, i64 12, !43, i64 28, !43, i64 44, !43, i64 60, !14, i64 76}
!43 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!44 = !{!"_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, !14, i64 64, !12, i64 68, !12, i64 69, !43, i64 72, !6, i64 88, !6, i64 96, !16, i64 104, !14, i64 108, !14, i64 112, !45, i64 116, !15, i64 148, !14, i64 156}
!45 = !{!"_ZTS16ImGuiWindowClass", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !12, i64 28, !12, i64 29}
!46 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS20ImGuiPlatformMonitor", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !6, i64 40}
!56 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!57 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !43, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !41, i64 48}
!58 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!59 = !{!"_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}
!60 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS6ImPoolI10ImGuiTableE", !64, i64 0, !32, i64 16, !14, i64 32, !14, i64 36}
!64 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!67 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !68, i64 0, !32, i64 16, !14, i64 32, !14, i64 36}
!68 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!71 = !{!"_ZTS19ImGuiBoxSelectState", !14, i64 0, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 9, !15, i64 12, !15, i64 20, !15, i64 28, !6, i64 40, !12, i64 48, !43, i64 52, !43, i64 68, !43, i64 84}
!72 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!73 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !74, i64 0, !32, i64 16, !14, i64 32, !14, i64 36}
!74 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !14, i64 0, !14, i64 4, !6, i64 8}
!75 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !6, i64 32, !76, i64 40, !76, i64 56, !76, i64 72, !14, i64 88, !15, i64 92, !16, i64 100, !12, i64 104, !12, i64 105, !12, i64 106, !12, i64 107, !14, i64 108, !14, i64 112}
!76 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!77 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !76, i64 8}
!78 = !{!"_ZTS6ImFont", !65, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !79, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !14, i64 108, !12, i64 112, !7, i64 113}
!79 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!80 = !{!"_ZTS21ImGuiComboPreviewData", !43, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!81 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!82 = !{!"_ZTS22ImGuiTypingSelectState", !83, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!83 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!84 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!85 = !{!"_ZTS16ImGuiDockContext", !32, i64 0, !86, i64 16, !87, i64 32, !12, i64 48}
!86 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !14, i64 0, !14, i64 4, !6, i64 8}
!87 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !14, i64 0, !14, i64 4, !6, i64 8}
!88 = !{!"_ZTS15ImGuiTextBuffer", !76, i64 0}
!89 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!90 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !76, i64 0}
!91 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !76, i64 0}
!92 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!93 = !{!"_ZTS23ImGuiErrorRecoveryState", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !18, i64 18, !18, i64 20}
!94 = !{!"_ZTS14ImGuiTextIndex", !50, i64 0, !14, i64 16}
!95 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24}
!96 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !97, i64 16, !12, i64 32, !16, i64 36, !88, i64 40}
!97 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!98 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !18, i64 8, !7, i64 12}
!99 = !{i8 0, i8 2}
!100 = !{}
!101 = !{!11, !14, i64 5180}
!102 = !{!11, !14, i64 5176}
!103 = !{!11, !14, i64 5352}
!104 = !{!105, !14, i64 16}
!105 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !45, 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, !16, i64 176, !16, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !15, i64 204, !15, i64 212, !15, i64 220, !15, i64 228, !15, i64 236, !15, i64 244, !12, i64 252, !12, i64 253, !12, i64 254, !7, i64 255, !12, i64 256, !12, i64 257, !12, i64 258, !12, i64 259, !12, i64 260, !12, i64 261, !12, i64 262, !12, i64 263, !12, i64 264, !12, i64 265, !12, i64 266, !12, i64 267, !12, i64 268, !7, i64 269, !7, i64 270, !18, i64 272, !18, i64 274, !18, i64 276, !18, i64 278, !18, i64 280, !7, i64 282, !7, i64 283, !12, i64 284, !24, i64 288, !7, i64 292, !7, i64 293, !7, i64 294, !7, i64 295, !14, i64 296, !14, i64 297, !14, i64 298, !14, i64 299, !15, i64 300, !15, i64 308, !81, i64 320, !106, i64 336, !43, i64 600, !43, i64 616, !43, i64 632, !43, i64 648, !43, i64 664, !43, i64 680, !43, i64 696, !109, i64 712, !109, i64 716, !14, i64 720, !14, i64 724, !16, i64 728, !16, i64 732, !32, i64 736, !110, i64 752, !16, i64 768, !16, i64 772, !16, i64 776, !16, i64 780, !14, i64 784, !6, i64 792, !111, i64 800, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !6, i64 1064, !6, i64 1072, !6, i64 1080, !7, i64 1088, !7, i64 1096, !7, i64 1128, !14, i64 1144, !14, i64 1148, !14, i64 1152, !12, i64 1156, !12, i64 1157, !12, i64 1157, !12, i64 1157, !12, i64 1157, !18, i64 1158, !118, i64 1160, !6, i64 1192, !6, i64 1200, !14, i64 1208}
!106 = !{!"_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, !107, i64 68, !107, i64 72, !107, i64 76, !15, i64 80, !56, i64 88, !18, i64 92, !18, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !108, i64 108, !14, i64 136, !14, i64 140, !30, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !43, i64 204, !16, i64 220, !16, i64 224, !65, i64 232, !65, i64 248}
!107 = !{!"_ZTS6ImVec1", !16, i64 0}
!108 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!109 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!110 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!111 = !{!"_ZTS10ImDrawList", !112, i64 0, !19, i64 16, !113, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !27, i64 80, !114, i64 96, !115, i64 128, !116, i64 152, !117, i64 168, !60, i64 184, !16, i64 200, !6, i64 208}
!112 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!113 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!114 = !{!"_ZTS15ImDrawCmdHeader", !26, i64 0, !41, i64 16, !14, i64 24}
!115 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !66, i64 8}
!116 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!117 = !{!"_ZTS8ImVectorIyE", !14, i64 0, !14, i64 4, !6, i64 8}
!118 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!119 = !{!105, !14, i64 720}
!120 = !{!11, !14, i64 5312}
!121 = !{!11, !12, i64 5197}
!122 = !{!105, !12, i64 266}
!123 = !{!11, !14, i64 8240}
!124 = !{!105, !14, i64 200}
!125 = !{!126, !14, i64 0}
!126 = !{!"_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}
!127 = !{!126, !6, i64 8}
!128 = !{!105, !12, i64 264}
!129 = !{!105, !14, i64 20}
!130 = !{!105, !14, i64 24}
!131 = !{!11, !14, i64 7960}
!132 = !{!11, !14, i64 8024}
!133 = !{!105, !14, i64 28}
!134 = !{!11, !28, i64 5168}
!135 = !{!105, !16, i64 728}
!136 = !{!105, !18, i64 276}
!137 = !{!11, !14, i64 5344}
!138 = !{!105, !18, i64 278}
!139 = !{!105, !6, i64 1192}
!140 = !{!105, !6, i64 1200}
!141 = !{!11, !14, i64 8072}
!142 = !{!11, !14, i64 7976}
!143 = !{!105, !14, i64 1208}
!144 = !{!145, !6, i64 136}
!145 = !{!"_ZTS13ImGuiDockNode", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !146, i64 20, !6, i64 24, !7, i64 32, !30, i64 48, !6, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !147, i64 96, !45, i64 100, !14, i64 132, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 200, !14, i64 200, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 201, !12, i64 202, !12, i64 202, !12, i64 202, !12, i64 202}
!146 = !{!"_ZTS18ImGuiDockNodeState", !7, i64 0}
!147 = !{!"_ZTS9ImGuiAxis", !7, i64 0}
!148 = !{!149, !6, i64 0}
!149 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !42, i64 8, !93, i64 88, !12, i64 110, !16, i64 112}
!150 = !{!105, !6, i64 1016}
!151 = !{!105, !14, i64 320}
!152 = !{!11, !6, i64 5360}
!153 = !{i64 0, i64 4, !154, i64 4, i64 4, !154, i64 8, i64 4, !154, i64 12, i64 4, !155, i64 16, i64 4, !155, i64 20, i64 4, !155, i64 24, i64 4, !155, i64 28, i64 4, !155, i64 32, i64 4, !155, i64 36, i64 4, !155, i64 40, i64 4, !155, i64 44, i64 4, !155, i64 48, i64 4, !155, i64 52, i64 4, !155, i64 56, i64 4, !155, i64 60, i64 4, !155, i64 64, i64 4, !155, i64 68, i64 4, !155, i64 72, i64 4, !155, i64 76, i64 4, !154}
!154 = !{!14, !14, i64 0}
!155 = !{!16, !16, i64 0}
!156 = !{!11, !14, i64 7816}
!157 = !{!149, !12, i64 110}
!158 = !{!149, !16, i64 112}
!159 = !{!11, !6, i64 10552}
!160 = !{!11, !14, i64 9820}
!161 = !{!105, !6, i64 1024}
!162 = !{!105, !6, i64 1032}
!163 = !{!105, !6, i64 1072}
!164 = !{!145, !14, i64 16}
!165 = !{!105, !14, i64 40}
!166 = !{!105, !16, i64 772}
!167 = !{!105, !16, i64 768}
!168 = !{!11, !14, i64 7812}
!169 = !{!105, !14, i64 1144}
!170 = !{!105, !56, i64 424}
!171 = !{!126, !14, i64 24}
!172 = !{!11, !14, i64 7964}
!173 = !{!11, !14, i64 7968}
!174 = !{!11, !16, i64 7996}
!175 = !{!11, !16, i64 8000}
!176 = !{!105, !16, i64 104}
!177 = !{!105, !16, i64 108}
!178 = !{!11, !16, i64 8012}
!179 = !{!105, !16, i64 220}
!180 = !{!105, !16, i64 228}
!181 = !{!11, !16, i64 8016}
!182 = !{!105, !16, i64 224}
!183 = !{!105, !16, i64 232}
!184 = !{i64 0, i64 4, !154, i64 4, i64 4, !154, i64 8, i64 4, !154, i64 12, i64 4, !154, i64 16, i64 4, !154, i64 20, i64 4, !154, i64 24, i64 4, !154, i64 28, i64 1, !185, i64 29, i64 1, !185}
!185 = !{!12, !12, i64 0}
!186 = !{!11, !12, i64 8029}
!187 = !{!11, !14, i64 7972}
!188 = !{!105, !12, i64 263}
!189 = !{!105, !7, i64 293}
!190 = !{!105, !12, i64 257}
!191 = !{!105, !12, i64 268}
!192 = !{i64 0, i64 4, !155, i64 4, i64 4, !155, i64 8, i64 4, !155, i64 12, i64 4, !155}
!193 = !{!105, !6, i64 792}
!194 = !{!105, !14, i64 512}
!195 = !{!105, !12, i64 1156}
!196 = !{!105, !6, i64 64}
!197 = !{!198, !6, i64 96}
!198 = !{!"_ZTS14ImGuiViewportP", !199, i64 0, !6, i64 96, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !15, i64 120, !15, i64 128, !16, i64 136, !16, i64 140, !12, i64 144, !18, i64 146, !7, i64 148, !7, i64 160, !200, i64 176, !202, i64 240, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312, !15, i64 320}
!199 = !{!"_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}
!200 = !{!"_ZTS10ImDrawData", !12, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !201, i64 16, !15, i64 32, !15, i64 40, !15, i64 48, !6, i64 56}
!201 = !{!"_ZTS8ImVectorIP10ImDrawListE", !14, i64 0, !14, i64 4, !6, i64 8}
!202 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0, !201, i64 16}
!203 = !{!11, !6, i64 8896}
!204 = !{!105, !6, i64 8}
!205 = !{!105, !14, i64 184}
!206 = !{!207, !207, i64 0}
!207 = !{!"long", !7, i64 0}
!208 = !{!105, !7, i64 292}
!209 = !{!105, !7, i64 294}
!210 = !{!105, !16, i64 96}
!211 = !{!105, !16, i64 100}
!212 = !{!11, !14, i64 8}
!213 = !{!199, !16, i64 40}
!214 = !{!105, !16, i64 776}
!215 = !{!23, !16, i64 12}
!216 = !{!23, !16, i64 80}
!217 = !{!11, !16, i64 8108}
!218 = !{!105, !16, i64 436}
!219 = !{!11, !16, i64 8112}
!220 = !{!105, !16, i64 440}
!221 = !{!11, !16, i64 4616}
!222 = !{!11, !16, i64 3460}
!223 = !{!105, !16, i64 152}
!224 = !{!105, !16, i64 156}
!225 = !{!105, !16, i64 780}
!226 = !{!105, !16, i64 128}
!227 = !{!105, !16, i64 132}
!228 = !{!11, !6, i64 5368}
!229 = !{!11, !14, i64 5452}
!230 = !{!11, !14, i64 5456}
!231 = !{!11, !14, i64 5476}
!232 = !{!18, !18, i64 0}
!233 = !{!105, !12, i64 261}
!234 = !{!105, !12, i64 260}
!235 = !{!105, !16, i64 160}
!236 = !{!105, !16, i64 164}
!237 = !{!105, !7, i64 282}
!238 = !{!105, !7, i64 283}
!239 = !{!105, !12, i64 284}
!240 = !{!15, !16, i64 4}
!241 = !{!105, !24, i64 288}
!242 = !{!105, !14, i64 480}
!243 = !{!105, !16, i64 300}
!244 = !{!105, !14, i64 84}
!245 = !{!105, !12, i64 256}
!246 = !{!199, !14, i64 4}
!247 = !{!11, !14, i64 3360}
!248 = !{!11, !6, i64 5392}
!249 = !{!105, !6, i64 1048}
!250 = !{!105, !16, i64 144}
!251 = !{!11, !12, i64 109}
!252 = !{!105, !7, i64 269}
!253 = !{!105, !7, i64 270}
!254 = !{!199, !12, i64 89}
!255 = !{!199, !12, i64 90}
!256 = !{!105, !16, i64 172}
!257 = !{!105, !12, i64 252}
!258 = !{!105, !12, i64 253}
!259 = !{!15, !16, i64 0}
!260 = !{!23, !16, i64 120}
!261 = !{!105, !7, i64 255}
!262 = !{!105, !12, i64 254}
!263 = !{!105, !16, i64 604}
!264 = !{!105, !16, i64 148}
!265 = !{!105, !16, i64 632}
!266 = !{!105, !16, i64 620}
!267 = !{!105, !16, i64 636}
!268 = !{!105, !16, i64 624}
!269 = !{!105, !16, i64 640}
!270 = !{!105, !16, i64 628}
!271 = !{!105, !16, i64 644}
!272 = !{!105, !16, i64 732}
!273 = !{!105, !16, i64 112}
!274 = !{!105, !16, i64 136}
!275 = !{!105, !16, i64 212}
!276 = !{!105, !16, i64 116}
!277 = !{!105, !16, i64 140}
!278 = !{!105, !16, i64 216}
!279 = !{!111, !14, i64 0}
!280 = !{!281, !14, i64 32}
!281 = !{!"_ZTS9ImDrawCmd", !26, i64 0, !41, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48, !14, i64 56, !14, i64 60}
!282 = !{!11, !6, i64 4608}
!283 = !{!78, !6, i64 64}
!284 = !{!285, !41, i64 8}
!285 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !41, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !12, i64 32, !12, i64 33, !12, i64 34, !6, i64 40, !6, i64 48, !14, i64 56, !14, i64 60, !15, i64 64, !15, i64 72, !48, i64 80, !286, i64 96, !287, i64 112, !7, i64 128, !6, i64 656, !14, i64 664, !14, i64 668, !14, i64 672}
!286 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!287 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!288 = !{!111, !14, i64 32}
!289 = !{!11, !6, i64 8880}
!290 = !{!11, !6, i64 8408}
!291 = !{!105, !6, i64 1056}
!292 = !{!105, !16, i64 168}
!293 = !{!105, !16, i64 616}
!294 = !{!105, !16, i64 204}
!295 = !{!105, !16, i64 648}
!296 = !{!105, !16, i64 208}
!297 = !{!105, !16, i64 652}
!298 = !{!105, !16, i64 704}
!299 = !{!105, !16, i64 708}
!300 = !{!105, !16, i64 404}
!301 = !{!105, !18, i64 430}
!302 = !{!105, !18, i64 428}
!303 = !{!105, !12, i64 432}
!304 = !{!105, !12, i64 433}
!305 = !{!105, !12, i64 434}
!306 = !{!105, !12, i64 435}
!307 = !{!105, !14, i64 472}
!308 = !{!105, !14, i64 476}
!309 = !{!105, !6, i64 496}
!310 = !{!105, !6, i64 504}
!311 = !{!105, !14, i64 516}
!312 = !{!105, !14, i64 520}
!313 = !{!105, !16, i64 556}
!314 = !{!105, !16, i64 560}
!315 = !{!105, !14, i64 524}
!316 = !{!199, !12, i64 91}
!317 = !{!11, !14, i64 10564}
!318 = !{!11, !12, i64 8912}
!319 = !{!11, !12, i64 111}
!320 = !{!43, !16, i64 0}
!321 = !{!43, !16, i64 4}
!322 = !{!43, !16, i64 8}
!323 = !{!43, !16, i64 12}
!324 = !{!105, !18, i64 714}
!325 = !{!105, !18, i64 712}
!326 = !{!11, !6, i64 9968}
!327 = !{!11, !12, i64 8940}
!328 = !{!105, !14, i64 528}
!329 = !{!11, !14, i64 7820}
!330 = !{!105, !14, i64 188}
!331 = !{!105, !12, i64 259}
!332 = !{!105, !18, i64 272}
!333 = !{!105, !14, i64 724}
!334 = !{!11, !12, i64 8489}
!335 = !{!105, !6, i64 1064}
!336 = !{!11, !12, i64 10416}
!337 = !{!105, !16, i64 600}
!338 = !{!105, !16, i64 608}
!339 = !{!105, !16, i64 612}
!340 = !{!23, !16, i64 0}
!341 = !{!105, !12, i64 265}
!342 = !{!105, !7, i64 295}
!343 = !{!105, !12, i64 262}
!344 = !{!11, !12, i64 147}
!345 = !{!11, !12, i64 148}
!346 = !{!11, !7, i64 10624}


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