; LLVM IR from Adeon18/Shift :: Source/Graphics/UI/imgui/imgui.ll (ZN5ImGui5BeginEPKcPbi)

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

%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.1, %struct.ImVector.1, i32, i32, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, %struct.ImGuiStorage, i32, %struct.ImVec2, i32, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i8, i8, ptr, i32, float, double, double, double, %struct.ImBitArray, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, ptr, i32, i32, %struct.ImVector.9, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i64, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImGuiNavItemData, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, i32, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.15, [16 x i8], i32, %struct.ImVector.16, ptr, i32, i32, %struct.ImVector.17, %struct.ImPool, %struct.ImVector.19, %struct.ImVector.20, ptr, %struct.ImPool.21, %struct.ImVector.23, %struct.ImVector.24, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, float, float, i8, i8, float, float, float, float, i16, i16, i16, %struct.ImVector.25, %struct.ImVector.27, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.28, %struct.ImChunkStream, %struct.ImChunkStream.29, %struct.ImVector.30, i32, [8 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.25, [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, float, float, float, float, float, float, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, [666 x i32], [666 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, i32, [666 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], i8, [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.0, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.5, %struct.ImVector.5 }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i64, float, i32, i8, i8, [6 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type <{ ptr, i32, i32, %struct.ImRect, i32, [4 x i8], i64, float, float, float, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.18, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImPool.21 = type { %struct.ImVector.22, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { ptr, i32, i32, i32, %struct.ImVector, %struct.ImVector.25, %struct.ImVector.25, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i32, i8, i32, i32 }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.25 }
%struct.ImFont = type <{ %struct.ImVector.19, float, float, %struct.ImVector, %struct.ImVector.26, ptr, ptr, ptr, i16, i16, i16, i16, float, float, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiTypingSelectState = type <{ %struct.ImGuiTypingSelectRequest, [64 x i8], i32, i32, float, i8, [3 x i8] }>
%struct.ImGuiTypingSelectRequest = type { i32, i32, ptr, i8, i8, i8 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.25 }
%struct.ImChunkStream.29 = type { %struct.ImVector.25 }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.25 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.10, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.31, i8, float }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, [2 x i8], i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector.27, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.34, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, [3 x i8] }>
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.2, ptr, ptr, i32, i32, i32, i32, float, float, %struct.ImVector.19, %struct.ImVector.19 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVec2ih = type { i16, i16 }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.35, %struct.ImVector, %struct.ImVector.36, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.37, %struct.ImVector.38, %struct.ImVector.0, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.20 }
%struct.ImGuiPopupData = type <{ i32, [4 x i8], ptr, ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImFontAtlas = type <{ i32, [4 x i8], ptr, i32, i32, i8, [7 x i8], ptr, i8, i8, [6 x i8], ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.8, %struct.ImVector.45, %struct.ImVector.46, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.45 = type { i32, i32, ptr }
%struct.ImVector.46 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

112:                                              ; preds = %110
  br label %115

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

114:                                              ; No predecessors!
  br label %115

115:                                              ; preds = %114, %112
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.ImGuiContext, ptr %116, i32 0, i32 12
  %118 = load i8, ptr %117, align 4, !tbaa !12, !range !87, !noundef !88
  %119 = trunc i8 %118 to i1
  br i1 %119, label %120, label %121

120:                                              ; preds = %115
  br label %123

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

122:                                              ; No predecessors!
  br label %123

123:                                              ; preds = %122, %120
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.ImGuiContext, ptr %124, i32 0, i32 10
  %126 = load i32, ptr %125, align 4, !tbaa !89
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.ImGuiContext, ptr %127, i32 0, i32 9
  %129 = load i32, ptr %128, align 8, !tbaa !90
  %130 = icmp ne i32 %126, %129
  br i1 %130, label %131, label %132

131:                                              ; preds = %123
  br label %134

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

133:                                              ; No predecessors!
  br label %134

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

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

146:                                              ; preds = %142, %134
  %147 = load ptr, ptr %8, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.ImGuiContext, ptr %147, i32 0, i32 29
  %149 = load i32, ptr %148, align 4, !tbaa !92
  %150 = load ptr, ptr %10, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.ImGuiWindow, ptr %150, i32 0, i32 2
  %152 = load i32, ptr %151, align 8, !tbaa !93
  %153 = icmp eq i32 %149, %152
  br i1 %153, label %154, label %155

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

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

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

162:                                              ; preds = %159, %155
  %163 = load i32, ptr %7, align 4, !tbaa !9
  %164 = and i32 %163, 8388608
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %174

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

170:                                              ; preds = %166
  br label %173

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

172:                                              ; No predecessors!
  br label %173

173:                                              ; preds = %172, %170
  br label %174

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

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

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

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

243:                                              ; preds = %209, %194
  %244 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %245 = trunc i8 %244 to i1
  %246 = load ptr, ptr %10, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.ImGuiWindow, ptr %246, i32 0, i32 39
  %248 = zext i1 %245 to i8
  store i8 %248, ptr %247, align 4, !tbaa !116
  %249 = load ptr, ptr %10, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.ImGuiWindow, ptr %249, i32 0, i32 39
  %251 = load i8, ptr %250, align 4, !tbaa !116, !range !87, !noundef !88
  %252 = trunc i8 %251 to i1
  br i1 %252, label %253, label %255

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

255:                                              ; preds = %253, %243
  %256 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %257 = trunc i8 %256 to i1
  br i1 %257, label %258, label %300

258:                                              ; preds = %255
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %261 = trunc i8 %260 to i1
  %262 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef %259, i1 noundef zeroext %261, i32 noundef %262)
  %263 = load i32, ptr %7, align 4, !tbaa !9
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiWindow, ptr %264, i32 0, i32 3
  store i32 %263, ptr %265, align 4, !tbaa !117
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImGuiContext, ptr %266, i32 0, i32 85
  %268 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %267, i32 0, i32 0
  %269 = load i32, ptr %268, align 8, !tbaa !118
  %270 = and i32 %269, 256
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %277

272:                                              ; preds = %258
  %273 = load ptr, ptr %8, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiContext, ptr %273, i32 0, i32 85
  %275 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %274, i32 0, i32 9
  %276 = load i32, ptr %275, align 8, !tbaa !119
  br label %278

277:                                              ; preds = %258
  br label %278

278:                                              ; preds = %277, %272
  %279 = phi i32 [ %276, %272 ], [ 0, %277 ]
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiWindow, ptr %280, i32 0, i32 4
  store i32 %279, ptr %281, align 8, !tbaa !120
  %282 = load i32, ptr %12, align 4, !tbaa !9
  %283 = load ptr, ptr %10, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiWindow, ptr %283, i32 0, i32 78
  store i32 %282, ptr %284, align 8, !tbaa !107
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiContext, ptr %285, i32 0, i32 8
  %287 = load double, ptr %286, align 8, !tbaa !121
  %288 = fptrunc double %287 to float
  %289 = load ptr, ptr %10, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.ImGuiWindow, ptr %289, i32 0, i32 79
  store float %288, ptr %290, align 4, !tbaa !122
  %291 = load ptr, ptr %10, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ImGuiWindow, ptr %291, i32 0, i32 49
  store i16 0, ptr %292, align 8, !tbaa !123
  %293 = load ptr, ptr %8, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.ImGuiContext, ptr %293, i32 0, i32 27
  %295 = load i32, ptr %294, align 8, !tbaa !124
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %294, align 8, !tbaa !124
  %297 = trunc i32 %295 to i16
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiWindow, ptr %298, i32 0, i32 50
  store i16 %297, ptr %299, align 2, !tbaa !125
  br label %304

300:                                              ; preds = %255
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiWindow, ptr %301, i32 0, i32 3
  %303 = load i32, ptr %302, align 4, !tbaa !117
  store i32 %303, ptr %7, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %300, %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #12
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ImGuiContext, ptr %305, i32 0, i32 25
  %307 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %306)
  br i1 %307, label %308, label %309

308:                                              ; preds = %304
  br label %315

309:                                              ; preds = %304
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiContext, ptr %310, i32 0, i32 25
  %312 = call noundef nonnull align 8 dereferenceable(102) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %311)
  %313 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %312, i32 0, i32 0
  %314 = load ptr, ptr %313, align 8, !tbaa !126
  br label %315

315:                                              ; preds = %309, %308
  %316 = phi ptr [ null, %308 ], [ %314, %309 ]
  store ptr %316, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #12
  %317 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %328

319:                                              ; preds = %315
  %320 = load i32, ptr %7, align 4, !tbaa !9
  %321 = and i32 %320, 83886080
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %325

323:                                              ; preds = %319
  %324 = load ptr, ptr %16, align 8, !tbaa !5
  br label %326

325:                                              ; preds = %319
  br label %326

326:                                              ; preds = %325, %323
  %327 = phi ptr [ %324, %323 ], [ null, %325 ]
  br label %332

328:                                              ; preds = %315
  %329 = load ptr, ptr %10, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiWindow, ptr %329, i32 0, i32 88
  %331 = load ptr, ptr %330, align 8, !tbaa !129
  br label %332

332:                                              ; preds = %328, %326
  %333 = phi ptr [ %327, %326 ], [ %331, %328 ]
  store ptr %333, ptr %17, align 8, !tbaa !5
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = icmp ne ptr %334, null
  br i1 %335, label %341, label %336

336:                                              ; preds = %332
  %337 = load i32, ptr %7, align 4, !tbaa !9
  %338 = and i32 %337, 16777216
  %339 = icmp ne i32 %338, 0
  %340 = xor i1 %339, true
  br label %341

341:                                              ; preds = %336, %332
  %342 = phi i1 [ true, %332 ], [ %340, %336 ]
  br i1 %342, label %343, label %344

343:                                              ; preds = %341
  br label %346

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

345:                                              ; No predecessors!
  br label %346

346:                                              ; preds = %345, %343
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImGuiWindow, ptr %347, i32 0, i32 67
  %349 = getelementptr inbounds %struct.ImVector.27, ptr %348, i32 0, i32 0
  %350 = load i32, ptr %349, align 8, !tbaa !130
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %357

352:                                              ; preds = %346
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.ImGuiWindow, ptr %353, i32 0, i32 67
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImGuiWindow, ptr %355, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %354, ptr noundef nonnull align 4 dereferenceable(4) %356)
  br label %357

357:                                              ; preds = %352, %346
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = load ptr, ptr %8, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.ImGuiContext, ptr %359, i32 0, i32 30
  store ptr %358, ptr %360, align 8, !tbaa !131
  call void @llvm.lifetime.start.p0(i64 104, ptr %18) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(102) %18)
  %361 = load ptr, ptr %10, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 0
  store ptr %361, ptr %362, align 8, !tbaa !126
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.ImGuiContext, ptr %363, i32 0, i32 83
  %365 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %365, ptr align 8 %364, i64 76, i1 false), !tbaa.struct !132
  %366 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 2
  %367 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %366, ptr noundef %367)
  %368 = load ptr, ptr %8, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.ImGuiContext, ptr %368, i32 0, i32 25
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull align 8 dereferenceable(102) %18)
  %370 = load i32, ptr %7, align 4, !tbaa !9
  %371 = and i32 %370, 268435456
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %378

373:                                              ; preds = %357
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.ImGuiContext, ptr %374, i32 0, i32 200
  %376 = load i32, ptr %375, align 4, !tbaa !134
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr %375, align 4, !tbaa !134
  br label %378

378:                                              ; preds = %373, %357
  %379 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %380 = trunc i8 %379 to i1
  br i1 %380, label %381, label %398

381:                                              ; preds = %378
  %382 = load ptr, ptr %10, align 8, !tbaa !5
  %383 = load i32, ptr %7, align 4, !tbaa !9
  %384 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %382, i32 noundef %383, ptr noundef %384)
  %385 = load ptr, ptr %16, align 8, !tbaa !5
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ImGuiWindow, ptr %386, i32 0, i32 89
  store ptr %385, ptr %387, align 8, !tbaa !135
  %388 = load i32, ptr %7, align 4, !tbaa !9
  %389 = and i32 %388, 16777216
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %393

391:                                              ; preds = %381
  %392 = load ptr, ptr %16, align 8, !tbaa !5
  br label %394

393:                                              ; preds = %381
  br label %394

394:                                              ; preds = %393, %391
  %395 = phi ptr [ %392, %391 ], [ null, %393 ]
  %396 = load ptr, ptr %10, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiWindow, ptr %396, i32 0, i32 94
  store ptr %395, ptr %397, align 8, !tbaa !136
  br label %398

398:                                              ; preds = %394, %378
  %399 = load i32, ptr %7, align 4, !tbaa !9
  %400 = and i32 %399, 8388608
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %406

402:                                              ; preds = %398
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiContext, ptr %403, i32 0, i32 78
  %405 = load i32, ptr %404, align 8, !tbaa !137
  br label %410

406:                                              ; preds = %398
  %407 = load ptr, ptr %10, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.ImGuiWindow, ptr %407, i32 0, i32 2
  %409 = load i32, ptr %408, align 8, !tbaa !93
  br label %410

410:                                              ; preds = %406, %402
  %411 = phi i32 [ %405, %402 ], [ %409, %406 ]
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %411)
  %412 = load ptr, ptr %8, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.ImGuiContext, ptr %412, i32 0, i32 78
  %414 = load i32, ptr %413, align 8, !tbaa !137
  %415 = load ptr, ptr %10, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.ImGuiWindow, ptr %415, i32 0, i32 99
  store i32 %414, ptr %416, align 8, !tbaa !138
  %417 = load i32, ptr %7, align 4, !tbaa !9
  %418 = and i32 %417, 67108864
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %445

420:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #12
  %421 = load ptr, ptr %8, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiContext, ptr %421, i32 0, i32 94
  %423 = load ptr, ptr %8, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.ImGuiContext, ptr %423, i32 0, i32 95
  %425 = getelementptr inbounds %struct.ImVector.12, ptr %424, i32 0, i32 0
  %426 = load i32, ptr %425, align 8, !tbaa !111
  %427 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %422, i32 noundef %426)
  store ptr %427, ptr %19, align 8, !tbaa !5
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  %429 = load ptr, ptr %19, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImGuiPopupData, ptr %429, i32 0, i32 2
  store ptr %428, ptr %430, align 8, !tbaa !115
  %431 = load ptr, ptr %16, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiWindow, ptr %431, i32 0, i32 68
  %433 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %432, i32 0, i32 15
  %434 = load i32, ptr %433, align 8, !tbaa !139
  %435 = load ptr, ptr %19, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.ImGuiPopupData, ptr %435, i32 0, i32 4
  store i32 %434, ptr %436, align 8, !tbaa !140
  %437 = load ptr, ptr %8, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.ImGuiContext, ptr %437, i32 0, i32 95
  %439 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %438, ptr noundef nonnull align 8 dereferenceable(52) %439)
  %440 = load ptr, ptr %19, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiPopupData, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %441, align 8, !tbaa !113
  %443 = load ptr, ptr %10, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiWindow, ptr %443, i32 0, i32 53
  store i32 %442, ptr %444, align 8, !tbaa !112
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  br label %445

445:                                              ; preds = %420, %410
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  store i8 0, ptr %20, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  store i8 0, ptr %21, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #12
  store i8 0, ptr %22, align 1, !tbaa !91
  %446 = load ptr, ptr %8, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.ImGuiContext, ptr %446, i32 0, i32 85
  %448 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %447, i32 0, i32 0
  %449 = load i32, ptr %448, align 8, !tbaa !118
  %450 = and i32 %449, 1
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %452, label %506

452:                                              ; preds = %445
  %453 = load ptr, ptr %10, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiWindow, ptr %453, i32 0, i32 63
  %455 = load i32, ptr %454, align 8
  %456 = shl i32 %455, 24
  %457 = ashr i32 %456, 24
  %458 = load ptr, ptr %8, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiContext, ptr %458, i32 0, i32 85
  %460 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %459, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !141
  %462 = and i32 %457, %461
  %463 = icmp ne i32 %462, 0
  %464 = zext i1 %463 to i8
  store i8 %464, ptr %20, align 1, !tbaa !91
  %465 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %466 = trunc i8 %465 to i1
  br i1 %466, label %467, label %496

467:                                              ; preds = %452
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.ImGuiContext, ptr %468, i32 0, i32 85
  %470 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %469, i32 0, i32 5
  %471 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %470)
  %472 = fcmp ogt float %471, 0x3EE4F8B580000000
  br i1 %472, label %473, label %496

473:                                              ; preds = %467
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.ImGuiContext, ptr %474, i32 0, i32 85
  %476 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiWindow, ptr %477, i32 0, i32 64
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %478, ptr align 8 %476, i64 8, i1 false), !tbaa.struct !142
  %479 = load ptr, ptr %8, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.ImGuiContext, ptr %479, i32 0, i32 85
  %481 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %480, i32 0, i32 5
  %482 = load ptr, ptr %10, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiWindow, ptr %482, i32 0, i32 65
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %483, ptr align 8 %481, i64 8, i1 false), !tbaa.struct !142
  %484 = load ptr, ptr %10, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiWindow, ptr %484, i32 0, i32 63
  %486 = load i32, ptr %485, align 8
  %487 = shl i32 %486, 24
  %488 = ashr i32 %487, 24
  %489 = and i32 %488, -15
  %490 = load i32, ptr %485, align 8
  %491 = and i32 %489, 255
  %492 = and i32 %490, -256
  %493 = or i32 %492, %491
  store i32 %493, ptr %485, align 8
  %494 = shl i32 %491, 24
  %495 = ashr i32 %494, 24
  br label %505

496:                                              ; preds = %467, %452
  %497 = load ptr, ptr %10, align 8, !tbaa !5
  %498 = load ptr, ptr %8, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.ImGuiContext, ptr %498, i32 0, i32 85
  %500 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %499, i32 0, i32 4
  %501 = load ptr, ptr %8, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 85
  %503 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %502, i32 0, i32 1
  %504 = load i32, ptr %503, align 4, !tbaa !141
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %497, ptr noundef nonnull align 4 dereferenceable(8) %500, i32 noundef %504)
  br label %505

505:                                              ; preds = %496, %473
  br label %506

506:                                              ; preds = %505, %445
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.ImGuiContext, ptr %507, i32 0, i32 85
  %509 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %508, i32 0, i32 0
  %510 = load i32, ptr %509, align 8, !tbaa !118
  %511 = and i32 %510, 2
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %610

513:                                              ; preds = %506
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ImGuiWindow, ptr %514, i32 0, i32 63
  %516 = load i32, ptr %515, align 8
  %517 = shl i32 %516, 16
  %518 = ashr i32 %517, 24
  %519 = load ptr, ptr %8, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.ImGuiContext, ptr %519, i32 0, i32 85
  %521 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %520, i32 0, i32 2
  %522 = load i32, ptr %521, align 8, !tbaa !143
  %523 = and i32 %518, %522
  %524 = icmp ne i32 %523, 0
  br i1 %524, label %525, label %532

525:                                              ; preds = %513
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiContext, ptr %526, i32 0, i32 85
  %528 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %527, i32 0, i32 6
  %529 = getelementptr inbounds %struct.ImVec2, ptr %528, i32 0, i32 0
  %530 = load float, ptr %529, align 8, !tbaa !144
  %531 = fcmp ogt float %530, 0.000000e+00
  br label %532

532:                                              ; preds = %525, %513
  %533 = phi i1 [ false, %513 ], [ %531, %525 ]
  %534 = zext i1 %533 to i8
  store i8 %534, ptr %21, align 1, !tbaa !91
  %535 = load ptr, ptr %10, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.ImGuiWindow, ptr %535, i32 0, i32 63
  %537 = load i32, ptr %536, align 8
  %538 = shl i32 %537, 16
  %539 = ashr i32 %538, 24
  %540 = load ptr, ptr %8, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 85
  %542 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %541, i32 0, i32 2
  %543 = load i32, ptr %542, align 8, !tbaa !143
  %544 = and i32 %539, %543
  %545 = icmp ne i32 %544, 0
  br i1 %545, label %546, label %553

546:                                              ; preds = %532
  %547 = load ptr, ptr %8, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.ImGuiContext, ptr %547, i32 0, i32 85
  %549 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %548, i32 0, i32 6
  %550 = getelementptr inbounds %struct.ImVec2, ptr %549, i32 0, i32 1
  %551 = load float, ptr %550, align 4, !tbaa !145
  %552 = fcmp ogt float %551, 0.000000e+00
  br label %553

553:                                              ; preds = %546, %532
  %554 = phi i1 [ false, %532 ], [ %552, %546 ]
  %555 = zext i1 %554 to i8
  store i8 %555, ptr %22, align 1, !tbaa !91
  %556 = load ptr, ptr %10, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiWindow, ptr %556, i32 0, i32 4
  %558 = load i32, ptr %557, align 8, !tbaa !120
  %559 = and i32 %558, 4
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %578

561:                                              ; preds = %553
  %562 = load ptr, ptr %10, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.ImGuiWindow, ptr %562, i32 0, i32 63
  %564 = load i32, ptr %563, align 8
  %565 = shl i32 %564, 16
  %566 = ashr i32 %565, 24
  %567 = and i32 %566, 4
  %568 = icmp eq i32 %567, 0
  br i1 %568, label %569, label %578

569:                                              ; preds = %561
  %570 = load ptr, ptr %10, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.ImGuiWindow, ptr %570, i32 0, i32 9
  %572 = getelementptr inbounds %struct.ImVec2, ptr %571, i32 0, i32 0
  %573 = load float, ptr %572, align 8, !tbaa !146
  %574 = load ptr, ptr %8, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiContext, ptr %574, i32 0, i32 85
  %576 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %575, i32 0, i32 6
  %577 = getelementptr inbounds %struct.ImVec2, ptr %576, i32 0, i32 0
  store float %573, ptr %577, align 8, !tbaa !144
  br label %578

578:                                              ; preds = %569, %561, %553
  %579 = load ptr, ptr %10, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ImGuiWindow, ptr %579, i32 0, i32 4
  %581 = load i32, ptr %580, align 8, !tbaa !120
  %582 = and i32 %581, 8
  %583 = icmp ne i32 %582, 0
  br i1 %583, label %584, label %601

584:                                              ; preds = %578
  %585 = load ptr, ptr %10, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ImGuiWindow, ptr %585, i32 0, i32 63
  %587 = load i32, ptr %586, align 8
  %588 = shl i32 %587, 16
  %589 = ashr i32 %588, 24
  %590 = and i32 %589, 4
  %591 = icmp eq i32 %590, 0
  br i1 %591, label %592, label %601

592:                                              ; preds = %584
  %593 = load ptr, ptr %10, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiWindow, ptr %593, i32 0, i32 9
  %595 = getelementptr inbounds %struct.ImVec2, ptr %594, i32 0, i32 1
  %596 = load float, ptr %595, align 4, !tbaa !147
  %597 = load ptr, ptr %8, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiContext, ptr %597, i32 0, i32 85
  %599 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %598, i32 0, i32 6
  %600 = getelementptr inbounds %struct.ImVec2, ptr %599, i32 0, i32 1
  store float %596, ptr %600, align 4, !tbaa !145
  br label %601

601:                                              ; preds = %592, %584, %578
  %602 = load ptr, ptr %10, align 8, !tbaa !5
  %603 = load ptr, ptr %8, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.ImGuiContext, ptr %603, i32 0, i32 85
  %605 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %604, i32 0, i32 6
  %606 = load ptr, ptr %8, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiContext, ptr %606, i32 0, i32 85
  %608 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %607, i32 0, i32 2
  %609 = load i32, ptr %608, align 8, !tbaa !143
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %602, ptr noundef nonnull align 4 dereferenceable(8) %605, i32 noundef %609)
  br label %610

610:                                              ; preds = %601, %506
  %611 = load ptr, ptr %8, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ImGuiContext, ptr %611, i32 0, i32 85
  %613 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %612, i32 0, i32 0
  %614 = load i32, ptr %613, align 8, !tbaa !118
  %615 = and i32 %614, 128
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %617, label %656

617:                                              ; preds = %610
  %618 = load ptr, ptr %8, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiContext, ptr %618, i32 0, i32 85
  %620 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %619, i32 0, i32 8
  %621 = getelementptr inbounds %struct.ImVec2, ptr %620, i32 0, i32 0
  %622 = load float, ptr %621, align 8, !tbaa !148
  %623 = fcmp oge float %622, 0.000000e+00
  br i1 %623, label %624, label %636

624:                                              ; preds = %617
  %625 = load ptr, ptr %8, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImGuiContext, ptr %625, i32 0, i32 85
  %627 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %626, i32 0, i32 8
  %628 = getelementptr inbounds %struct.ImVec2, ptr %627, i32 0, i32 0
  %629 = load float, ptr %628, align 8, !tbaa !148
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.ImGuiWindow, ptr %630, i32 0, i32 27
  %632 = getelementptr inbounds %struct.ImVec2, ptr %631, i32 0, i32 0
  store float %629, ptr %632, align 4, !tbaa !149
  %633 = load ptr, ptr %10, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ImGuiWindow, ptr %633, i32 0, i32 28
  %635 = getelementptr inbounds %struct.ImVec2, ptr %634, i32 0, i32 0
  store float 0.000000e+00, ptr %635, align 4, !tbaa !150
  br label %636

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

643:                                              ; preds = %636
  %644 = load ptr, ptr %8, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiContext, ptr %644, i32 0, i32 85
  %646 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %645, i32 0, i32 8
  %647 = getelementptr inbounds %struct.ImVec2, ptr %646, i32 0, i32 1
  %648 = load float, ptr %647, align 4, !tbaa !151
  %649 = load ptr, ptr %10, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiWindow, ptr %649, i32 0, i32 27
  %651 = getelementptr inbounds %struct.ImVec2, ptr %650, i32 0, i32 1
  store float %648, ptr %651, align 4, !tbaa !152
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiWindow, ptr %652, i32 0, i32 28
  %654 = getelementptr inbounds %struct.ImVec2, ptr %653, i32 0, i32 1
  store float 0.000000e+00, ptr %654, align 4, !tbaa !153
  br label %655

655:                                              ; preds = %643, %636
  br label %656

656:                                              ; preds = %655, %610
  %657 = load ptr, ptr %8, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiContext, ptr %657, i32 0, i32 85
  %659 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %658, i32 0, i32 0
  %660 = load i32, ptr %659, align 8, !tbaa !118
  %661 = and i32 %660, 4
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %663, label %669

663:                                              ; preds = %656
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ImGuiContext, ptr %664, i32 0, i32 85
  %666 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %665, i32 0, i32 7
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ImGuiWindow, ptr %667, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %668, ptr align 8 %666, i64 8, i1 false), !tbaa.struct !142
  br label %676

669:                                              ; preds = %656
  %670 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %671 = trunc i8 %670 to i1
  br i1 %671, label %672, label %675

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

675:                                              ; preds = %672, %669
  br label %676

676:                                              ; preds = %675, %663
  %677 = load ptr, ptr %8, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiContext, ptr %677, i32 0, i32 85
  %679 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %678, i32 0, i32 0
  %680 = load i32, ptr %679, align 8, !tbaa !118
  %681 = and i32 %680, 8
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %683, label %694

683:                                              ; preds = %676
  %684 = load ptr, ptr %10, align 8, !tbaa !5
  %685 = load ptr, ptr %8, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiContext, ptr %685, i32 0, i32 85
  %687 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %686, i32 0, i32 10
  %688 = load i8, ptr %687, align 4, !tbaa !154, !range !87, !noundef !88
  %689 = trunc i8 %688 to i1
  %690 = load ptr, ptr %8, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiContext, ptr %690, i32 0, i32 85
  %692 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %691, i32 0, i32 3
  %693 = load i32, ptr %692, align 4, !tbaa !155
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %684, i1 noundef zeroext %689, i32 noundef %693)
  br label %694

694:                                              ; preds = %683, %676
  %695 = load ptr, ptr %8, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 85
  %697 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %696, i32 0, i32 0
  %698 = load i32, ptr %697, align 8, !tbaa !118
  %699 = and i32 %698, 32
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %703

701:                                              ; preds = %694
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %702, i32 noundef 0)
  br label %703

703:                                              ; preds = %701, %694
  %704 = load ptr, ptr %10, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiWindow, ptr %704, i32 0, i32 39
  %706 = load i8, ptr %705, align 4, !tbaa !116, !range !87, !noundef !88
  %707 = trunc i8 %706 to i1
  br i1 %707, label %708, label %710

708:                                              ; preds = %703
  %709 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %709, i32 noundef 8, i1 noundef zeroext false)
  br label %710

710:                                              ; preds = %708, %703
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImGuiContext, ptr %711, i32 0, i32 30
  store ptr null, ptr %712, align 8, !tbaa !131
  %713 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %714 = trunc i8 %713 to i1
  br i1 %714, label %715, label %2761

715:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  %716 = load i32, ptr %7, align 4, !tbaa !9
  %717 = and i32 %716, 16777216
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %723

719:                                              ; preds = %715
  %720 = load i32, ptr %7, align 4, !tbaa !9
  %721 = and i32 %720, 33554432
  %722 = icmp ne i32 %721, 0
  br label %723

723:                                              ; preds = %719, %715
  %724 = phi i1 [ false, %715 ], [ %722, %719 ]
  %725 = zext i1 %724 to i8
  store i8 %725, ptr %24, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #12
  %726 = load ptr, ptr %10, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ImGuiWindow, ptr %726, i32 0, i32 60
  %728 = load i8, ptr %727, align 1, !tbaa !156
  %729 = sext i8 %728 to i32
  %730 = icmp sgt i32 %729, 0
  %731 = zext i1 %730 to i8
  store i8 %731, ptr %25, align 1, !tbaa !91
  %732 = load ptr, ptr %10, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 33
  store i8 1, ptr %733, align 2, !tbaa !157
  %734 = load ptr, ptr %6, align 8, !tbaa !5
  %735 = icmp ne ptr %734, null
  %736 = load ptr, ptr %10, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiWindow, ptr %736, i32 0, i32 43
  %738 = zext i1 %735 to i8
  store i8 %738, ptr %737, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %27)
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiWindow, ptr %739, i32 0, i32 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %740, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !159
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #12
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImGuiWindow, ptr %741, i32 0, i32 67
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %742, i32 noundef 1)
  %743 = load ptr, ptr %10, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiWindow, ptr %743, i32 0, i32 86
  %745 = load ptr, ptr %744, align 8, !tbaa !160
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %745)
  %746 = load ptr, ptr %10, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.ImGuiWindow, ptr %746, i32 0, i32 68
  %748 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %747, i32 0, i32 29
  store i32 -1, ptr %748, align 8, !tbaa !161
  %749 = load ptr, ptr %10, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImGuiWindow, ptr %749, i32 0, i32 102
  %751 = load i8, ptr %750, align 4, !tbaa !162, !range !87, !noundef !88
  %752 = trunc i8 %751 to i1
  br i1 %752, label %753, label %755

753:                                              ; preds = %723
  %754 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %754)
  br label %755

755:                                              ; preds = %753, %723
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #12
  store i8 0, ptr %28, align 1, !tbaa !91
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiContext, ptr %756, i32 0, i32 147
  %758 = load ptr, ptr %757, align 8, !tbaa !163
  %759 = icmp ne ptr %758, null
  br i1 %759, label %760, label %767

760:                                              ; preds = %755
  %761 = load ptr, ptr %10, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.ImGuiWindow, ptr %761, i32 0, i32 3
  %763 = load i32, ptr %762, align 4, !tbaa !117
  %764 = and i32 %763, 131072
  %765 = icmp eq i32 %764, 0
  br i1 %765, label %766, label %767

766:                                              ; preds = %760
  store i8 1, ptr %28, align 1, !tbaa !91
  br label %767

767:                                              ; preds = %766, %760, %755
  %768 = load i8, ptr %28, align 1, !tbaa !91, !range !87, !noundef !88
  %769 = trunc i8 %768 to i1
  br i1 %769, label %770, label %796

770:                                              ; preds = %767
  %771 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %772 = trunc i8 %771 to i1
  br i1 %772, label %796, label %773

773:                                              ; preds = %770
  %774 = load ptr, ptr %5, align 8, !tbaa !5
  %775 = load ptr, ptr %10, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.ImGuiWindow, ptr %775, i32 0, i32 1
  %777 = load ptr, ptr %776, align 8, !tbaa !164
  %778 = call i32 @strcmp(ptr noundef %774, ptr noundef %777) #15
  %779 = icmp ne i32 %778, 0
  br i1 %779, label %780, label %796

780:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #12
  %781 = load ptr, ptr %10, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.ImGuiWindow, ptr %781, i32 0, i32 22
  %783 = load i32, ptr %782, align 8, !tbaa !165
  %784 = sext i32 %783 to i64
  store i64 %784, ptr %29, align 8, !tbaa !166
  %785 = load ptr, ptr %10, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiWindow, ptr %785, i32 0, i32 1
  %787 = load ptr, ptr %786, align 8, !tbaa !164
  %788 = load ptr, ptr %5, align 8, !tbaa !5
  %789 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %787, ptr noundef %29, ptr noundef %788)
  %790 = load ptr, ptr %10, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.ImGuiWindow, ptr %790, i32 0, i32 1
  store ptr %789, ptr %791, align 8, !tbaa !164
  %792 = load i64, ptr %29, align 8, !tbaa !166
  %793 = trunc i64 %792 to i32
  %794 = load ptr, ptr %10, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiWindow, ptr %794, i32 0, i32 22
  store i32 %793, ptr %795, align 8, !tbaa !165
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #12
  br label %796

796:                                              ; preds = %780, %773, %770, %767
  %797 = load ptr, ptr %10, align 8, !tbaa !5
  %798 = load ptr, ptr %10, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiWindow, ptr %798, i32 0, i32 10
  %800 = load ptr, ptr %10, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiWindow, ptr %800, i32 0, i32 11
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %797, ptr noundef %799, ptr noundef %801)
  %802 = load ptr, ptr %10, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.ImGuiWindow, ptr %802, i32 0, i32 59
  %804 = load i8, ptr %803, align 4, !tbaa !168
  %805 = sext i8 %804 to i32
  %806 = icmp sgt i32 %805, 0
  br i1 %806, label %807, label %812

807:                                              ; preds = %796
  %808 = load ptr, ptr %10, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.ImGuiWindow, ptr %808, i32 0, i32 59
  %810 = load i8, ptr %809, align 4, !tbaa !168
  %811 = add i8 %810, -1
  store i8 %811, ptr %809, align 4, !tbaa !168
  br label %812

812:                                              ; preds = %807, %796
  %813 = load ptr, ptr %10, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.ImGuiWindow, ptr %813, i32 0, i32 60
  %815 = load i8, ptr %814, align 1, !tbaa !156
  %816 = sext i8 %815 to i32
  %817 = icmp sgt i32 %816, 0
  br i1 %817, label %818, label %823

818:                                              ; preds = %812
  %819 = load ptr, ptr %10, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImGuiWindow, ptr %819, i32 0, i32 60
  %821 = load i8, ptr %820, align 1, !tbaa !156
  %822 = add i8 %821, -1
  store i8 %822, ptr %820, align 1, !tbaa !156
  br label %823

823:                                              ; preds = %818, %812
  %824 = load ptr, ptr %10, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.ImGuiWindow, ptr %824, i32 0, i32 61
  %826 = load i8, ptr %825, align 2, !tbaa !169
  %827 = sext i8 %826 to i32
  %828 = icmp sgt i32 %827, 0
  br i1 %828, label %829, label %834

829:                                              ; preds = %823
  %830 = load ptr, ptr %10, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiWindow, ptr %830, i32 0, i32 61
  %832 = load i8, ptr %831, align 2, !tbaa !169
  %833 = add i8 %832, -1
  store i8 %833, ptr %831, align 2, !tbaa !169
  br label %834

834:                                              ; preds = %829, %823
  %835 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %836 = trunc i8 %835 to i1
  br i1 %836, label %837, label %846

837:                                              ; preds = %834
  %838 = load i8, ptr %21, align 1, !tbaa !91, !range !87, !noundef !88
  %839 = trunc i8 %838 to i1
  br i1 %839, label %840, label %843

840:                                              ; preds = %837
  %841 = load i8, ptr %22, align 1, !tbaa !91, !range !87, !noundef !88
  %842 = trunc i8 %841 to i1
  br i1 %842, label %846, label %843

843:                                              ; preds = %840, %837
  %844 = load ptr, ptr %10, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.ImGuiWindow, ptr %844, i32 0, i32 60
  store i8 1, ptr %845, align 1, !tbaa !156
  br label %846

846:                                              ; preds = %843, %840, %834
  %847 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %848 = trunc i8 %847 to i1
  br i1 %848, label %849, label %885

849:                                              ; preds = %846
  %850 = load i32, ptr %7, align 4, !tbaa !9
  %851 = and i32 %850, 100663296
  %852 = icmp ne i32 %851, 0
  br i1 %852, label %853, label %885

853:                                              ; preds = %849
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiWindow, ptr %854, i32 0, i32 60
  store i8 1, ptr %855, align 1, !tbaa !156
  %856 = load i32, ptr %7, align 4, !tbaa !9
  %857 = and i32 %856, 64
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %859, label %884

859:                                              ; preds = %853
  %860 = load i8, ptr %21, align 1, !tbaa !91, !range !87, !noundef !88
  %861 = trunc i8 %860 to i1
  br i1 %861, label %869, label %862

862:                                              ; preds = %859
  %863 = load ptr, ptr %10, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImGuiWindow, ptr %863, i32 0, i32 9
  %865 = getelementptr inbounds %struct.ImVec2, ptr %864, i32 0, i32 0
  store float 0.000000e+00, ptr %865, align 8, !tbaa !146
  %866 = load ptr, ptr %10, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.ImGuiWindow, ptr %866, i32 0, i32 8
  %868 = getelementptr inbounds %struct.ImVec2, ptr %867, i32 0, i32 0
  store float 0.000000e+00, ptr %868, align 8, !tbaa !170
  br label %869

869:                                              ; preds = %862, %859
  %870 = load i8, ptr %22, align 1, !tbaa !91, !range !87, !noundef !88
  %871 = trunc i8 %870 to i1
  br i1 %871, label %879, label %872

872:                                              ; preds = %869
  %873 = load ptr, ptr %10, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.ImGuiWindow, ptr %873, i32 0, i32 9
  %875 = getelementptr inbounds %struct.ImVec2, ptr %874, i32 0, i32 1
  store float 0.000000e+00, ptr %875, align 4, !tbaa !147
  %876 = load ptr, ptr %10, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImGuiWindow, ptr %876, i32 0, i32 8
  %878 = getelementptr inbounds %struct.ImVec2, ptr %877, i32 0, i32 1
  store float 0.000000e+00, ptr %878, align 4, !tbaa !171
  br label %879

879:                                              ; preds = %872, %869
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %880 = load ptr, ptr %10, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.ImGuiWindow, ptr %880, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %881, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !142
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.ImGuiWindow, ptr %882, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %883, ptr align 4 %881, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  br label %884

884:                                              ; preds = %879, %853
  br label %885

885:                                              ; preds = %884, %849, %846
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #12
  %886 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  store ptr %886, ptr %31, align 8, !tbaa !5
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %887, ptr noundef %888)
  %889 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %889)
  %890 = load i32, ptr %7, align 4, !tbaa !9
  %891 = and i32 %890, 16777216
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %893, label %899

893:                                              ; preds = %885
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiStyle, ptr %894, i32 0, i32 9
  %896 = load float, ptr %895, align 4, !tbaa !172
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.ImGuiWindow, ptr %897, i32 0, i32 15
  store float %896, ptr %898, align 4, !tbaa !173
  br label %919

899:                                              ; preds = %885
  %900 = load i32, ptr %7, align 4, !tbaa !9
  %901 = and i32 %900, 100663296
  %902 = icmp ne i32 %901, 0
  br i1 %902, label %903, label %911

903:                                              ; preds = %899
  %904 = load i32, ptr %7, align 4, !tbaa !9
  %905 = and i32 %904, 134217728
  %906 = icmp ne i32 %905, 0
  br i1 %906, label %911, label %907

907:                                              ; preds = %903
  %908 = load ptr, ptr %9, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImGuiStyle, ptr %908, i32 0, i32 11
  %910 = load float, ptr %909, align 4, !tbaa !174
  br label %915

911:                                              ; preds = %903, %899
  %912 = load ptr, ptr %9, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.ImGuiStyle, ptr %912, i32 0, i32 4
  %914 = load float, ptr %913, align 4, !tbaa !175
  br label %915

915:                                              ; preds = %911, %907
  %916 = phi float [ %910, %907 ], [ %914, %911 ]
  %917 = load ptr, ptr %10, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.ImGuiWindow, ptr %917, i32 0, i32 15
  store float %916, ptr %918, align 4, !tbaa !173
  br label %919

919:                                              ; preds = %915, %893
  %920 = load ptr, ptr %9, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImGuiStyle, ptr %920, i32 0, i32 2
  %922 = load ptr, ptr %10, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.ImGuiWindow, ptr %922, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %923, ptr align 4 %921, i64 8, i1 false), !tbaa.struct !142
  %924 = load i32, ptr %7, align 4, !tbaa !9
  %925 = and i32 %924, 16777216
  %926 = icmp ne i32 %925, 0
  br i1 %926, label %927, label %956

927:                                              ; preds = %919
  %928 = load i32, ptr %7, align 4, !tbaa !9
  %929 = and i32 %928, 67108864
  %930 = icmp ne i32 %929, 0
  br i1 %930, label %956, label %931

931:                                              ; preds = %927
  %932 = load ptr, ptr %10, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImGuiWindow, ptr %932, i32 0, i32 4
  %934 = load i32, ptr %933, align 8, !tbaa !120
  %935 = and i32 %934, 2
  %936 = icmp ne i32 %935, 0
  br i1 %936, label %956, label %937

937:                                              ; preds = %931
  %938 = load ptr, ptr %10, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ImGuiWindow, ptr %938, i32 0, i32 15
  %940 = load float, ptr %939, align 4, !tbaa !173
  %941 = fcmp oeq float %940, 0.000000e+00
  br i1 %941, label %942, label %956

942:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #12
  %943 = load i32, ptr %7, align 4, !tbaa !9
  %944 = and i32 %943, 1024
  %945 = icmp ne i32 %944, 0
  br i1 %945, label %946, label %951

946:                                              ; preds = %942
  %947 = load ptr, ptr %9, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiStyle, ptr %947, i32 0, i32 2
  %949 = getelementptr inbounds %struct.ImVec2, ptr %948, i32 0, i32 1
  %950 = load float, ptr %949, align 4, !tbaa !176
  br label %952

951:                                              ; preds = %942
  br label %952

952:                                              ; preds = %951, %946
  %953 = phi float [ %950, %946 ], [ 0.000000e+00, %951 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %953)
  %954 = load ptr, ptr %10, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiWindow, ptr %954, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %955, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #12
  br label %956

956:                                              ; preds = %952, %937, %931, %927, %919
  %957 = load ptr, ptr %10, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImGuiWindow, ptr %957, i32 0, i32 13
  %959 = getelementptr inbounds %struct.ImVec2, ptr %958, i32 0, i32 0
  %960 = load float, ptr %959, align 8, !tbaa !177
  %961 = load ptr, ptr %9, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiStyle, ptr %961, i32 0, i32 15
  %963 = getelementptr inbounds %struct.ImVec2, ptr %962, i32 0, i32 0
  %964 = load float, ptr %963, align 4, !tbaa !178
  %965 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %960, float noundef %964)
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiContext, ptr %966, i32 0, i32 85
  %968 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %967, i32 0, i32 16
  %969 = getelementptr inbounds %struct.ImVec2, ptr %968, i32 0, i32 0
  %970 = load float, ptr %969, align 4, !tbaa !179
  %971 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %965, float noundef %970)
  %972 = load ptr, ptr %10, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.ImGuiWindow, ptr %972, i32 0, i32 68
  %974 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %973, i32 0, i32 22
  %975 = getelementptr inbounds %struct.ImVec2, ptr %974, i32 0, i32 0
  store float %971, ptr %975, align 4, !tbaa !180
  %976 = load ptr, ptr %8, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ImGuiContext, ptr %976, i32 0, i32 85
  %978 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %977, i32 0, i32 16
  %979 = getelementptr inbounds %struct.ImVec2, ptr %978, i32 0, i32 1
  %980 = load float, ptr %979, align 4, !tbaa !181
  %981 = load ptr, ptr %10, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiWindow, ptr %981, i32 0, i32 68
  %983 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %982, i32 0, i32 22
  %984 = getelementptr inbounds %struct.ImVec2, ptr %983, i32 0, i32 1
  store float %980, ptr %984, align 4, !tbaa !182
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  %985 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %986 = trunc i8 %985 to i1
  %987 = zext i1 %986 to i8
  store i8 %987, ptr %33, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #12
  %988 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %989 = trunc i8 %988 to i1
  %990 = zext i1 %989 to i8
  store i8 %990, ptr %34, align 1, !tbaa !91
  %991 = load i32, ptr %7, align 4, !tbaa !9
  %992 = and i32 %991, 1
  %993 = icmp ne i32 %992, 0
  br i1 %993, label %1057, label %994

994:                                              ; preds = %956
  %995 = load i32, ptr %7, align 4, !tbaa !9
  %996 = and i32 %995, 32
  %997 = icmp ne i32 %996, 0
  br i1 %997, label %1057, label %998

998:                                              ; preds = %994
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #12
  %999 = load ptr, ptr %10, align 8, !tbaa !5
  %1000 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %999)
  %1001 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 0
  %1002 = extractvalue { <2 x float>, <2 x float> } %1000, 0
  store <2 x float> %1002, ptr %1001, align 4
  %1003 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 1
  %1004 = extractvalue { <2 x float>, <2 x float> } %1000, 1
  store <2 x float> %1004, ptr %1003, align 4
  %1005 = load ptr, ptr %8, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.ImGuiContext, ptr %1005, i32 0, i32 31
  %1007 = load ptr, ptr %1006, align 8, !tbaa !183
  %1008 = load ptr, ptr %10, align 8, !tbaa !5
  %1009 = icmp eq ptr %1007, %1008
  br i1 %1009, label %1010, label %1035

1010:                                             ; preds = %998
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiContext, ptr %1011, i32 0, i32 42
  %1013 = load i32, ptr %1012, align 8, !tbaa !184
  %1014 = icmp eq i32 %1013, 0
  br i1 %1014, label %1015, label %1035

1015:                                             ; preds = %1010
  %1016 = load ptr, ptr %8, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiContext, ptr %1016, i32 0, i32 43
  %1018 = load i32, ptr %1017, align 4, !tbaa !185
  %1019 = icmp eq i32 %1018, 0
  br i1 %1019, label %1020, label %1035

1020:                                             ; preds = %1015
  %1021 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 0
  %1022 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 1
  %1023 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1021, ptr noundef nonnull align 4 dereferenceable(8) %1022, i1 noundef zeroext true)
  br i1 %1023, label %1024, label %1035

1024:                                             ; preds = %1020
  %1025 = load ptr, ptr %8, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.ImGuiContext, ptr %1025, i32 0, i32 2
  %1027 = getelementptr inbounds %struct.ImGuiIO, ptr %1026, i32 0, i32 76
  %1028 = getelementptr inbounds [5 x i16], ptr %1027, i64 0, i64 0
  %1029 = load i16, ptr %1028, align 2, !tbaa !186
  %1030 = zext i16 %1029 to i32
  %1031 = icmp eq i32 %1030, 2
  br i1 %1031, label %1032, label %1035

1032:                                             ; preds = %1024
  %1033 = load ptr, ptr %10, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImGuiWindow, ptr %1033, i32 0, i32 37
  store i8 1, ptr %1034, align 2, !tbaa !187
  br label %1035

1035:                                             ; preds = %1032, %1024, %1020, %1015, %1010, %998
  %1036 = load ptr, ptr %10, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiWindow, ptr %1036, i32 0, i32 37
  %1038 = load i8, ptr %1037, align 2, !tbaa !187, !range !87, !noundef !88
  %1039 = trunc i8 %1038 to i1
  br i1 %1039, label %1040, label %1056

1040:                                             ; preds = %1035
  %1041 = load ptr, ptr %10, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.ImGuiWindow, ptr %1041, i32 0, i32 36
  %1043 = load i8, ptr %1042, align 1, !tbaa !188, !range !87, !noundef !88
  %1044 = trunc i8 %1043 to i1
  %1045 = xor i1 %1044, true
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ImGuiWindow, ptr %1046, i32 0, i32 36
  %1048 = zext i1 %1045 to i8
  store i8 %1048, ptr %1047, align 1, !tbaa !188
  %1049 = load ptr, ptr %10, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiWindow, ptr %1049, i32 0, i32 36
  %1051 = load i8, ptr %1050, align 1, !tbaa !188, !range !87, !noundef !88
  %1052 = trunc i8 %1051 to i1
  br i1 %1052, label %1054, label %1053

1053:                                             ; preds = %1040
  store i8 1, ptr %34, align 1, !tbaa !91
  br label %1054

1054:                                             ; preds = %1053, %1040
  %1055 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1055)
  br label %1056

1056:                                             ; preds = %1054, %1035
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #12
  br label %1060

1057:                                             ; preds = %994, %956
  %1058 = load ptr, ptr %10, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiWindow, ptr %1058, i32 0, i32 36
  store i8 0, ptr %1059, align 1, !tbaa !188
  br label %1060

1060:                                             ; preds = %1057, %1056
  %1061 = load ptr, ptr %10, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.ImGuiWindow, ptr %1061, i32 0, i32 37
  store i8 0, ptr %1062, align 2, !tbaa !187
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %1063 = load ptr, ptr %10, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiWindow, ptr %1063, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %1064, i64 8, i1 false), !tbaa.struct !142
  %1065 = load ptr, ptr %10, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiWindow, ptr %1065, i32 0, i32 16
  store float 0.000000e+00, ptr %1066, align 8, !tbaa !189
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiWindow, ptr %1067, i32 0, i32 18
  store float 0.000000e+00, ptr %1068, align 8, !tbaa !190
  %1069 = load ptr, ptr %10, align 8, !tbaa !5
  %1070 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1021) %1069)
  %1071 = load ptr, ptr %10, align 8, !tbaa !5
  %1072 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1021) %1071)
  %1073 = fadd float %1070, %1072
  %1074 = load ptr, ptr %10, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.ImGuiWindow, ptr %1074, i32 0, i32 17
  store float %1073, ptr %1075, align 4, !tbaa !191
  %1076 = load ptr, ptr %10, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiWindow, ptr %1076, i32 0, i32 19
  store float 0.000000e+00, ptr %1077, align 4, !tbaa !192
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiWindow, ptr %1078, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1079, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #12
  %1080 = load ptr, ptr %10, align 8, !tbaa !5
  %1081 = load ptr, ptr %10, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImGuiWindow, ptr %1081, i32 0, i32 11
  %1083 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1080, ptr noundef nonnull align 4 dereferenceable(8) %1082)
  store <2 x float> %1083, ptr %38, align 4
  %1084 = load i32, ptr %7, align 4, !tbaa !9
  %1085 = and i32 %1084, 64
  %1086 = icmp ne i32 %1085, 0
  br i1 %1086, label %1087, label %1111

1087:                                             ; preds = %1060
  %1088 = load ptr, ptr %10, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiWindow, ptr %1088, i32 0, i32 36
  %1090 = load i8, ptr %1089, align 1, !tbaa !188, !range !87, !noundef !88
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1111, label %1092

1092:                                             ; preds = %1087
  %1093 = load i8, ptr %21, align 1, !tbaa !91, !range !87, !noundef !88
  %1094 = trunc i8 %1093 to i1
  br i1 %1094, label %1101, label %1095

1095:                                             ; preds = %1092
  %1096 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1097 = load float, ptr %1096, align 4, !tbaa !193
  %1098 = load ptr, ptr %10, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.ImGuiWindow, ptr %1098, i32 0, i32 9
  %1100 = getelementptr inbounds %struct.ImVec2, ptr %1099, i32 0, i32 0
  store float %1097, ptr %1100, align 8, !tbaa !146
  store i8 1, ptr %33, align 1, !tbaa !91
  br label %1101

1101:                                             ; preds = %1095, %1092
  %1102 = load i8, ptr %22, align 1, !tbaa !91, !range !87, !noundef !88
  %1103 = trunc i8 %1102 to i1
  br i1 %1103, label %1110, label %1104

1104:                                             ; preds = %1101
  %1105 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1106 = load float, ptr %1105, align 4, !tbaa !194
  %1107 = load ptr, ptr %10, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.ImGuiWindow, ptr %1107, i32 0, i32 9
  %1109 = getelementptr inbounds %struct.ImVec2, ptr %1108, i32 0, i32 1
  store float %1106, ptr %1109, align 4, !tbaa !147
  store i8 1, ptr %34, align 1, !tbaa !91
  br label %1110

1110:                                             ; preds = %1104, %1101
  br label %1192

1111:                                             ; preds = %1087, %1060
  %1112 = load ptr, ptr %10, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiWindow, ptr %1112, i32 0, i32 54
  %1114 = load i8, ptr %1113, align 4, !tbaa !195
  %1115 = sext i8 %1114 to i32
  %1116 = icmp sgt i32 %1115, 0
  br i1 %1116, label %1123, label %1117

1117:                                             ; preds = %1111
  %1118 = load ptr, ptr %10, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.ImGuiWindow, ptr %1118, i32 0, i32 55
  %1120 = load i8, ptr %1119, align 1, !tbaa !196
  %1121 = sext i8 %1120 to i32
  %1122 = icmp sgt i32 %1121, 0
  br i1 %1122, label %1123, label %1191

1123:                                             ; preds = %1117, %1111
  %1124 = load i8, ptr %21, align 1, !tbaa !91, !range !87, !noundef !88
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1153, label %1126

1126:                                             ; preds = %1123
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiWindow, ptr %1127, i32 0, i32 54
  %1129 = load i8, ptr %1128, align 4, !tbaa !195
  %1130 = sext i8 %1129 to i32
  %1131 = icmp sgt i32 %1130, 0
  br i1 %1131, label %1132, label %1153

1132:                                             ; preds = %1126
  %1133 = load ptr, ptr %10, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiWindow, ptr %1133, i32 0, i32 56
  %1135 = load i8, ptr %1134, align 2, !tbaa !197, !range !87, !noundef !88
  %1136 = trunc i8 %1135 to i1
  br i1 %1136, label %1137, label %1145

1137:                                             ; preds = %1132
  %1138 = load ptr, ptr %10, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiWindow, ptr %1138, i32 0, i32 9
  %1140 = getelementptr inbounds %struct.ImVec2, ptr %1139, i32 0, i32 0
  %1141 = load float, ptr %1140, align 8, !tbaa !146
  %1142 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1143 = load float, ptr %1142, align 4, !tbaa !193
  %1144 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1141, float noundef %1143)
  br label %1148

1145:                                             ; preds = %1132
  %1146 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1147 = load float, ptr %1146, align 4, !tbaa !193
  br label %1148

1148:                                             ; preds = %1145, %1137
  %1149 = phi float [ %1144, %1137 ], [ %1147, %1145 ]
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 9
  %1152 = getelementptr inbounds %struct.ImVec2, ptr %1151, i32 0, i32 0
  store float %1149, ptr %1152, align 8, !tbaa !146
  store i8 1, ptr %33, align 1, !tbaa !91
  br label %1153

1153:                                             ; preds = %1148, %1126, %1123
  %1154 = load i8, ptr %22, align 1, !tbaa !91, !range !87, !noundef !88
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1183, label %1156

1156:                                             ; preds = %1153
  %1157 = load ptr, ptr %10, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiWindow, ptr %1157, i32 0, i32 55
  %1159 = load i8, ptr %1158, align 1, !tbaa !196
  %1160 = sext i8 %1159 to i32
  %1161 = icmp sgt i32 %1160, 0
  br i1 %1161, label %1162, label %1183

1162:                                             ; preds = %1156
  %1163 = load ptr, ptr %10, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImGuiWindow, ptr %1163, i32 0, i32 56
  %1165 = load i8, ptr %1164, align 2, !tbaa !197, !range !87, !noundef !88
  %1166 = trunc i8 %1165 to i1
  br i1 %1166, label %1167, label %1175

1167:                                             ; preds = %1162
  %1168 = load ptr, ptr %10, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiWindow, ptr %1168, i32 0, i32 9
  %1170 = getelementptr inbounds %struct.ImVec2, ptr %1169, i32 0, i32 1
  %1171 = load float, ptr %1170, align 4, !tbaa !147
  %1172 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1173 = load float, ptr %1172, align 4, !tbaa !194
  %1174 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1171, float noundef %1173)
  br label %1178

1175:                                             ; preds = %1162
  %1176 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1177 = load float, ptr %1176, align 4, !tbaa !194
  br label %1178

1178:                                             ; preds = %1175, %1167
  %1179 = phi float [ %1174, %1167 ], [ %1177, %1175 ]
  %1180 = load ptr, ptr %10, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.ImGuiWindow, ptr %1180, i32 0, i32 9
  %1182 = getelementptr inbounds %struct.ImVec2, ptr %1181, i32 0, i32 1
  store float %1179, ptr %1182, align 4, !tbaa !147
  store i8 1, ptr %34, align 1, !tbaa !91
  br label %1183

1183:                                             ; preds = %1178, %1156, %1153
  %1184 = load ptr, ptr %10, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.ImGuiWindow, ptr %1184, i32 0, i32 36
  %1186 = load i8, ptr %1185, align 1, !tbaa !188, !range !87, !noundef !88
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1190, label %1188

1188:                                             ; preds = %1183
  %1189 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1189)
  br label %1190

1190:                                             ; preds = %1188, %1183
  br label %1191

1191:                                             ; preds = %1190, %1117
  br label %1192

1192:                                             ; preds = %1191, %1110
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  %1194 = load ptr, ptr %10, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiWindow, ptr %1194, i32 0, i32 9
  %1196 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1193, ptr noundef nonnull align 4 dereferenceable(8) %1195)
  store <2 x float> %1196, ptr %39, align 4
  %1197 = load ptr, ptr %10, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ImGuiWindow, ptr %1197, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1198, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %1199 = load ptr, ptr %10, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.ImGuiWindow, ptr %1199, i32 0, i32 36
  %1201 = load i8, ptr %1200, align 1, !tbaa !188, !range !87, !noundef !88
  %1202 = trunc i8 %1201 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #12
  br i1 %1202, label %1203, label %1215

1203:                                             ; preds = %1192
  %1204 = load i32, ptr %7, align 4, !tbaa !9
  %1205 = and i32 %1204, 16777216
  %1206 = icmp ne i32 %1205, 0
  br i1 %1206, label %1215, label %1207

1207:                                             ; preds = %1203
  %1208 = load ptr, ptr %10, align 8, !tbaa !5
  %1209 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %1208)
  %1210 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 0
  %1211 = extractvalue { <2 x float>, <2 x float> } %1209, 0
  store <2 x float> %1211, ptr %1210, align 4
  %1212 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 1
  %1213 = extractvalue { <2 x float>, <2 x float> } %1209, 1
  store <2 x float> %1213, ptr %1212, align 4
  %1214 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %1214, ptr %40, align 4
  br label %1218

1215:                                             ; preds = %1203, %1192
  %1216 = load ptr, ptr %10, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiWindow, ptr %1216, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1217, i64 8, i1 false), !tbaa.struct !142
  br label %1218

1218:                                             ; preds = %1215, %1207
  %1219 = load ptr, ptr %10, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.ImGuiWindow, ptr %1219, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1220, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  %1221 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1223, label %1244

1223:                                             ; preds = %1218
  %1224 = load ptr, ptr %10, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiWindow, ptr %1224, i32 0, i32 58
  store i32 -1, ptr %1225, align 8, !tbaa !198
  %1226 = load i32, ptr %7, align 4, !tbaa !9
  %1227 = and i32 %1226, 67108864
  %1228 = icmp ne i32 %1227, 0
  br i1 %1228, label %1229, label %1243

1229:                                             ; preds = %1223
  %1230 = load i32, ptr %7, align 4, !tbaa !9
  %1231 = and i32 %1230, 134217728
  %1232 = icmp ne i32 %1231, 0
  br i1 %1232, label %1243, label %1233

1233:                                             ; preds = %1229
  %1234 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1243, label %1236

1236:                                             ; preds = %1233
  %1237 = load ptr, ptr %8, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ImGuiContext, ptr %1237, i32 0, i32 95
  %1239 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1238)
  %1240 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1239, i32 0, i32 7
  %1241 = load ptr, ptr %10, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.ImGuiWindow, ptr %1241, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1242, ptr align 4 %1240, i64 8, i1 false), !tbaa.struct !142
  br label %1243

1243:                                             ; preds = %1236, %1233, %1229, %1223
  br label %1244

1244:                                             ; preds = %1243, %1218
  %1245 = load i32, ptr %7, align 4, !tbaa !9
  %1246 = and i32 %1245, 16777216
  %1247 = icmp ne i32 %1246, 0
  br i1 %1247, label %1248, label %1289

1248:                                             ; preds = %1244
  %1249 = load ptr, ptr %17, align 8, !tbaa !5
  %1250 = icmp ne ptr %1249, null
  br i1 %1250, label %1251, label %1256

1251:                                             ; preds = %1248
  %1252 = load ptr, ptr %17, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiWindow, ptr %1252, i32 0, i32 33
  %1254 = load i8, ptr %1253, align 2, !tbaa !157, !range !87, !noundef !88
  %1255 = trunc i8 %1254 to i1
  br label %1256

1256:                                             ; preds = %1251, %1248
  %1257 = phi i1 [ false, %1248 ], [ %1255, %1251 ]
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1256
  br label %1261

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

1260:                                             ; No predecessors!
  br label %1261

1261:                                             ; preds = %1260, %1258
  %1262 = load ptr, ptr %17, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiWindow, ptr %1262, i32 0, i32 68
  %1264 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1263, i32 0, i32 26
  %1265 = getelementptr inbounds %struct.ImVector.2, ptr %1264, i32 0, i32 0
  %1266 = load i32, ptr %1265, align 8, !tbaa !199
  %1267 = trunc i32 %1266 to i16
  %1268 = load ptr, ptr %10, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiWindow, ptr %1268, i32 0, i32 49
  store i16 %1267, ptr %1269, align 8, !tbaa !123
  %1270 = load ptr, ptr %17, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ImGuiWindow, ptr %1270, i32 0, i32 68
  %1272 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1271, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1272, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1273 = load i32, ptr %7, align 4, !tbaa !9
  %1274 = and i32 %1273, 67108864
  %1275 = icmp ne i32 %1274, 0
  br i1 %1275, label %1288, label %1276

1276:                                             ; preds = %1261
  %1277 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %1278 = trunc i8 %1277 to i1
  br i1 %1278, label %1288, label %1279

1279:                                             ; preds = %1276
  %1280 = load i8, ptr %24, align 1, !tbaa !91, !range !87, !noundef !88
  %1281 = trunc i8 %1280 to i1
  br i1 %1281, label %1288, label %1282

1282:                                             ; preds = %1279
  %1283 = load ptr, ptr %17, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ImGuiWindow, ptr %1283, i32 0, i32 68
  %1285 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1284, i32 0, i32 0
  %1286 = load ptr, ptr %10, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ImGuiWindow, ptr %1286, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1287, ptr align 8 %1285, i64 8, i1 false), !tbaa.struct !142
  br label %1288

1288:                                             ; preds = %1282, %1279, %1276, %1261
  br label %1289

1289:                                             ; preds = %1288, %1244
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #12
  %1290 = load ptr, ptr %10, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiWindow, ptr %1290, i32 0, i32 64
  %1292 = getelementptr inbounds %struct.ImVec2, ptr %1291, i32 0, i32 0
  %1293 = load float, ptr %1292, align 4, !tbaa !200
  %1294 = fcmp une float %1293, 0x47EFFFFFE0000000
  br i1 %1294, label %1295, label %1301

1295:                                             ; preds = %1289
  %1296 = load ptr, ptr %10, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.ImGuiWindow, ptr %1296, i32 0, i32 60
  %1298 = load i8, ptr %1297, align 1, !tbaa !156
  %1299 = sext i8 %1298 to i32
  %1300 = icmp eq i32 %1299, 0
  br label %1301

1301:                                             ; preds = %1295, %1289
  %1302 = phi i1 [ false, %1289 ], [ %1300, %1295 ]
  %1303 = zext i1 %1302 to i8
  store i8 %1303, ptr %42, align 1, !tbaa !91
  %1304 = load i8, ptr %42, align 1, !tbaa !91, !range !87, !noundef !88
  %1305 = trunc i8 %1304 to i1
  br i1 %1305, label %1306, label %1316

1306:                                             ; preds = %1301
  %1307 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %1308 = load ptr, ptr %10, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.ImGuiWindow, ptr %1308, i32 0, i32 64
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %1310 = load ptr, ptr %10, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ImGuiWindow, ptr %1310, i32 0, i32 8
  %1312 = load ptr, ptr %10, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.ImGuiWindow, ptr %1312, i32 0, i32 65
  %1314 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1311, ptr noundef nonnull align 4 dereferenceable(8) %1313)
  store <2 x float> %1314, ptr %44, align 4
  %1315 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1309, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1315, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1307, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  br label %1358

1316:                                             ; preds = %1301
  %1317 = load i32, ptr %7, align 4, !tbaa !9
  %1318 = and i32 %1317, 268435456
  %1319 = icmp ne i32 %1318, 0
  br i1 %1319, label %1320, label %1325

1320:                                             ; preds = %1316
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  %1321 = load ptr, ptr %10, align 8, !tbaa !5
  %1322 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1321)
  store <2 x float> %1322, ptr %45, align 4
  %1323 = load ptr, ptr %10, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiWindow, ptr %1323, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1324, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %1357

1325:                                             ; preds = %1316
  %1326 = load i32, ptr %7, align 4, !tbaa !9
  %1327 = and i32 %1326, 67108864
  %1328 = icmp ne i32 %1327, 0
  br i1 %1328, label %1329, label %1340

1329:                                             ; preds = %1325
  %1330 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %1331 = trunc i8 %1330 to i1
  br i1 %1331, label %1340, label %1332

1332:                                             ; preds = %1329
  %1333 = load i8, ptr %25, align 1, !tbaa !91, !range !87, !noundef !88
  %1334 = trunc i8 %1333 to i1
  br i1 %1334, label %1335, label %1340

1335:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #12
  %1336 = load ptr, ptr %10, align 8, !tbaa !5
  %1337 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1336)
  store <2 x float> %1337, ptr %46, align 4
  %1338 = load ptr, ptr %10, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.ImGuiWindow, ptr %1338, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1339, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %1356

1340:                                             ; preds = %1332, %1329, %1325
  %1341 = load i32, ptr %7, align 4, !tbaa !9
  %1342 = and i32 %1341, 33554432
  %1343 = icmp ne i32 %1342, 0
  br i1 %1343, label %1344, label %1355

1344:                                             ; preds = %1340
  %1345 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %1346 = trunc i8 %1345 to i1
  br i1 %1346, label %1355, label %1347

1347:                                             ; preds = %1344
  %1348 = load i8, ptr %24, align 1, !tbaa !91, !range !87, !noundef !88
  %1349 = trunc i8 %1348 to i1
  br i1 %1349, label %1355, label %1350

1350:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %1351 = load ptr, ptr %10, align 8, !tbaa !5
  %1352 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1351)
  store <2 x float> %1352, ptr %47, align 4
  %1353 = load ptr, ptr %10, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.ImGuiWindow, ptr %1353, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1354, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1355

1355:                                             ; preds = %1350, %1347, %1344, %1340
  br label %1356

1356:                                             ; preds = %1355, %1335
  br label %1357

1357:                                             ; preds = %1356, %1320
  br label %1358

1358:                                             ; preds = %1357, %1306
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #12
  %1359 = load ptr, ptr %31, align 8, !tbaa !5
  %1360 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(200) %1359)
  %1361 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1362 = extractvalue { <2 x float>, <2 x float> } %1360, 0
  store <2 x float> %1362, ptr %1361, align 4
  %1363 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1364 = extractvalue { <2 x float>, <2 x float> } %1360, 1
  store <2 x float> %1364, ptr %1363, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #12
  %1365 = load ptr, ptr %31, align 8, !tbaa !5
  %1366 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(200) %1365)
  %1367 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 0
  %1368 = extractvalue { <2 x float>, <2 x float> } %1366, 0
  store <2 x float> %1368, ptr %1367, align 4
  %1369 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 1
  %1370 = extractvalue { <2 x float>, <2 x float> } %1366, 1
  store <2 x float> %1370, ptr %1369, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %1371 = load ptr, ptr %9, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.ImGuiStyle, ptr %1371, i32 0, i32 37
  %1373 = load ptr, ptr %9, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.ImGuiStyle, ptr %1373, i32 0, i32 38
  %1375 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1372, ptr noundef nonnull align 4 dereferenceable(8) %1374)
  store <2 x float> %1375, ptr %50, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #12
  %1376 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 0
  %1377 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1376, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1377, ptr %52, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #12
  %1378 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 1
  %1379 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1378, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1379, ptr %53, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %51, ptr noundef nonnull align 4 dereferenceable(8) %52, ptr noundef nonnull align 4 dereferenceable(8) %53)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  %1380 = load i8, ptr %20, align 1, !tbaa !91, !range !87, !noundef !88
  %1381 = trunc i8 %1380 to i1
  br i1 %1381, label %1395, label %1382

1382:                                             ; preds = %1358
  %1383 = load i32, ptr %7, align 4, !tbaa !9
  %1384 = and i32 %1383, 16777216
  %1385 = icmp ne i32 %1384, 0
  br i1 %1385, label %1395, label %1386

1386:                                             ; preds = %1382
  %1387 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1388 = fcmp ogt float %1387, 0.000000e+00
  br i1 %1388, label %1389, label %1394

1389:                                             ; preds = %1386
  %1390 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1391 = fcmp ogt float %1390, 0.000000e+00
  br i1 %1391, label %1392, label %1394

1392:                                             ; preds = %1389
  %1393 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1393, ptr noundef nonnull align 4 dereferenceable(16) %51)
  br label %1394

1394:                                             ; preds = %1392, %1389, %1386
  br label %1395

1395:                                             ; preds = %1394, %1382, %1358
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #12
  %1396 = load ptr, ptr %10, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.ImGuiWindow, ptr %1396, i32 0, i32 7
  %1398 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1397)
  store <2 x float> %1398, ptr %54, align 4
  %1399 = load ptr, ptr %10, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiWindow, ptr %1399, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1400, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #12
  %1401 = load i32, ptr %7, align 4, !tbaa !9
  %1402 = and i32 %1401, 16777216
  %1403 = icmp ne i32 %1402, 0
  br i1 %1403, label %1404, label %1408

1404:                                             ; preds = %1395
  %1405 = load ptr, ptr %9, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.ImGuiStyle, ptr %1405, i32 0, i32 8
  %1407 = load float, ptr %1406, align 4, !tbaa !201
  br label %1426

1408:                                             ; preds = %1395
  %1409 = load i32, ptr %7, align 4, !tbaa !9
  %1410 = and i32 %1409, 67108864
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1420

1412:                                             ; preds = %1408
  %1413 = load i32, ptr %7, align 4, !tbaa !9
  %1414 = and i32 %1413, 134217728
  %1415 = icmp ne i32 %1414, 0
  br i1 %1415, label %1420, label %1416

1416:                                             ; preds = %1412
  %1417 = load ptr, ptr %9, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ImGuiStyle, ptr %1417, i32 0, i32 10
  %1419 = load float, ptr %1418, align 4, !tbaa !202
  br label %1424

1420:                                             ; preds = %1412, %1408
  %1421 = load ptr, ptr %9, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.ImGuiStyle, ptr %1421, i32 0, i32 3
  %1423 = load float, ptr %1422, align 4, !tbaa !203
  br label %1424

1424:                                             ; preds = %1420, %1416
  %1425 = phi float [ %1419, %1416 ], [ %1423, %1420 ]
  br label %1426

1426:                                             ; preds = %1424, %1404
  %1427 = phi float [ %1407, %1404 ], [ %1425, %1424 ]
  %1428 = load ptr, ptr %10, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.ImGuiWindow, ptr %1428, i32 0, i32 14
  store float %1427, ptr %1429, align 8, !tbaa !204
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #12
  store i8 0, ptr %55, align 1, !tbaa !91
  %1430 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %1431 = trunc i8 %1430 to i1
  br i1 %1431, label %1432, label %1448

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

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

1440:                                             ; preds = %1436
  store i8 1, ptr %55, align 1, !tbaa !91
  br label %1447

1441:                                             ; preds = %1436
  %1442 = load i32, ptr %7, align 4, !tbaa !9
  %1443 = and i32 %1442, 50331648
  %1444 = icmp eq i32 %1443, 0
  br i1 %1444, label %1445, label %1446

1445:                                             ; preds = %1441
  store i8 1, ptr %55, align 1, !tbaa !91
  br label %1446

1446:                                             ; preds = %1445, %1441
  br label %1447

1447:                                             ; preds = %1446, %1440
  br label %1448

1448:                                             ; preds = %1447, %1432, %1426
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #12
  store i32 -1, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #12
  store i32 -1, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #12
  call void @llvm.memset.p0.i64(ptr align 16 %58, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  %1449 = load i32, ptr %7, align 4, !tbaa !9
  %1450 = and i32 %1449, 16777216
  %1451 = icmp ne i32 %1450, 0
  br i1 %1451, label %1452, label %1457

1452:                                             ; preds = %1448
  %1453 = load i32, ptr %7, align 4, !tbaa !9
  %1454 = and i32 %1453, 67108864
  %1455 = icmp ne i32 %1454, 0
  br i1 %1455, label %1457, label %1456

1456:                                             ; preds = %1452
  br label %1465

1457:                                             ; preds = %1452, %1448
  %1458 = load ptr, ptr %8, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.ImGuiContext, ptr %1458, i32 0, i32 2
  %1460 = getelementptr inbounds %struct.ImGuiIO, ptr %1459, i32 0, i32 19
  %1461 = load i8, ptr %1460, align 2, !tbaa !205, !range !87, !noundef !88
  %1462 = trunc i8 %1461 to i1
  %1463 = zext i1 %1462 to i64
  %1464 = select i1 %1462, i32 2, i32 1
  br label %1465

1465:                                             ; preds = %1457, %1456
  %1466 = phi i32 [ 0, %1456 ], [ %1464, %1457 ]
  store i32 %1466, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  %1467 = load ptr, ptr %8, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.ImGuiContext, ptr %1467, i32 0, i32 5
  %1469 = load float, ptr %1468, align 8, !tbaa !206
  %1470 = fmul float %1469, 0x3FF19999A0000000
  %1471 = load ptr, ptr %10, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.ImGuiWindow, ptr %1471, i32 0, i32 14
  %1473 = load float, ptr %1472, align 8, !tbaa !204
  %1474 = fadd float %1473, 1.000000e+00
  %1475 = load ptr, ptr %8, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.ImGuiContext, ptr %1475, i32 0, i32 5
  %1477 = load float, ptr %1476, align 8, !tbaa !206
  %1478 = call float @llvm.fmuladd.f32(float %1477, float 0x3FC99999A0000000, float %1474)
  %1479 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1470, float noundef %1478)
  %1480 = fptosi float %1479 to i32
  %1481 = sitofp i32 %1480 to float
  store float %1481, ptr %60, align 4, !tbaa !133
  %1482 = load ptr, ptr %10, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.ImGuiWindow, ptr %1482, i32 0, i32 36
  %1484 = load i8, ptr %1483, align 1, !tbaa !188, !range !87, !noundef !88
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1505, label %1486

1486:                                             ; preds = %1465
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #12
  %1487 = load ptr, ptr %10, align 8, !tbaa !5
  %1488 = load i32, ptr %59, align 4, !tbaa !9
  %1489 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %1490 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %1487, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef %56, ptr noundef %57, i32 noundef %1488, ptr noundef %1489, ptr noundef nonnull align 4 dereferenceable(16) %51)
  store i32 %1490, ptr %61, align 4, !tbaa !9
  %1491 = load i32, ptr %61, align 4, !tbaa !9
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1504

1493:                                             ; preds = %1486
  %1494 = load i32, ptr %61, align 4, !tbaa !9
  %1495 = and i32 %1494, 1
  %1496 = icmp ne i32 %1495, 0
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1493
  store i8 1, ptr %33, align 1, !tbaa !91
  br label %1498

1498:                                             ; preds = %1497, %1493
  %1499 = load i32, ptr %61, align 4, !tbaa !9
  %1500 = and i32 %1499, 2
  %1501 = icmp ne i32 %1500, 0
  br i1 %1501, label %1502, label %1503

1502:                                             ; preds = %1498
  store i8 1, ptr %34, align 1, !tbaa !91
  br label %1503

1503:                                             ; preds = %1502, %1498
  br label %1504

1504:                                             ; preds = %1503, %1486
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #12
  br label %1505

1505:                                             ; preds = %1504, %1465
  %1506 = load i32, ptr %56, align 4, !tbaa !9
  %1507 = trunc i32 %1506 to i8
  %1508 = load ptr, ptr %10, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.ImGuiWindow, ptr %1508, i32 0, i32 44
  store i8 %1507, ptr %1509, align 1, !tbaa !207
  %1510 = load i32, ptr %57, align 4, !tbaa !9
  %1511 = trunc i32 %1510 to i8
  %1512 = load ptr, ptr %10, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.ImGuiWindow, ptr %1512, i32 0, i32 45
  store i8 %1511, ptr %1513, align 2, !tbaa !208
  %1514 = load ptr, ptr %10, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.ImGuiWindow, ptr %1514, i32 0, i32 36
  %1516 = load i8, ptr %1515, align 1, !tbaa !188, !range !87, !noundef !88
  %1517 = trunc i8 %1516 to i1
  br i1 %1517, label %1690, label %1518

1518:                                             ; preds = %1505
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %1519 = load ptr, ptr %10, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.ImGuiWindow, ptr %1519, i32 0, i32 9
  %1521 = getelementptr inbounds %struct.ImVec2, ptr %1520, i32 0, i32 0
  %1522 = load float, ptr %1521, align 8, !tbaa !146
  %1523 = load ptr, ptr %10, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct.ImGuiWindow, ptr %1523, i32 0, i32 9
  %1525 = getelementptr inbounds %struct.ImVec2, ptr %1524, i32 0, i32 1
  %1526 = load float, ptr %1525, align 4, !tbaa !147
  %1527 = load ptr, ptr %10, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiWindow, ptr %1527, i32 0, i32 17
  %1529 = load float, ptr %1528, align 4, !tbaa !191
  %1530 = load ptr, ptr %10, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.ImGuiWindow, ptr %1530, i32 0, i32 19
  %1532 = load float, ptr %1531, align 4, !tbaa !192
  %1533 = fadd float %1529, %1532
  %1534 = fsub float %1526, %1533
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1522, float noundef %1534)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1535 = load ptr, ptr %10, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.ImGuiWindow, ptr %1535, i32 0, i32 70
  %1537 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1536)
  store <2 x float> %1537, ptr %64, align 4
  %1538 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %64, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1538, ptr %63, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #12
  %1539 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %1540 = trunc i8 %1539 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  br i1 %1540, label %1541, label %1542

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

1542:                                             ; preds = %1518
  %1543 = load ptr, ptr %10, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.ImGuiWindow, ptr %1543, i32 0, i32 10
  %1545 = load ptr, ptr %10, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.ImGuiWindow, ptr %1545, i32 0, i32 13
  %1547 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1546, float noundef 2.000000e+00)
  store <2 x float> %1547, ptr %66, align 4
  %1548 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1544, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1548, ptr %65, align 4
  br label %1549

1549:                                             ; preds = %1542, %1541
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  %1550 = load i8, ptr %33, align 1, !tbaa !91, !range !87, !noundef !88
  %1551 = trunc i8 %1550 to i1
  br i1 %1551, label %1552, label %1555

1552:                                             ; preds = %1549
  %1553 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 0
  %1554 = load float, ptr %1553, align 4, !tbaa !193
  br label %1558

1555:                                             ; preds = %1549
  %1556 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 0
  %1557 = load float, ptr %1556, align 4, !tbaa !193
  br label %1558

1558:                                             ; preds = %1555, %1552
  %1559 = phi float [ %1554, %1552 ], [ %1557, %1555 ]
  store float %1559, ptr %67, align 4, !tbaa !133
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  %1560 = load i8, ptr %34, align 1, !tbaa !91, !range !87, !noundef !88
  %1561 = trunc i8 %1560 to i1
  br i1 %1561, label %1562, label %1565

1562:                                             ; preds = %1558
  %1563 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 1
  %1564 = load float, ptr %1563, align 4, !tbaa !194
  br label %1568

1565:                                             ; preds = %1558
  %1566 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 1
  %1567 = load float, ptr %1566, align 4, !tbaa !194
  br label %1568

1568:                                             ; preds = %1565, %1562
  %1569 = phi float [ %1564, %1562 ], [ %1567, %1565 ]
  store float %1569, ptr %68, align 4, !tbaa !133
  %1570 = load i32, ptr %7, align 4, !tbaa !9
  %1571 = and i32 %1570, 16384
  %1572 = icmp ne i32 %1571, 0
  br i1 %1572, label %1585, label %1573

1573:                                             ; preds = %1568
  %1574 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1575 = load float, ptr %1574, align 4, !tbaa !194
  %1576 = load float, ptr %68, align 4, !tbaa !133
  %1577 = fcmp ogt float %1575, %1576
  br i1 %1577, label %1578, label %1583

1578:                                             ; preds = %1573
  %1579 = load i32, ptr %7, align 4, !tbaa !9
  %1580 = and i32 %1579, 8
  %1581 = icmp ne i32 %1580, 0
  %1582 = xor i1 %1581, true
  br label %1583

1583:                                             ; preds = %1578, %1573
  %1584 = phi i1 [ false, %1573 ], [ %1582, %1578 ]
  br label %1585

1585:                                             ; preds = %1583, %1568
  %1586 = phi i1 [ true, %1568 ], [ %1584, %1583 ]
  %1587 = load ptr, ptr %10, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.ImGuiWindow, ptr %1587, i32 0, i32 32
  %1589 = zext i1 %1586 to i8
  store i8 %1589, ptr %1588, align 1, !tbaa !209
  %1590 = load i32, ptr %7, align 4, !tbaa !9
  %1591 = and i32 %1590, 32768
  %1592 = icmp ne i32 %1591, 0
  br i1 %1592, label %1620, label %1593

1593:                                             ; preds = %1585
  %1594 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 0
  %1595 = load float, ptr %1594, align 4, !tbaa !193
  %1596 = load float, ptr %67, align 4, !tbaa !133
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiWindow, ptr %1597, i32 0, i32 32
  %1599 = load i8, ptr %1598, align 1, !tbaa !209, !range !87, !noundef !88
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1601, label %1605

1601:                                             ; preds = %1593
  %1602 = load ptr, ptr %9, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.ImGuiStyle, ptr %1602, i32 0, i32 21
  %1604 = load float, ptr %1603, align 4, !tbaa !210
  br label %1606

1605:                                             ; preds = %1593
  br label %1606

1606:                                             ; preds = %1605, %1601
  %1607 = phi float [ %1604, %1601 ], [ 0.000000e+00, %1605 ]
  %1608 = fsub float %1596, %1607
  %1609 = fcmp ogt float %1595, %1608
  br i1 %1609, label %1610, label %1618

1610:                                             ; preds = %1606
  %1611 = load i32, ptr %7, align 4, !tbaa !9
  %1612 = and i32 %1611, 8
  %1613 = icmp ne i32 %1612, 0
  br i1 %1613, label %1618, label %1614

1614:                                             ; preds = %1610
  %1615 = load i32, ptr %7, align 4, !tbaa !9
  %1616 = and i32 %1615, 2048
  %1617 = icmp ne i32 %1616, 0
  br label %1618

1618:                                             ; preds = %1614, %1610, %1606
  %1619 = phi i1 [ false, %1610 ], [ false, %1606 ], [ %1617, %1614 ]
  br label %1620

1620:                                             ; preds = %1618, %1585
  %1621 = phi i1 [ true, %1585 ], [ %1619, %1618 ]
  %1622 = load ptr, ptr %10, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.ImGuiWindow, ptr %1622, i32 0, i32 31
  %1624 = zext i1 %1621 to i8
  store i8 %1624, ptr %1623, align 4, !tbaa !211
  %1625 = load ptr, ptr %10, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.ImGuiWindow, ptr %1625, i32 0, i32 31
  %1627 = load i8, ptr %1626, align 4, !tbaa !211, !range !87, !noundef !88
  %1628 = trunc i8 %1627 to i1
  br i1 %1628, label %1629, label %1649

1629:                                             ; preds = %1620
  %1630 = load ptr, ptr %10, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.ImGuiWindow, ptr %1630, i32 0, i32 32
  %1632 = load i8, ptr %1631, align 1, !tbaa !209, !range !87, !noundef !88
  %1633 = trunc i8 %1632 to i1
  br i1 %1633, label %1649, label %1634

1634:                                             ; preds = %1629
  %1635 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1636 = load float, ptr %1635, align 4, !tbaa !194
  %1637 = load float, ptr %68, align 4, !tbaa !133
  %1638 = fcmp ogt float %1636, %1637
  br i1 %1638, label %1639, label %1644

1639:                                             ; preds = %1634
  %1640 = load i32, ptr %7, align 4, !tbaa !9
  %1641 = and i32 %1640, 8
  %1642 = icmp ne i32 %1641, 0
  %1643 = xor i1 %1642, true
  br label %1644

1644:                                             ; preds = %1639, %1634
  %1645 = phi i1 [ false, %1634 ], [ %1643, %1639 ]
  %1646 = load ptr, ptr %10, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.ImGuiWindow, ptr %1646, i32 0, i32 32
  %1648 = zext i1 %1645 to i8
  store i8 %1648, ptr %1647, align 1, !tbaa !209
  br label %1649

1649:                                             ; preds = %1644, %1629, %1620
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #12
  %1650 = load ptr, ptr %10, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.ImGuiWindow, ptr %1650, i32 0, i32 32
  %1652 = load i8, ptr %1651, align 1, !tbaa !209, !range !87, !noundef !88
  %1653 = trunc i8 %1652 to i1
  br i1 %1653, label %1654, label %1658

1654:                                             ; preds = %1649
  %1655 = load ptr, ptr %9, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.ImGuiStyle, ptr %1655, i32 0, i32 21
  %1657 = load float, ptr %1656, align 4, !tbaa !210
  br label %1659

1658:                                             ; preds = %1649
  br label %1659

1659:                                             ; preds = %1658, %1654
  %1660 = phi float [ %1657, %1654 ], [ 0.000000e+00, %1658 ]
  %1661 = load ptr, ptr %10, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.ImGuiWindow, ptr %1661, i32 0, i32 31
  %1663 = load i8, ptr %1662, align 4, !tbaa !211, !range !87, !noundef !88
  %1664 = trunc i8 %1663 to i1
  br i1 %1664, label %1665, label %1669

1665:                                             ; preds = %1659
  %1666 = load ptr, ptr %9, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.ImGuiStyle, ptr %1666, i32 0, i32 21
  %1668 = load float, ptr %1667, align 4, !tbaa !210
  br label %1670

1669:                                             ; preds = %1659
  br label %1670

1670:                                             ; preds = %1669, %1665
  %1671 = phi float [ %1668, %1665 ], [ 0.000000e+00, %1669 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %69, float noundef %1660, float noundef %1671)
  %1672 = load ptr, ptr %10, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.ImGuiWindow, ptr %1672, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1673, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #12
  %1674 = load ptr, ptr %10, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.ImGuiWindow, ptr %1674, i32 0, i32 30
  %1676 = getelementptr inbounds %struct.ImVec2, ptr %1675, i32 0, i32 0
  %1677 = load float, ptr %1676, align 4, !tbaa !212
  %1678 = load ptr, ptr %10, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.ImGuiWindow, ptr %1678, i32 0, i32 18
  %1680 = load float, ptr %1679, align 8, !tbaa !190
  %1681 = fadd float %1680, %1677
  store float %1681, ptr %1679, align 8, !tbaa !190
  %1682 = load ptr, ptr %10, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.ImGuiWindow, ptr %1682, i32 0, i32 30
  %1684 = getelementptr inbounds %struct.ImVec2, ptr %1683, i32 0, i32 1
  %1685 = load float, ptr %1684, align 4, !tbaa !213
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.ImGuiWindow, ptr %1686, i32 0, i32 19
  %1688 = load float, ptr %1687, align 4, !tbaa !192
  %1689 = fadd float %1688, %1685
  store float %1689, ptr %1687, align 4, !tbaa !192
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  br label %1690

1690:                                             ; preds = %1670, %1505
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #12
  %1691 = load i32, ptr %7, align 4, !tbaa !9
  %1692 = and i32 %1691, 16777216
  %1693 = icmp ne i32 %1692, 0
  br i1 %1693, label %1694, label %1704

1694:                                             ; preds = %1690
  %1695 = load i32, ptr %7, align 4, !tbaa !9
  %1696 = and i32 %1695, 67108864
  %1697 = icmp ne i32 %1696, 0
  br i1 %1697, label %1704, label %1698

1698:                                             ; preds = %1694
  %1699 = load i8, ptr %24, align 1, !tbaa !91, !range !87, !noundef !88
  %1700 = trunc i8 %1699 to i1
  br i1 %1700, label %1704, label %1701

1701:                                             ; preds = %1698
  %1702 = load ptr, ptr %17, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.ImGuiWindow, ptr %1702, i32 0, i32 74
  br label %1705

1704:                                             ; preds = %1698, %1694, %1690
  br label %1705

1705:                                             ; preds = %1704, %1701
  %1706 = phi ptr [ %1703, %1701 ], [ %48, %1704 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %1706, i64 16, i1 false), !tbaa.struct !159
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #12
  %1707 = load ptr, ptr %10, align 8, !tbaa !5
  %1708 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %1707)
  %1709 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1710 = extractvalue { <2 x float>, <2 x float> } %1708, 0
  store <2 x float> %1710, ptr %1709, align 4
  %1711 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1712 = extractvalue { <2 x float>, <2 x float> } %1708, 1
  store <2 x float> %1712, ptr %1711, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #12
  %1713 = load ptr, ptr %10, align 8, !tbaa !5
  %1714 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %1713)
  %1715 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 0
  %1716 = extractvalue { <2 x float>, <2 x float> } %1714, 0
  store <2 x float> %1716, ptr %1715, align 4
  %1717 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 1
  %1718 = extractvalue { <2 x float>, <2 x float> } %1714, 1
  store <2 x float> %1718, ptr %1717, align 4
  %1719 = load ptr, ptr %10, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.ImGuiWindow, ptr %1719, i32 0, i32 69
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1720, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !159
  %1721 = load ptr, ptr %10, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.ImGuiWindow, ptr %1721, i32 0, i32 69
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1722, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1723 = load ptr, ptr %10, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.ImGuiWindow, ptr %1723, i32 0, i32 7
  %1725 = getelementptr inbounds %struct.ImVec2, ptr %1724, i32 0, i32 0
  %1726 = load float, ptr %1725, align 8, !tbaa !214
  %1727 = load ptr, ptr %10, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.ImGuiWindow, ptr %1727, i32 0, i32 16
  %1729 = load float, ptr %1728, align 8, !tbaa !189
  %1730 = fadd float %1726, %1729
  %1731 = load ptr, ptr %10, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.ImGuiWindow, ptr %1731, i32 0, i32 70
  %1733 = getelementptr inbounds %struct.ImRect, ptr %1732, i32 0, i32 0
  %1734 = getelementptr inbounds %struct.ImVec2, ptr %1733, i32 0, i32 0
  store float %1730, ptr %1734, align 8, !tbaa !215
  %1735 = load ptr, ptr %10, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiWindow, ptr %1735, i32 0, i32 7
  %1737 = getelementptr inbounds %struct.ImVec2, ptr %1736, i32 0, i32 1
  %1738 = load float, ptr %1737, align 4, !tbaa !216
  %1739 = load ptr, ptr %10, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.ImGuiWindow, ptr %1739, i32 0, i32 17
  %1741 = load float, ptr %1740, align 4, !tbaa !191
  %1742 = fadd float %1738, %1741
  %1743 = load ptr, ptr %10, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 70
  %1745 = getelementptr inbounds %struct.ImRect, ptr %1744, i32 0, i32 0
  %1746 = getelementptr inbounds %struct.ImVec2, ptr %1745, i32 0, i32 1
  store float %1742, ptr %1746, align 4, !tbaa !217
  %1747 = load ptr, ptr %10, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiWindow, ptr %1747, i32 0, i32 7
  %1749 = getelementptr inbounds %struct.ImVec2, ptr %1748, i32 0, i32 0
  %1750 = load float, ptr %1749, align 8, !tbaa !214
  %1751 = load ptr, ptr %10, align 8, !tbaa !5
  %1752 = getelementptr inbounds %struct.ImGuiWindow, ptr %1751, i32 0, i32 8
  %1753 = getelementptr inbounds %struct.ImVec2, ptr %1752, i32 0, i32 0
  %1754 = load float, ptr %1753, align 8, !tbaa !170
  %1755 = fadd float %1750, %1754
  %1756 = load ptr, ptr %10, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ImGuiWindow, ptr %1756, i32 0, i32 18
  %1758 = load float, ptr %1757, align 8, !tbaa !190
  %1759 = fsub float %1755, %1758
  %1760 = load ptr, ptr %10, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiWindow, ptr %1760, i32 0, i32 70
  %1762 = getelementptr inbounds %struct.ImRect, ptr %1761, i32 0, i32 1
  %1763 = getelementptr inbounds %struct.ImVec2, ptr %1762, i32 0, i32 0
  store float %1759, ptr %1763, align 8, !tbaa !218
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.ImGuiWindow, ptr %1764, i32 0, i32 7
  %1766 = getelementptr inbounds %struct.ImVec2, ptr %1765, i32 0, i32 1
  %1767 = load float, ptr %1766, align 4, !tbaa !216
  %1768 = load ptr, ptr %10, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiWindow, ptr %1768, i32 0, i32 8
  %1770 = getelementptr inbounds %struct.ImVec2, ptr %1769, i32 0, i32 1
  %1771 = load float, ptr %1770, align 4, !tbaa !171
  %1772 = fadd float %1767, %1771
  %1773 = load ptr, ptr %10, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.ImGuiWindow, ptr %1773, i32 0, i32 19
  %1775 = load float, ptr %1774, align 4, !tbaa !192
  %1776 = fsub float %1772, %1775
  %1777 = load ptr, ptr %10, align 8, !tbaa !5
  %1778 = getelementptr inbounds %struct.ImGuiWindow, ptr %1777, i32 0, i32 70
  %1779 = getelementptr inbounds %struct.ImRect, ptr %1778, i32 0, i32 1
  %1780 = getelementptr inbounds %struct.ImVec2, ptr %1779, i32 0, i32 1
  store float %1776, ptr %1780, align 4, !tbaa !219
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  %1781 = load i32, ptr %7, align 4, !tbaa !9
  %1782 = and i32 %1781, 1024
  %1783 = icmp ne i32 %1782, 0
  br i1 %1783, label %1788, label %1784

1784:                                             ; preds = %1705
  %1785 = load i32, ptr %7, align 4, !tbaa !9
  %1786 = and i32 %1785, 1
  %1787 = icmp ne i32 %1786, 0
  br i1 %1787, label %1792, label %1788

1788:                                             ; preds = %1784, %1705
  %1789 = load ptr, ptr %9, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiStyle, ptr %1789, i32 0, i32 14
  %1791 = load float, ptr %1790, align 4, !tbaa !220
  br label %1796

1792:                                             ; preds = %1784
  %1793 = load ptr, ptr %10, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.ImGuiWindow, ptr %1793, i32 0, i32 15
  %1795 = load float, ptr %1794, align 4, !tbaa !173
  br label %1796

1796:                                             ; preds = %1792, %1788
  %1797 = phi float [ %1791, %1788 ], [ %1795, %1792 ]
  store float %1797, ptr %73, align 4, !tbaa !133
  %1798 = load ptr, ptr %10, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.ImGuiWindow, ptr %1798, i32 0, i32 70
  %1800 = getelementptr inbounds %struct.ImRect, ptr %1799, i32 0, i32 0
  %1801 = getelementptr inbounds %struct.ImVec2, ptr %1800, i32 0, i32 0
  %1802 = load float, ptr %1801, align 8, !tbaa !215
  %1803 = fadd float 5.000000e-01, %1802
  %1804 = load ptr, ptr %10, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.ImGuiWindow, ptr %1804, i32 0, i32 13
  %1806 = getelementptr inbounds %struct.ImVec2, ptr %1805, i32 0, i32 0
  %1807 = load float, ptr %1806, align 8, !tbaa !177
  %1808 = fmul float %1807, 5.000000e-01
  %1809 = call noundef float @_ZL7ImTruncf(float noundef %1808)
  %1810 = load ptr, ptr %10, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.ImGuiWindow, ptr %1810, i32 0, i32 15
  %1812 = load float, ptr %1811, align 4, !tbaa !173
  %1813 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1809, float noundef %1812)
  %1814 = fadd float %1803, %1813
  %1815 = call noundef float @_ZL7ImTruncf(float noundef %1814)
  %1816 = load ptr, ptr %10, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiWindow, ptr %1816, i32 0, i32 71
  %1818 = getelementptr inbounds %struct.ImRect, ptr %1817, i32 0, i32 0
  %1819 = getelementptr inbounds %struct.ImVec2, ptr %1818, i32 0, i32 0
  store float %1815, ptr %1819, align 8, !tbaa !221
  %1820 = load ptr, ptr %10, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.ImGuiWindow, ptr %1820, i32 0, i32 70
  %1822 = getelementptr inbounds %struct.ImRect, ptr %1821, i32 0, i32 0
  %1823 = getelementptr inbounds %struct.ImVec2, ptr %1822, i32 0, i32 1
  %1824 = load float, ptr %1823, align 4, !tbaa !217
  %1825 = fadd float 5.000000e-01, %1824
  %1826 = load float, ptr %73, align 4, !tbaa !133
  %1827 = fadd float %1825, %1826
  %1828 = call noundef float @_ZL7ImTruncf(float noundef %1827)
  %1829 = load ptr, ptr %10, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.ImGuiWindow, ptr %1829, i32 0, i32 71
  %1831 = getelementptr inbounds %struct.ImRect, ptr %1830, i32 0, i32 0
  %1832 = getelementptr inbounds %struct.ImVec2, ptr %1831, i32 0, i32 1
  store float %1828, ptr %1832, align 4, !tbaa !222
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.ImGuiWindow, ptr %1833, i32 0, i32 70
  %1835 = getelementptr inbounds %struct.ImRect, ptr %1834, i32 0, i32 1
  %1836 = getelementptr inbounds %struct.ImVec2, ptr %1835, i32 0, i32 0
  %1837 = load float, ptr %1836, align 8, !tbaa !218
  %1838 = fadd float 5.000000e-01, %1837
  %1839 = load ptr, ptr %10, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.ImGuiWindow, ptr %1839, i32 0, i32 13
  %1841 = getelementptr inbounds %struct.ImVec2, ptr %1840, i32 0, i32 0
  %1842 = load float, ptr %1841, align 8, !tbaa !177
  %1843 = fmul float %1842, 5.000000e-01
  %1844 = call noundef float @_ZL7ImTruncf(float noundef %1843)
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 15
  %1847 = load float, ptr %1846, align 4, !tbaa !173
  %1848 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1844, float noundef %1847)
  %1849 = fsub float %1838, %1848
  %1850 = call noundef float @_ZL7ImTruncf(float noundef %1849)
  %1851 = load ptr, ptr %10, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.ImGuiWindow, ptr %1851, i32 0, i32 71
  %1853 = getelementptr inbounds %struct.ImRect, ptr %1852, i32 0, i32 1
  %1854 = getelementptr inbounds %struct.ImVec2, ptr %1853, i32 0, i32 0
  store float %1850, ptr %1854, align 8, !tbaa !223
  %1855 = load ptr, ptr %10, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiWindow, ptr %1855, i32 0, i32 70
  %1857 = getelementptr inbounds %struct.ImRect, ptr %1856, i32 0, i32 1
  %1858 = getelementptr inbounds %struct.ImVec2, ptr %1857, i32 0, i32 1
  %1859 = load float, ptr %1858, align 4, !tbaa !219
  %1860 = fadd float 5.000000e-01, %1859
  %1861 = load ptr, ptr %10, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.ImGuiWindow, ptr %1861, i32 0, i32 15
  %1863 = load float, ptr %1862, align 4, !tbaa !173
  %1864 = fsub float %1860, %1863
  %1865 = call noundef float @_ZL7ImTruncf(float noundef %1864)
  %1866 = load ptr, ptr %10, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.ImGuiWindow, ptr %1866, i32 0, i32 71
  %1868 = getelementptr inbounds %struct.ImRect, ptr %1867, i32 0, i32 1
  %1869 = getelementptr inbounds %struct.ImVec2, ptr %1868, i32 0, i32 1
  store float %1865, ptr %1869, align 4, !tbaa !224
  %1870 = load ptr, ptr %10, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.ImGuiWindow, ptr %1870, i32 0, i32 71
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1871, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1872 = load ptr, ptr %10, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.ImGuiWindow, ptr %1872, i32 0, i32 8
  %1874 = getelementptr inbounds %struct.ImVec2, ptr %1873, i32 0, i32 0
  %1875 = load float, ptr %1874, align 8, !tbaa !170
  %1876 = fcmp ogt float %1875, 0.000000e+00
  br i1 %1876, label %1877, label %1894

1877:                                             ; preds = %1796
  %1878 = load i32, ptr %7, align 4, !tbaa !9
  %1879 = and i32 %1878, 33554432
  %1880 = icmp ne i32 %1879, 0
  br i1 %1880, label %1894, label %1881

1881:                                             ; preds = %1877
  %1882 = load i32, ptr %7, align 4, !tbaa !9
  %1883 = and i32 %1882, 64
  %1884 = icmp ne i32 %1883, 0
  br i1 %1884, label %1894, label %1885

1885:                                             ; preds = %1881
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.ImGuiWindow, ptr %1886, i32 0, i32 8
  %1888 = getelementptr inbounds %struct.ImVec2, ptr %1887, i32 0, i32 0
  %1889 = load float, ptr %1888, align 8, !tbaa !170
  %1890 = fmul float %1889, 0x3FE4CCCCC0000000
  %1891 = call noundef float @_ZL7ImTruncf(float noundef %1890)
  %1892 = load ptr, ptr %10, align 8, !tbaa !5
  %1893 = getelementptr inbounds %struct.ImGuiWindow, ptr %1892, i32 0, i32 80
  store float %1891, ptr %1893, align 8, !tbaa !225
  br label %1902

1894:                                             ; preds = %1881, %1877, %1796
  %1895 = load ptr, ptr %8, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.ImGuiContext, ptr %1895, i32 0, i32 5
  %1897 = load float, ptr %1896, align 8, !tbaa !206
  %1898 = fmul float %1897, 1.600000e+01
  %1899 = call noundef float @_ZL7ImTruncf(float noundef %1898)
  %1900 = load ptr, ptr %10, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct.ImGuiWindow, ptr %1900, i32 0, i32 80
  store float %1899, ptr %1901, align 8, !tbaa !225
  br label %1902

1902:                                             ; preds = %1894, %1885
  %1903 = load ptr, ptr %10, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.ImGuiWindow, ptr %1903, i32 0, i32 10
  %1905 = getelementptr inbounds %struct.ImVec2, ptr %1904, i32 0, i32 0
  %1906 = load float, ptr %1905, align 8, !tbaa !226
  %1907 = load ptr, ptr %10, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.ImGuiWindow, ptr %1907, i32 0, i32 13
  %1909 = getelementptr inbounds %struct.ImVec2, ptr %1908, i32 0, i32 0
  %1910 = load float, ptr %1909, align 8, !tbaa !177
  %1911 = call float @llvm.fmuladd.f32(float %1910, float 2.000000e+00, float %1906)
  %1912 = load ptr, ptr %10, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.ImGuiWindow, ptr %1912, i32 0, i32 70
  %1914 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1913)
  %1915 = fsub float %1911, %1914
  %1916 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1915)
  %1917 = load ptr, ptr %10, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.ImGuiWindow, ptr %1917, i32 0, i32 26
  %1919 = getelementptr inbounds %struct.ImVec2, ptr %1918, i32 0, i32 0
  store float %1916, ptr %1919, align 4, !tbaa !227
  %1920 = load ptr, ptr %10, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.ImGuiWindow, ptr %1920, i32 0, i32 10
  %1922 = getelementptr inbounds %struct.ImVec2, ptr %1921, i32 0, i32 1
  %1923 = load float, ptr %1922, align 4, !tbaa !228
  %1924 = load ptr, ptr %10, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.ImGuiWindow, ptr %1924, i32 0, i32 13
  %1926 = getelementptr inbounds %struct.ImVec2, ptr %1925, i32 0, i32 1
  %1927 = load float, ptr %1926, align 4, !tbaa !229
  %1928 = call float @llvm.fmuladd.f32(float %1927, float 2.000000e+00, float %1923)
  %1929 = load ptr, ptr %10, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.ImGuiWindow, ptr %1929, i32 0, i32 70
  %1931 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1930)
  %1932 = fsub float %1928, %1931
  %1933 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1932)
  %1934 = load ptr, ptr %10, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.ImGuiWindow, ptr %1934, i32 0, i32 26
  %1936 = getelementptr inbounds %struct.ImVec2, ptr %1935, i32 0, i32 1
  store float %1933, ptr %1936, align 4, !tbaa !230
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  %1937 = load ptr, ptr %10, align 8, !tbaa !5
  %1938 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1937)
  store <2 x float> %1938, ptr %74, align 4
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.ImGuiWindow, ptr %1939, i32 0, i32 25
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1940, ptr align 4 %74, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1941 = load ptr, ptr %10, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiWindow, ptr %1941, i32 0, i32 27
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1942, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  %1943 = load ptr, ptr %10, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.ImGuiWindow, ptr %1943, i32 0, i32 21
  store float 0.000000e+00, ptr %1944, align 4, !tbaa !231
  %1945 = load ptr, ptr %10, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiWindow, ptr %1945, i32 0, i32 20
  store float 0.000000e+00, ptr %1946, align 8, !tbaa !232
  %1947 = load ptr, ptr %10, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiWindow, ptr %1947, i32 0, i32 86
  %1949 = load ptr, ptr %1948, align 8, !tbaa !160
  %1950 = getelementptr inbounds %struct.ImDrawList, ptr %1949, i32 0, i32 0
  %1951 = getelementptr inbounds %struct.ImVector.35, ptr %1950, i32 0, i32 0
  %1952 = load i32, ptr %1951, align 8, !tbaa !233
  %1953 = icmp eq i32 %1952, 1
  br i1 %1953, label %1954, label %1963

1954:                                             ; preds = %1902
  %1955 = load ptr, ptr %10, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.ImGuiWindow, ptr %1955, i32 0, i32 86
  %1957 = load ptr, ptr %1956, align 8, !tbaa !160
  %1958 = getelementptr inbounds %struct.ImDrawList, ptr %1957, i32 0, i32 0
  %1959 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1958, i32 noundef 0)
  %1960 = getelementptr inbounds %struct.ImDrawCmd, ptr %1959, i32 0, i32 4
  %1961 = load i32, ptr %1960, align 8, !tbaa !234
  %1962 = icmp eq i32 %1961, 0
  br label %1963

1963:                                             ; preds = %1954, %1902
  %1964 = phi i1 [ false, %1902 ], [ %1962, %1954 ]
  br i1 %1964, label %1965, label %1966

1965:                                             ; preds = %1963
  br label %1968

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

1967:                                             ; No predecessors!
  br label %1968

1968:                                             ; preds = %1967, %1965
  %1969 = load ptr, ptr %10, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.ImGuiWindow, ptr %1969, i32 0, i32 86
  %1971 = load ptr, ptr %1970, align 8, !tbaa !160
  %1972 = load ptr, ptr %8, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiContext, ptr %1972, i32 0, i32 4
  %1974 = load ptr, ptr %1973, align 8, !tbaa !236
  %1975 = getelementptr inbounds %struct.ImFont, ptr %1974, i32 0, i32 6
  %1976 = load ptr, ptr %1975, align 8, !tbaa !237
  %1977 = getelementptr inbounds %struct.ImFontAtlas, ptr %1976, i32 0, i32 2
  %1978 = load ptr, ptr %1977, align 8, !tbaa !238
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1971, ptr noundef %1978)
  %1979 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 0
  %1980 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1979, ptr noundef nonnull align 4 dereferenceable(8) %1980, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #12
  store i8 0, ptr %76, align 1, !tbaa !91
  %1981 = load i32, ptr %7, align 4, !tbaa !9
  %1982 = and i32 %1981, 16777216
  %1983 = icmp ne i32 %1982, 0
  br i1 %1983, label %1984, label %2057

1984:                                             ; preds = %1968
  %1985 = load i32, ptr %7, align 4, !tbaa !9
  %1986 = and i32 %1985, 67108864
  %1987 = icmp ne i32 %1986, 0
  br i1 %1987, label %2057, label %1988

1988:                                             ; preds = %1984
  %1989 = load i8, ptr %24, align 1, !tbaa !91, !range !87, !noundef !88
  %1990 = trunc i8 %1989 to i1
  br i1 %1990, label %2057, label %1991

1991:                                             ; preds = %1988
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %1992 = load ptr, ptr %17, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiWindow, ptr %1992, i32 0, i32 68
  %1994 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1993, i32 0, i32 26
  %1995 = getelementptr inbounds %struct.ImVector.2, ptr %1994, i32 0, i32 0
  %1996 = load i32, ptr %1995, align 8, !tbaa !199
  %1997 = icmp sge i32 %1996, 2
  br i1 %1997, label %1998, label %2010

1998:                                             ; preds = %1991
  %1999 = load ptr, ptr %17, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.ImGuiWindow, ptr %1999, i32 0, i32 68
  %2001 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2000, i32 0, i32 26
  %2002 = load ptr, ptr %17, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ImGuiWindow, ptr %2002, i32 0, i32 68
  %2004 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2003, i32 0, i32 26
  %2005 = getelementptr inbounds %struct.ImVector.2, ptr %2004, i32 0, i32 0
  %2006 = load i32, ptr %2005, align 8, !tbaa !199
  %2007 = sub nsw i32 %2006, 2
  %2008 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2001, i32 noundef %2007)
  %2009 = load ptr, ptr %2008, align 8, !tbaa !5
  br label %2011

2010:                                             ; preds = %1991
  br label %2011

2011:                                             ; preds = %2010, %1998
  %2012 = phi ptr [ %2009, %1998 ], [ null, %2010 ]
  store ptr %2012, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #12
  %2013 = load ptr, ptr %77, align 8, !tbaa !5
  %2014 = icmp ne ptr %2013, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #12
  br i1 %2014, label %2015, label %2029

2015:                                             ; preds = %2011
  %2016 = load ptr, ptr %77, align 8, !tbaa !5
  %2017 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %2016)
  %2018 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %2019 = extractvalue { <2 x float>, <2 x float> } %2017, 0
  store <2 x float> %2019, ptr %2018, align 4
  %2020 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %2021 = extractvalue { <2 x float>, <2 x float> } %2017, 1
  store <2 x float> %2021, ptr %2020, align 4
  %2022 = load ptr, ptr %10, align 8, !tbaa !5
  %2023 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %2022)
  %2024 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 0
  %2025 = extractvalue { <2 x float>, <2 x float> } %2023, 0
  store <2 x float> %2025, ptr %2024, align 4
  %2026 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 1
  %2027 = extractvalue { <2 x float>, <2 x float> } %2023, 1
  store <2 x float> %2027, ptr %2026, align 4
  %2028 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull align 4 dereferenceable(16) %80)
  br label %2030

2029:                                             ; preds = %2011
  br label %2030

2030:                                             ; preds = %2029, %2015
  %2031 = phi i1 [ %2028, %2015 ], [ false, %2029 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #12
  %2032 = zext i1 %2031 to i8
  store i8 %2032, ptr %78, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #12
  %2033 = load ptr, ptr %17, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.ImGuiWindow, ptr %2033, i32 0, i32 86
  %2035 = load ptr, ptr %2034, align 8, !tbaa !160
  %2036 = getelementptr inbounds %struct.ImDrawList, ptr %2035, i32 0, i32 2
  %2037 = getelementptr inbounds %struct.ImVector.36, ptr %2036, i32 0, i32 0
  %2038 = load i32, ptr %2037, align 8, !tbaa !242
  %2039 = icmp eq i32 %2038, 0
  %2040 = zext i1 %2039 to i8
  store i8 %2040, ptr %81, align 1, !tbaa !91
  %2041 = load ptr, ptr %10, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.ImGuiWindow, ptr %2041, i32 0, i32 86
  %2043 = load ptr, ptr %2042, align 8, !tbaa !160
  %2044 = getelementptr inbounds %struct.ImDrawList, ptr %2043, i32 0, i32 0
  %2045 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2044)
  %2046 = getelementptr inbounds %struct.ImDrawCmd, ptr %2045, i32 0, i32 4
  %2047 = load i32, ptr %2046, align 8, !tbaa !234
  %2048 = icmp eq i32 %2047, 0
  br i1 %2048, label %2049, label %2056

2049:                                             ; preds = %2030
  %2050 = load i8, ptr %81, align 1, !tbaa !91, !range !87, !noundef !88
  %2051 = trunc i8 %2050 to i1
  br i1 %2051, label %2056, label %2052

2052:                                             ; preds = %2049
  %2053 = load i8, ptr %78, align 1, !tbaa !91, !range !87, !noundef !88
  %2054 = trunc i8 %2053 to i1
  br i1 %2054, label %2056, label %2055

2055:                                             ; preds = %2052
  store i8 1, ptr %76, align 1, !tbaa !91
  br label %2056

2056:                                             ; preds = %2055, %2052, %2049, %2030
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  br label %2057

2057:                                             ; preds = %2056, %1988, %1984, %1968
  %2058 = load i8, ptr %76, align 1, !tbaa !91, !range !87, !noundef !88
  %2059 = trunc i8 %2058 to i1
  br i1 %2059, label %2060, label %2066

2060:                                             ; preds = %2057
  %2061 = load ptr, ptr %17, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiWindow, ptr %2061, i32 0, i32 86
  %2063 = load ptr, ptr %2062, align 8, !tbaa !160
  %2064 = load ptr, ptr %10, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiWindow, ptr %2064, i32 0, i32 86
  store ptr %2063, ptr %2065, align 8, !tbaa !160
  br label %2066

2066:                                             ; preds = %2060, %2057
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #12
  %2067 = load ptr, ptr %8, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.ImGuiContext, ptr %2067, i32 0, i32 145
  %2069 = load ptr, ptr %2068, align 8, !tbaa !243
  %2070 = icmp ne ptr %2069, null
  br i1 %2070, label %2071, label %2075

2071:                                             ; preds = %2066
  %2072 = load ptr, ptr %8, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiContext, ptr %2072, i32 0, i32 145
  %2074 = load ptr, ptr %2073, align 8, !tbaa !243
  br label %2079

2075:                                             ; preds = %2066
  %2076 = load ptr, ptr %8, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.ImGuiContext, ptr %2076, i32 0, i32 98
  %2078 = load ptr, ptr %2077, align 8, !tbaa !244
  br label %2079

2079:                                             ; preds = %2075, %2071
  %2080 = phi ptr [ %2074, %2071 ], [ %2078, %2075 ]
  store ptr %2080, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #12
  %2081 = load i8, ptr %55, align 1, !tbaa !91, !range !87, !noundef !88
  %2082 = trunc i8 %2081 to i1
  br i1 %2082, label %2096, label %2083

2083:                                             ; preds = %2079
  %2084 = load ptr, ptr %82, align 8, !tbaa !5
  %2085 = icmp ne ptr %2084, null
  br i1 %2085, label %2086, label %2094

2086:                                             ; preds = %2083
  %2087 = load ptr, ptr %10, align 8, !tbaa !5
  %2088 = getelementptr inbounds %struct.ImGuiWindow, ptr %2087, i32 0, i32 92
  %2089 = load ptr, ptr %2088, align 8, !tbaa !245
  %2090 = load ptr, ptr %82, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct.ImGuiWindow, ptr %2090, i32 0, i32 92
  %2092 = load ptr, ptr %2091, align 8, !tbaa !245
  %2093 = icmp eq ptr %2089, %2092
  br label %2094

2094:                                             ; preds = %2086, %2083
  %2095 = phi i1 [ false, %2083 ], [ %2093, %2086 ]
  br label %2096

2096:                                             ; preds = %2094, %2079
  %2097 = phi i1 [ true, %2079 ], [ %2095, %2094 ]
  %2098 = zext i1 %2097 to i8
  store i8 %2098, ptr %83, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #12
  store i8 1, ptr %84, align 1, !tbaa !91
  %2099 = load ptr, ptr %10, align 8, !tbaa !5
  %2100 = load i8, ptr %83, align 1, !tbaa !91, !range !87, !noundef !88
  %2101 = trunc i8 %2100 to i1
  %2102 = load i32, ptr %59, align 4, !tbaa !9
  %2103 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %2104 = load float, ptr %60, align 4, !tbaa !133
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2099, ptr noundef nonnull align 4 dereferenceable(16) %72, i1 noundef zeroext %2101, i1 noundef zeroext true, i32 noundef %2102, ptr noundef %2103, float noundef %2104)
  %2105 = load i8, ptr %76, align 1, !tbaa !91, !range !87, !noundef !88
  %2106 = trunc i8 %2105 to i1
  br i1 %2106, label %2107, label %2112

2107:                                             ; preds = %2096
  %2108 = load ptr, ptr %10, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiWindow, ptr %2108, i32 0, i32 87
  %2110 = load ptr, ptr %10, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.ImGuiWindow, ptr %2110, i32 0, i32 86
  store ptr %2109, ptr %2111, align 8, !tbaa !160
  br label %2112

2112:                                             ; preds = %2107, %2096
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #12
  %2113 = load i32, ptr %7, align 4, !tbaa !9
  %2114 = and i32 %2113, 8
  %2115 = icmp ne i32 %2114, 0
  br i1 %2115, label %2120, label %2116

2116:                                             ; preds = %2112
  %2117 = load i32, ptr %7, align 4, !tbaa !9
  %2118 = and i32 %2117, 2048
  %2119 = icmp ne i32 %2118, 0
  br label %2120

2120:                                             ; preds = %2116, %2112
  %2121 = phi i1 [ false, %2112 ], [ %2119, %2116 ]
  %2122 = zext i1 %2121 to i8
  store i8 %2122, ptr %85, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #12
  %2123 = load i32, ptr %7, align 4, !tbaa !9
  %2124 = and i32 %2123, 8
  %2125 = icmp ne i32 %2124, 0
  %2126 = xor i1 %2125, true
  %2127 = zext i1 %2126 to i8
  store i8 %2127, ptr %86, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  %2128 = load ptr, ptr %10, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.ImGuiWindow, ptr %2128, i32 0, i32 12
  %2130 = getelementptr inbounds %struct.ImVec2, ptr %2129, i32 0, i32 0
  %2131 = load float, ptr %2130, align 8, !tbaa !246
  %2132 = fcmp une float %2131, 0.000000e+00
  br i1 %2132, label %2133, label %2138

2133:                                             ; preds = %2120
  %2134 = load ptr, ptr %10, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ImGuiWindow, ptr %2134, i32 0, i32 12
  %2136 = getelementptr inbounds %struct.ImVec2, ptr %2135, i32 0, i32 0
  %2137 = load float, ptr %2136, align 8, !tbaa !246
  br label %2168

2138:                                             ; preds = %2120
  %2139 = load i8, ptr %85, align 1, !tbaa !91, !range !87, !noundef !88
  %2140 = trunc i8 %2139 to i1
  br i1 %2140, label %2141, label %2146

2141:                                             ; preds = %2138
  %2142 = load ptr, ptr %10, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.ImGuiWindow, ptr %2142, i32 0, i32 10
  %2144 = getelementptr inbounds %struct.ImVec2, ptr %2143, i32 0, i32 0
  %2145 = load float, ptr %2144, align 8, !tbaa !226
  br label %2147

2146:                                             ; preds = %2138
  br label %2147

2147:                                             ; preds = %2146, %2141
  %2148 = phi float [ %2145, %2141 ], [ 0.000000e+00, %2146 ]
  %2149 = load ptr, ptr %10, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiWindow, ptr %2149, i32 0, i32 8
  %2151 = getelementptr inbounds %struct.ImVec2, ptr %2150, i32 0, i32 0
  %2152 = load float, ptr %2151, align 8, !tbaa !170
  %2153 = load ptr, ptr %10, align 8, !tbaa !5
  %2154 = getelementptr inbounds %struct.ImGuiWindow, ptr %2153, i32 0, i32 13
  %2155 = getelementptr inbounds %struct.ImVec2, ptr %2154, i32 0, i32 0
  %2156 = load float, ptr %2155, align 8, !tbaa !177
  %2157 = fneg float %2156
  %2158 = call float @llvm.fmuladd.f32(float %2157, float 2.000000e+00, float %2152)
  %2159 = load ptr, ptr %10, align 8, !tbaa !5
  %2160 = getelementptr inbounds %struct.ImGuiWindow, ptr %2159, i32 0, i32 16
  %2161 = load float, ptr %2160, align 8, !tbaa !189
  %2162 = load ptr, ptr %10, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.ImGuiWindow, ptr %2162, i32 0, i32 18
  %2164 = load float, ptr %2163, align 8, !tbaa !190
  %2165 = fadd float %2161, %2164
  %2166 = fsub float %2158, %2165
  %2167 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2148, float noundef %2166)
  br label %2168

2168:                                             ; preds = %2147, %2133
  %2169 = phi float [ %2137, %2133 ], [ %2167, %2147 ]
  store float %2169, ptr %87, align 4, !tbaa !133
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #12
  %2170 = load ptr, ptr %10, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.ImGuiWindow, ptr %2170, i32 0, i32 12
  %2172 = getelementptr inbounds %struct.ImVec2, ptr %2171, i32 0, i32 1
  %2173 = load float, ptr %2172, align 4, !tbaa !247
  %2174 = fcmp une float %2173, 0.000000e+00
  br i1 %2174, label %2175, label %2180

2175:                                             ; preds = %2168
  %2176 = load ptr, ptr %10, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct.ImGuiWindow, ptr %2176, i32 0, i32 12
  %2178 = getelementptr inbounds %struct.ImVec2, ptr %2177, i32 0, i32 1
  %2179 = load float, ptr %2178, align 4, !tbaa !247
  br label %2210

2180:                                             ; preds = %2168
  %2181 = load i8, ptr %86, align 1, !tbaa !91, !range !87, !noundef !88
  %2182 = trunc i8 %2181 to i1
  br i1 %2182, label %2183, label %2188

2183:                                             ; preds = %2180
  %2184 = load ptr, ptr %10, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.ImGuiWindow, ptr %2184, i32 0, i32 10
  %2186 = getelementptr inbounds %struct.ImVec2, ptr %2185, i32 0, i32 1
  %2187 = load float, ptr %2186, align 4, !tbaa !228
  br label %2189

2188:                                             ; preds = %2180
  br label %2189

2189:                                             ; preds = %2188, %2183
  %2190 = phi float [ %2187, %2183 ], [ 0.000000e+00, %2188 ]
  %2191 = load ptr, ptr %10, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiWindow, ptr %2191, i32 0, i32 8
  %2193 = getelementptr inbounds %struct.ImVec2, ptr %2192, i32 0, i32 1
  %2194 = load float, ptr %2193, align 4, !tbaa !171
  %2195 = load ptr, ptr %10, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.ImGuiWindow, ptr %2195, i32 0, i32 13
  %2197 = getelementptr inbounds %struct.ImVec2, ptr %2196, i32 0, i32 1
  %2198 = load float, ptr %2197, align 4, !tbaa !229
  %2199 = fneg float %2198
  %2200 = call float @llvm.fmuladd.f32(float %2199, float 2.000000e+00, float %2194)
  %2201 = load ptr, ptr %10, align 8, !tbaa !5
  %2202 = getelementptr inbounds %struct.ImGuiWindow, ptr %2201, i32 0, i32 17
  %2203 = load float, ptr %2202, align 4, !tbaa !191
  %2204 = load ptr, ptr %10, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiWindow, ptr %2204, i32 0, i32 19
  %2206 = load float, ptr %2205, align 4, !tbaa !192
  %2207 = fadd float %2203, %2206
  %2208 = fsub float %2200, %2207
  %2209 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2190, float noundef %2208)
  br label %2210

2210:                                             ; preds = %2189, %2175
  %2211 = phi float [ %2179, %2175 ], [ %2209, %2189 ]
  store float %2211, ptr %88, align 4, !tbaa !133
  %2212 = load ptr, ptr %10, align 8, !tbaa !5
  %2213 = getelementptr inbounds %struct.ImGuiWindow, ptr %2212, i32 0, i32 70
  %2214 = getelementptr inbounds %struct.ImRect, ptr %2213, i32 0, i32 0
  %2215 = getelementptr inbounds %struct.ImVec2, ptr %2214, i32 0, i32 0
  %2216 = load float, ptr %2215, align 8, !tbaa !215
  %2217 = load ptr, ptr %10, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiWindow, ptr %2217, i32 0, i32 25
  %2219 = getelementptr inbounds %struct.ImVec2, ptr %2218, i32 0, i32 0
  %2220 = load float, ptr %2219, align 4, !tbaa !248
  %2221 = fsub float %2216, %2220
  %2222 = load ptr, ptr %10, align 8, !tbaa !5
  %2223 = getelementptr inbounds %struct.ImGuiWindow, ptr %2222, i32 0, i32 13
  %2224 = getelementptr inbounds %struct.ImVec2, ptr %2223, i32 0, i32 0
  %2225 = load float, ptr %2224, align 8, !tbaa !177
  %2226 = load ptr, ptr %10, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.ImGuiWindow, ptr %2226, i32 0, i32 15
  %2228 = load float, ptr %2227, align 4, !tbaa !173
  %2229 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2225, float noundef %2228)
  %2230 = fadd float %2221, %2229
  %2231 = call noundef float @_ZL7ImTruncf(float noundef %2230)
  %2232 = load ptr, ptr %10, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 72
  %2234 = getelementptr inbounds %struct.ImRect, ptr %2233, i32 0, i32 0
  %2235 = getelementptr inbounds %struct.ImVec2, ptr %2234, i32 0, i32 0
  store float %2231, ptr %2235, align 8, !tbaa !249
  %2236 = load ptr, ptr %10, align 8, !tbaa !5
  %2237 = getelementptr inbounds %struct.ImGuiWindow, ptr %2236, i32 0, i32 70
  %2238 = getelementptr inbounds %struct.ImRect, ptr %2237, i32 0, i32 0
  %2239 = getelementptr inbounds %struct.ImVec2, ptr %2238, i32 0, i32 1
  %2240 = load float, ptr %2239, align 4, !tbaa !217
  %2241 = load ptr, ptr %10, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.ImGuiWindow, ptr %2241, i32 0, i32 25
  %2243 = getelementptr inbounds %struct.ImVec2, ptr %2242, i32 0, i32 1
  %2244 = load float, ptr %2243, align 4, !tbaa !250
  %2245 = fsub float %2240, %2244
  %2246 = load ptr, ptr %10, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiWindow, ptr %2246, i32 0, i32 13
  %2248 = getelementptr inbounds %struct.ImVec2, ptr %2247, i32 0, i32 1
  %2249 = load float, ptr %2248, align 4, !tbaa !229
  %2250 = load ptr, ptr %10, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.ImGuiWindow, ptr %2250, i32 0, i32 15
  %2252 = load float, ptr %2251, align 4, !tbaa !173
  %2253 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2249, float noundef %2252)
  %2254 = fadd float %2245, %2253
  %2255 = call noundef float @_ZL7ImTruncf(float noundef %2254)
  %2256 = load ptr, ptr %10, align 8, !tbaa !5
  %2257 = getelementptr inbounds %struct.ImGuiWindow, ptr %2256, i32 0, i32 72
  %2258 = getelementptr inbounds %struct.ImRect, ptr %2257, i32 0, i32 0
  %2259 = getelementptr inbounds %struct.ImVec2, ptr %2258, i32 0, i32 1
  store float %2255, ptr %2259, align 4, !tbaa !251
  %2260 = load ptr, ptr %10, align 8, !tbaa !5
  %2261 = getelementptr inbounds %struct.ImGuiWindow, ptr %2260, i32 0, i32 72
  %2262 = getelementptr inbounds %struct.ImRect, ptr %2261, i32 0, i32 0
  %2263 = getelementptr inbounds %struct.ImVec2, ptr %2262, i32 0, i32 0
  %2264 = load float, ptr %2263, align 8, !tbaa !249
  %2265 = load float, ptr %87, align 4, !tbaa !133
  %2266 = fadd float %2264, %2265
  %2267 = load ptr, ptr %10, align 8, !tbaa !5
  %2268 = getelementptr inbounds %struct.ImGuiWindow, ptr %2267, i32 0, i32 72
  %2269 = getelementptr inbounds %struct.ImRect, ptr %2268, i32 0, i32 1
  %2270 = getelementptr inbounds %struct.ImVec2, ptr %2269, i32 0, i32 0
  store float %2266, ptr %2270, align 8, !tbaa !252
  %2271 = load ptr, ptr %10, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.ImGuiWindow, ptr %2271, i32 0, i32 72
  %2273 = getelementptr inbounds %struct.ImRect, ptr %2272, i32 0, i32 0
  %2274 = getelementptr inbounds %struct.ImVec2, ptr %2273, i32 0, i32 1
  %2275 = load float, ptr %2274, align 4, !tbaa !251
  %2276 = load float, ptr %88, align 4, !tbaa !133
  %2277 = fadd float %2275, %2276
  %2278 = load ptr, ptr %10, align 8, !tbaa !5
  %2279 = getelementptr inbounds %struct.ImGuiWindow, ptr %2278, i32 0, i32 72
  %2280 = getelementptr inbounds %struct.ImRect, ptr %2279, i32 0, i32 1
  %2281 = getelementptr inbounds %struct.ImVec2, ptr %2280, i32 0, i32 1
  store float %2277, ptr %2281, align 4, !tbaa !253
  %2282 = load ptr, ptr %10, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.ImGuiWindow, ptr %2282, i32 0, i32 72
  %2284 = load ptr, ptr %10, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.ImGuiWindow, ptr %2284, i32 0, i32 73
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2285, ptr align 8 %2283, i64 16, i1 false), !tbaa.struct !159
  %2286 = load ptr, ptr %10, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.ImGuiWindow, ptr %2286, i32 0, i32 7
  %2288 = getelementptr inbounds %struct.ImVec2, ptr %2287, i32 0, i32 0
  %2289 = load float, ptr %2288, align 8, !tbaa !214
  %2290 = load ptr, ptr %10, align 8, !tbaa !5
  %2291 = getelementptr inbounds %struct.ImGuiWindow, ptr %2290, i32 0, i32 25
  %2292 = getelementptr inbounds %struct.ImVec2, ptr %2291, i32 0, i32 0
  %2293 = load float, ptr %2292, align 4, !tbaa !248
  %2294 = fsub float %2289, %2293
  %2295 = load ptr, ptr %10, align 8, !tbaa !5
  %2296 = getelementptr inbounds %struct.ImGuiWindow, ptr %2295, i32 0, i32 13
  %2297 = getelementptr inbounds %struct.ImVec2, ptr %2296, i32 0, i32 0
  %2298 = load float, ptr %2297, align 8, !tbaa !177
  %2299 = fadd float %2294, %2298
  %2300 = load ptr, ptr %10, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.ImGuiWindow, ptr %2300, i32 0, i32 16
  %2302 = load float, ptr %2301, align 8, !tbaa !189
  %2303 = fadd float %2299, %2302
  %2304 = load ptr, ptr %10, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiWindow, ptr %2304, i32 0, i32 75
  %2306 = getelementptr inbounds %struct.ImRect, ptr %2305, i32 0, i32 0
  %2307 = getelementptr inbounds %struct.ImVec2, ptr %2306, i32 0, i32 0
  store float %2303, ptr %2307, align 8, !tbaa !254
  %2308 = load ptr, ptr %10, align 8, !tbaa !5
  %2309 = getelementptr inbounds %struct.ImGuiWindow, ptr %2308, i32 0, i32 7
  %2310 = getelementptr inbounds %struct.ImVec2, ptr %2309, i32 0, i32 1
  %2311 = load float, ptr %2310, align 4, !tbaa !216
  %2312 = load ptr, ptr %10, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct.ImGuiWindow, ptr %2312, i32 0, i32 25
  %2314 = getelementptr inbounds %struct.ImVec2, ptr %2313, i32 0, i32 1
  %2315 = load float, ptr %2314, align 4, !tbaa !250
  %2316 = fsub float %2311, %2315
  %2317 = load ptr, ptr %10, align 8, !tbaa !5
  %2318 = getelementptr inbounds %struct.ImGuiWindow, ptr %2317, i32 0, i32 13
  %2319 = getelementptr inbounds %struct.ImVec2, ptr %2318, i32 0, i32 1
  %2320 = load float, ptr %2319, align 4, !tbaa !229
  %2321 = fadd float %2316, %2320
  %2322 = load ptr, ptr %10, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 17
  %2324 = load float, ptr %2323, align 4, !tbaa !191
  %2325 = fadd float %2321, %2324
  %2326 = load ptr, ptr %10, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiWindow, ptr %2326, i32 0, i32 75
  %2328 = getelementptr inbounds %struct.ImRect, ptr %2327, i32 0, i32 0
  %2329 = getelementptr inbounds %struct.ImVec2, ptr %2328, i32 0, i32 1
  store float %2325, ptr %2329, align 4, !tbaa !255
  %2330 = load ptr, ptr %10, align 8, !tbaa !5
  %2331 = getelementptr inbounds %struct.ImGuiWindow, ptr %2330, i32 0, i32 75
  %2332 = getelementptr inbounds %struct.ImRect, ptr %2331, i32 0, i32 0
  %2333 = getelementptr inbounds %struct.ImVec2, ptr %2332, i32 0, i32 0
  %2334 = load float, ptr %2333, align 8, !tbaa !254
  %2335 = load ptr, ptr %10, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.ImGuiWindow, ptr %2335, i32 0, i32 12
  %2337 = getelementptr inbounds %struct.ImVec2, ptr %2336, i32 0, i32 0
  %2338 = load float, ptr %2337, align 8, !tbaa !246
  %2339 = fcmp une float %2338, 0.000000e+00
  br i1 %2339, label %2340, label %2345

2340:                                             ; preds = %2210
  %2341 = load ptr, ptr %10, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct.ImGuiWindow, ptr %2341, i32 0, i32 12
  %2343 = getelementptr inbounds %struct.ImVec2, ptr %2342, i32 0, i32 0
  %2344 = load float, ptr %2343, align 8, !tbaa !246
  br label %2364

2345:                                             ; preds = %2210
  %2346 = load ptr, ptr %10, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiWindow, ptr %2346, i32 0, i32 8
  %2348 = getelementptr inbounds %struct.ImVec2, ptr %2347, i32 0, i32 0
  %2349 = load float, ptr %2348, align 8, !tbaa !170
  %2350 = load ptr, ptr %10, align 8, !tbaa !5
  %2351 = getelementptr inbounds %struct.ImGuiWindow, ptr %2350, i32 0, i32 13
  %2352 = getelementptr inbounds %struct.ImVec2, ptr %2351, i32 0, i32 0
  %2353 = load float, ptr %2352, align 8, !tbaa !177
  %2354 = fneg float %2353
  %2355 = call float @llvm.fmuladd.f32(float %2354, float 2.000000e+00, float %2349)
  %2356 = load ptr, ptr %10, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.ImGuiWindow, ptr %2356, i32 0, i32 16
  %2358 = load float, ptr %2357, align 8, !tbaa !189
  %2359 = load ptr, ptr %10, align 8, !tbaa !5
  %2360 = getelementptr inbounds %struct.ImGuiWindow, ptr %2359, i32 0, i32 18
  %2361 = load float, ptr %2360, align 8, !tbaa !190
  %2362 = fadd float %2358, %2361
  %2363 = fsub float %2355, %2362
  br label %2364

2364:                                             ; preds = %2345, %2340
  %2365 = phi float [ %2344, %2340 ], [ %2363, %2345 ]
  %2366 = fadd float %2334, %2365
  %2367 = load ptr, ptr %10, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.ImGuiWindow, ptr %2367, i32 0, i32 75
  %2369 = getelementptr inbounds %struct.ImRect, ptr %2368, i32 0, i32 1
  %2370 = getelementptr inbounds %struct.ImVec2, ptr %2369, i32 0, i32 0
  store float %2366, ptr %2370, align 8, !tbaa !256
  %2371 = load ptr, ptr %10, align 8, !tbaa !5
  %2372 = getelementptr inbounds %struct.ImGuiWindow, ptr %2371, i32 0, i32 75
  %2373 = getelementptr inbounds %struct.ImRect, ptr %2372, i32 0, i32 0
  %2374 = getelementptr inbounds %struct.ImVec2, ptr %2373, i32 0, i32 1
  %2375 = load float, ptr %2374, align 4, !tbaa !255
  %2376 = load ptr, ptr %10, align 8, !tbaa !5
  %2377 = getelementptr inbounds %struct.ImGuiWindow, ptr %2376, i32 0, i32 12
  %2378 = getelementptr inbounds %struct.ImVec2, ptr %2377, i32 0, i32 1
  %2379 = load float, ptr %2378, align 4, !tbaa !247
  %2380 = fcmp une float %2379, 0.000000e+00
  br i1 %2380, label %2381, label %2386

2381:                                             ; preds = %2364
  %2382 = load ptr, ptr %10, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiWindow, ptr %2382, i32 0, i32 12
  %2384 = getelementptr inbounds %struct.ImVec2, ptr %2383, i32 0, i32 1
  %2385 = load float, ptr %2384, align 4, !tbaa !247
  br label %2405

2386:                                             ; preds = %2364
  %2387 = load ptr, ptr %10, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.ImGuiWindow, ptr %2387, i32 0, i32 8
  %2389 = getelementptr inbounds %struct.ImVec2, ptr %2388, i32 0, i32 1
  %2390 = load float, ptr %2389, align 4, !tbaa !171
  %2391 = load ptr, ptr %10, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.ImGuiWindow, ptr %2391, i32 0, i32 13
  %2393 = getelementptr inbounds %struct.ImVec2, ptr %2392, i32 0, i32 1
  %2394 = load float, ptr %2393, align 4, !tbaa !229
  %2395 = fneg float %2394
  %2396 = call float @llvm.fmuladd.f32(float %2395, float 2.000000e+00, float %2390)
  %2397 = load ptr, ptr %10, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.ImGuiWindow, ptr %2397, i32 0, i32 17
  %2399 = load float, ptr %2398, align 4, !tbaa !191
  %2400 = load ptr, ptr %10, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiWindow, ptr %2400, i32 0, i32 19
  %2402 = load float, ptr %2401, align 4, !tbaa !192
  %2403 = fadd float %2399, %2402
  %2404 = fsub float %2396, %2403
  br label %2405

2405:                                             ; preds = %2386, %2381
  %2406 = phi float [ %2385, %2381 ], [ %2404, %2386 ]
  %2407 = fadd float %2375, %2406
  %2408 = load ptr, ptr %10, align 8, !tbaa !5
  %2409 = getelementptr inbounds %struct.ImGuiWindow, ptr %2408, i32 0, i32 75
  %2410 = getelementptr inbounds %struct.ImRect, ptr %2409, i32 0, i32 1
  %2411 = getelementptr inbounds %struct.ImVec2, ptr %2410, i32 0, i32 1
  store float %2407, ptr %2411, align 4, !tbaa !257
  %2412 = load ptr, ptr %10, align 8, !tbaa !5
  %2413 = getelementptr inbounds %struct.ImGuiWindow, ptr %2412, i32 0, i32 16
  %2414 = load float, ptr %2413, align 8, !tbaa !189
  %2415 = load ptr, ptr %10, align 8, !tbaa !5
  %2416 = getelementptr inbounds %struct.ImGuiWindow, ptr %2415, i32 0, i32 13
  %2417 = getelementptr inbounds %struct.ImVec2, ptr %2416, i32 0, i32 0
  %2418 = load float, ptr %2417, align 8, !tbaa !177
  %2419 = fadd float %2414, %2418
  %2420 = load ptr, ptr %10, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 25
  %2422 = getelementptr inbounds %struct.ImVec2, ptr %2421, i32 0, i32 0
  %2423 = load float, ptr %2422, align 4, !tbaa !248
  %2424 = fsub float %2419, %2423
  %2425 = load ptr, ptr %10, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.ImGuiWindow, ptr %2425, i32 0, i32 68
  %2427 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2426, i32 0, i32 11
  %2428 = getelementptr inbounds %struct.ImVec1, ptr %2427, i32 0, i32 0
  store float %2424, ptr %2428, align 4, !tbaa !258
  %2429 = load ptr, ptr %10, align 8, !tbaa !5
  %2430 = getelementptr inbounds %struct.ImGuiWindow, ptr %2429, i32 0, i32 68
  %2431 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2430, i32 0, i32 13
  %2432 = getelementptr inbounds %struct.ImVec1, ptr %2431, i32 0, i32 0
  store float 0.000000e+00, ptr %2432, align 4, !tbaa !259
  %2433 = load ptr, ptr %10, align 8, !tbaa !5
  %2434 = getelementptr inbounds %struct.ImGuiWindow, ptr %2433, i32 0, i32 68
  %2435 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2434, i32 0, i32 12
  %2436 = getelementptr inbounds %struct.ImVec1, ptr %2435, i32 0, i32 0
  store float 0.000000e+00, ptr %2436, align 8, !tbaa !260
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #12
  %2437 = load ptr, ptr %10, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiWindow, ptr %2437, i32 0, i32 7
  %2439 = getelementptr inbounds %struct.ImVec2, ptr %2438, i32 0, i32 0
  %2440 = load float, ptr %2439, align 8, !tbaa !214
  %2441 = fpext float %2440 to double
  %2442 = load ptr, ptr %10, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.ImGuiWindow, ptr %2442, i32 0, i32 13
  %2444 = getelementptr inbounds %struct.ImVec2, ptr %2443, i32 0, i32 0
  %2445 = load float, ptr %2444, align 8, !tbaa !177
  %2446 = fpext float %2445 to double
  %2447 = fadd double %2441, %2446
  %2448 = load ptr, ptr %10, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.ImGuiWindow, ptr %2448, i32 0, i32 25
  %2450 = getelementptr inbounds %struct.ImVec2, ptr %2449, i32 0, i32 0
  %2451 = load float, ptr %2450, align 4, !tbaa !248
  %2452 = fpext float %2451 to double
  %2453 = fsub double %2447, %2452
  %2454 = load ptr, ptr %10, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.ImGuiWindow, ptr %2454, i32 0, i32 16
  %2456 = load float, ptr %2455, align 8, !tbaa !189
  %2457 = fpext float %2456 to double
  %2458 = fadd double %2453, %2457
  %2459 = load ptr, ptr %10, align 8, !tbaa !5
  %2460 = getelementptr inbounds %struct.ImGuiWindow, ptr %2459, i32 0, i32 68
  %2461 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2460, i32 0, i32 12
  %2462 = getelementptr inbounds %struct.ImVec1, ptr %2461, i32 0, i32 0
  %2463 = load float, ptr %2462, align 8, !tbaa !260
  %2464 = fpext float %2463 to double
  %2465 = fadd double %2458, %2464
  store double %2465, ptr %89, align 8, !tbaa !261
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #12
  %2466 = load ptr, ptr %10, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.ImGuiWindow, ptr %2466, i32 0, i32 7
  %2468 = getelementptr inbounds %struct.ImVec2, ptr %2467, i32 0, i32 1
  %2469 = load float, ptr %2468, align 4, !tbaa !216
  %2470 = fpext float %2469 to double
  %2471 = load ptr, ptr %10, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiWindow, ptr %2471, i32 0, i32 13
  %2473 = getelementptr inbounds %struct.ImVec2, ptr %2472, i32 0, i32 1
  %2474 = load float, ptr %2473, align 4, !tbaa !229
  %2475 = fpext float %2474 to double
  %2476 = fadd double %2470, %2475
  %2477 = load ptr, ptr %10, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.ImGuiWindow, ptr %2477, i32 0, i32 25
  %2479 = getelementptr inbounds %struct.ImVec2, ptr %2478, i32 0, i32 1
  %2480 = load float, ptr %2479, align 4, !tbaa !250
  %2481 = fpext float %2480 to double
  %2482 = fsub double %2476, %2481
  %2483 = load ptr, ptr %10, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.ImGuiWindow, ptr %2483, i32 0, i32 17
  %2485 = load float, ptr %2484, align 4, !tbaa !191
  %2486 = fpext float %2485 to double
  %2487 = fadd double %2482, %2486
  store double %2487, ptr %90, align 8, !tbaa !261
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #12
  %2488 = load double, ptr %89, align 8, !tbaa !261
  %2489 = fptrunc double %2488 to float
  %2490 = load double, ptr %90, align 8, !tbaa !261
  %2491 = fptrunc double %2490 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %2489, float noundef %2491)
  %2492 = load ptr, ptr %10, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.ImGuiWindow, ptr %2492, i32 0, i32 68
  %2494 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2493, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2494, ptr align 4 %91, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #12
  %2495 = load double, ptr %89, align 8, !tbaa !261
  %2496 = load ptr, ptr %10, align 8, !tbaa !5
  %2497 = getelementptr inbounds %struct.ImGuiWindow, ptr %2496, i32 0, i32 68
  %2498 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2497, i32 0, i32 2
  %2499 = getelementptr inbounds %struct.ImVec2, ptr %2498, i32 0, i32 0
  %2500 = load float, ptr %2499, align 8, !tbaa !262
  %2501 = fpext float %2500 to double
  %2502 = fsub double %2495, %2501
  %2503 = fptrunc double %2502 to float
  %2504 = load double, ptr %90, align 8, !tbaa !261
  %2505 = load ptr, ptr %10, align 8, !tbaa !5
  %2506 = getelementptr inbounds %struct.ImGuiWindow, ptr %2505, i32 0, i32 68
  %2507 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2506, i32 0, i32 2
  %2508 = getelementptr inbounds %struct.ImVec2, ptr %2507, i32 0, i32 1
  %2509 = load float, ptr %2508, align 4, !tbaa !263
  %2510 = fpext float %2509 to double
  %2511 = fsub double %2504, %2510
  %2512 = fptrunc double %2511 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %92, float noundef %2503, float noundef %2512)
  %2513 = load ptr, ptr %10, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.ImGuiWindow, ptr %2513, i32 0, i32 68
  %2515 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2514, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2515, ptr align 4 %92, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  %2516 = load ptr, ptr %10, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiWindow, ptr %2516, i32 0, i32 68
  %2518 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2517, i32 0, i32 2
  %2519 = load ptr, ptr %10, align 8, !tbaa !5
  %2520 = getelementptr inbounds %struct.ImGuiWindow, ptr %2519, i32 0, i32 68
  %2521 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2520, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2521, ptr align 8 %2518, i64 8, i1 false), !tbaa.struct !142
  %2522 = load ptr, ptr %10, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.ImGuiWindow, ptr %2522, i32 0, i32 68
  %2524 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2523, i32 0, i32 0
  %2525 = load ptr, ptr %10, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiWindow, ptr %2525, i32 0, i32 68
  %2527 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2526, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2527, ptr align 8 %2524, i64 8, i1 false), !tbaa.struct !142
  %2528 = load ptr, ptr %10, align 8, !tbaa !5
  %2529 = getelementptr inbounds %struct.ImGuiWindow, ptr %2528, i32 0, i32 68
  %2530 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2529, i32 0, i32 2
  %2531 = load ptr, ptr %10, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.ImGuiWindow, ptr %2531, i32 0, i32 68
  %2533 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2532, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2533, ptr align 8 %2530, i64 8, i1 false), !tbaa.struct !142
  %2534 = load ptr, ptr %10, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.ImGuiWindow, ptr %2534, i32 0, i32 68
  %2536 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2535, i32 0, i32 2
  %2537 = load ptr, ptr %10, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiWindow, ptr %2537, i32 0, i32 68
  %2539 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2538, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2539, ptr align 8 %2536, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %93, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2540 = load ptr, ptr %10, align 8, !tbaa !5
  %2541 = getelementptr inbounds %struct.ImGuiWindow, ptr %2540, i32 0, i32 68
  %2542 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2541, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2542, ptr align 4 %93, i64 8, i1 false), !tbaa.struct !142
  %2543 = load ptr, ptr %10, align 8, !tbaa !5
  %2544 = getelementptr inbounds %struct.ImGuiWindow, ptr %2543, i32 0, i32 68
  %2545 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2544, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2545, ptr align 4 %2542, i64 8, i1 false), !tbaa.struct !142
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #12
  %2546 = load ptr, ptr %10, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.ImGuiWindow, ptr %2546, i32 0, i32 68
  %2548 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2547, i32 0, i32 8
  store float 0.000000e+00, ptr %2548, align 4, !tbaa !264
  %2549 = load ptr, ptr %10, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.ImGuiWindow, ptr %2549, i32 0, i32 68
  %2551 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2550, i32 0, i32 7
  store float 0.000000e+00, ptr %2551, align 8, !tbaa !265
  %2552 = load ptr, ptr %10, align 8, !tbaa !5
  %2553 = getelementptr inbounds %struct.ImGuiWindow, ptr %2552, i32 0, i32 68
  %2554 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2553, i32 0, i32 10
  store i8 0, ptr %2554, align 1, !tbaa !266
  %2555 = load ptr, ptr %10, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.ImGuiWindow, ptr %2555, i32 0, i32 68
  %2557 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2556, i32 0, i32 9
  store i8 0, ptr %2557, align 8, !tbaa !267
  %2558 = load ptr, ptr %10, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiWindow, ptr %2558, i32 0, i32 68
  %2560 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2559, i32 0, i32 15
  store i32 0, ptr %2560, align 8, !tbaa !139
  %2561 = load ptr, ptr %10, align 8, !tbaa !5
  %2562 = getelementptr inbounds %struct.ImGuiWindow, ptr %2561, i32 0, i32 68
  %2563 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2562, i32 0, i32 17
  %2564 = load i16, ptr %2563, align 2, !tbaa !268
  %2565 = load ptr, ptr %10, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.ImGuiWindow, ptr %2565, i32 0, i32 68
  %2567 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2566, i32 0, i32 16
  store i16 %2564, ptr %2567, align 4, !tbaa !269
  %2568 = load ptr, ptr %10, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiWindow, ptr %2568, i32 0, i32 68
  %2570 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2569, i32 0, i32 17
  store i16 0, ptr %2570, align 2, !tbaa !268
  %2571 = load ptr, ptr %10, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.ImGuiWindow, ptr %2571, i32 0, i32 68
  %2573 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2572, i32 0, i32 18
  store i8 1, ptr %2573, align 8, !tbaa !270
  %2574 = load ptr, ptr %10, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.ImGuiWindow, ptr %2574, i32 0, i32 68
  %2576 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2575, i32 0, i32 19
  store i8 0, ptr %2576, align 1, !tbaa !271
  %2577 = load ptr, ptr %10, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.ImGuiWindow, ptr %2577, i32 0, i32 26
  %2579 = getelementptr inbounds %struct.ImVec2, ptr %2578, i32 0, i32 1
  %2580 = load float, ptr %2579, align 4, !tbaa !230
  %2581 = fcmp ogt float %2580, 0.000000e+00
  %2582 = load ptr, ptr %10, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.ImGuiWindow, ptr %2582, i32 0, i32 68
  %2584 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2583, i32 0, i32 20
  %2585 = zext i1 %2581 to i8
  store i8 %2585, ptr %2584, align 2, !tbaa !272
  %2586 = load ptr, ptr %10, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiWindow, ptr %2586, i32 0, i32 68
  %2588 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2587, i32 0, i32 21
  store i8 0, ptr %2588, align 1, !tbaa !273
  %2589 = load ptr, ptr %10, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.ImGuiWindow, ptr %2589, i32 0, i32 68
  %2591 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2590, i32 0, i32 23
  %2592 = load ptr, ptr %9, align 8, !tbaa !5
  %2593 = getelementptr inbounds %struct.ImGuiStyle, ptr %2592, i32 0, i32 15
  %2594 = getelementptr inbounds %struct.ImVec2, ptr %2593, i32 0, i32 0
  %2595 = load float, ptr %2594, align 4, !tbaa !178
  %2596 = load i8, ptr %14, align 1, !tbaa !91, !range !87, !noundef !88
  %2597 = trunc i8 %2596 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %2591, float noundef %2595, i1 noundef zeroext %2597)
  %2598 = load ptr, ptr %10, align 8, !tbaa !5
  %2599 = getelementptr inbounds %struct.ImGuiWindow, ptr %2598, i32 0, i32 68
  %2600 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2599, i32 0, i32 24
  store i32 0, ptr %2600, align 8, !tbaa !274
  %2601 = load ptr, ptr %10, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 68
  %2603 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2602, i32 0, i32 25
  store i32 0, ptr %2603, align 4, !tbaa !275
  %2604 = load ptr, ptr %10, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 68
  %2606 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2605, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2606, i32 noundef 0)
  %2607 = load ptr, ptr %10, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.ImGuiWindow, ptr %2607, i32 0, i32 82
  %2609 = load ptr, ptr %10, align 8, !tbaa !5
  %2610 = getelementptr inbounds %struct.ImGuiWindow, ptr %2609, i32 0, i32 68
  %2611 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2610, i32 0, i32 27
  store ptr %2608, ptr %2611, align 8, !tbaa !276
  %2612 = load ptr, ptr %10, align 8, !tbaa !5
  %2613 = getelementptr inbounds %struct.ImGuiWindow, ptr %2612, i32 0, i32 68
  %2614 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2613, i32 0, i32 28
  store ptr null, ptr %2614, align 8, !tbaa !277
  %2615 = load ptr, ptr %10, align 8, !tbaa !5
  %2616 = getelementptr inbounds %struct.ImGuiWindow, ptr %2615, i32 0, i32 68
  %2617 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2616, i32 0, i32 30
  store i32 1, ptr %2617, align 4, !tbaa !278
  %2618 = load ptr, ptr %17, align 8, !tbaa !5
  %2619 = icmp ne ptr %2618, null
  br i1 %2619, label %2620, label %2625

2620:                                             ; preds = %2405
  %2621 = load ptr, ptr %17, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.ImGuiWindow, ptr %2621, i32 0, i32 68
  %2623 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2622, i32 0, i32 30
  %2624 = load i32, ptr %2623, align 4, !tbaa !278
  br label %2626

2625:                                             ; preds = %2405
  br label %2626

2626:                                             ; preds = %2625, %2620
  %2627 = phi i32 [ %2624, %2620 ], [ 1, %2625 ]
  %2628 = load ptr, ptr %10, align 8, !tbaa !5
  %2629 = getelementptr inbounds %struct.ImGuiWindow, ptr %2628, i32 0, i32 68
  %2630 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2629, i32 0, i32 31
  store i32 %2627, ptr %2630, align 8, !tbaa !279
  %2631 = load ptr, ptr %10, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 80
  %2633 = load float, ptr %2632, align 8, !tbaa !225
  %2634 = load ptr, ptr %10, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiWindow, ptr %2634, i32 0, i32 68
  %2636 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2635, i32 0, i32 33
  store float %2633, ptr %2636, align 8, !tbaa !280
  %2637 = load ptr, ptr %10, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiWindow, ptr %2637, i32 0, i32 68
  %2639 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2638, i32 0, i32 34
  store float -1.000000e+00, ptr %2639, align 4, !tbaa !281
  %2640 = load ptr, ptr %10, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.ImGuiWindow, ptr %2640, i32 0, i32 68
  %2642 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2641, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2642, i32 noundef 0)
  %2643 = load ptr, ptr %10, align 8, !tbaa !5
  %2644 = getelementptr inbounds %struct.ImGuiWindow, ptr %2643, i32 0, i32 68
  %2645 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2644, i32 0, i32 36
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2645, i32 noundef 0)
  %2646 = load i32, ptr %7, align 4, !tbaa !9
  %2647 = and i32 %2646, 134217728
  %2648 = icmp ne i32 %2647, 0
  br i1 %2648, label %2649, label %2655

2649:                                             ; preds = %2626
  %2650 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 52)
  %2651 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %2650)
  %2652 = load ptr, ptr %10, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiWindow, ptr %2652, i32 0, i32 68
  %2654 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2653, i32 0, i32 32
  store i32 %2651, ptr %2654, align 4, !tbaa !282
  br label %2655

2655:                                             ; preds = %2649, %2626
  %2656 = load ptr, ptr %10, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiWindow, ptr %2656, i32 0, i32 54
  %2658 = load i8, ptr %2657, align 4, !tbaa !195
  %2659 = sext i8 %2658 to i32
  %2660 = icmp sgt i32 %2659, 0
  br i1 %2660, label %2661, label %2666

2661:                                             ; preds = %2655
  %2662 = load ptr, ptr %10, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.ImGuiWindow, ptr %2662, i32 0, i32 54
  %2664 = load i8, ptr %2663, align 4, !tbaa !195
  %2665 = add i8 %2664, -1
  store i8 %2665, ptr %2663, align 4, !tbaa !195
  br label %2666

2666:                                             ; preds = %2661, %2655
  %2667 = load ptr, ptr %10, align 8, !tbaa !5
  %2668 = getelementptr inbounds %struct.ImGuiWindow, ptr %2667, i32 0, i32 55
  %2669 = load i8, ptr %2668, align 1, !tbaa !196
  %2670 = sext i8 %2669 to i32
  %2671 = icmp sgt i32 %2670, 0
  br i1 %2671, label %2672, label %2677

2672:                                             ; preds = %2666
  %2673 = load ptr, ptr %10, align 8, !tbaa !5
  %2674 = getelementptr inbounds %struct.ImGuiWindow, ptr %2673, i32 0, i32 55
  %2675 = load i8, ptr %2674, align 1, !tbaa !196
  %2676 = add i8 %2675, -1
  store i8 %2676, ptr %2674, align 1, !tbaa !196
  br label %2677

2677:                                             ; preds = %2672, %2666
  %2678 = load i8, ptr %55, align 1, !tbaa !91, !range !87, !noundef !88
  %2679 = trunc i8 %2678 to i1
  br i1 %2679, label %2680, label %2682

2680:                                             ; preds = %2677
  %2681 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %2681, i32 noundef 2)
  br label %2682

2682:                                             ; preds = %2680, %2677
  %2683 = load i8, ptr %55, align 1, !tbaa !91, !range !87, !noundef !88
  %2684 = trunc i8 %2683 to i1
  br i1 %2684, label %2685, label %2693

2685:                                             ; preds = %2682
  %2686 = load ptr, ptr %10, align 8, !tbaa !5
  %2687 = load ptr, ptr %8, align 8, !tbaa !5
  %2688 = getelementptr inbounds %struct.ImGuiContext, ptr %2687, i32 0, i32 98
  %2689 = load ptr, ptr %2688, align 8, !tbaa !244
  %2690 = icmp eq ptr %2686, %2689
  br i1 %2690, label %2691, label %2693

2691:                                             ; preds = %2685
  %2692 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2692, i1 noundef zeroext false)
  br label %2693

2693:                                             ; preds = %2691, %2685, %2682
  %2694 = load i32, ptr %7, align 4, !tbaa !9
  %2695 = and i32 %2694, 1
  %2696 = icmp ne i32 %2695, 0
  br i1 %2696, label %2721, label %2697

2697:                                             ; preds = %2693
  %2698 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #12
  %2699 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2700 = getelementptr inbounds %struct.ImVec2, ptr %2699, i32 0, i32 0
  %2701 = load float, ptr %2700, align 4, !tbaa !283
  %2702 = load ptr, ptr %10, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.ImGuiWindow, ptr %2702, i32 0, i32 15
  %2704 = load float, ptr %2703, align 4, !tbaa !173
  %2705 = fadd float %2701, %2704
  %2706 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2707 = getelementptr inbounds %struct.ImVec2, ptr %2706, i32 0, i32 1
  %2708 = load float, ptr %2707, align 4, !tbaa !284
  %2709 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2710 = getelementptr inbounds %struct.ImVec2, ptr %2709, i32 0, i32 0
  %2711 = load float, ptr %2710, align 4, !tbaa !285
  %2712 = load ptr, ptr %10, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.ImGuiWindow, ptr %2712, i32 0, i32 15
  %2714 = load float, ptr %2713, align 4, !tbaa !173
  %2715 = fsub float %2711, %2714
  %2716 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2717 = getelementptr inbounds %struct.ImVec2, ptr %2716, i32 0, i32 1
  %2718 = load float, ptr %2717, align 4, !tbaa !286
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %94, float noundef %2705, float noundef %2708, float noundef %2715, float noundef %2718)
  %2719 = load ptr, ptr %5, align 8, !tbaa !5
  %2720 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2698, ptr noundef nonnull align 4 dereferenceable(16) %94, ptr noundef %2719, ptr noundef %2720)
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #12
  br label %2721

2721:                                             ; preds = %2697, %2693
  %2722 = load ptr, ptr %10, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiWindow, ptr %2722, i32 0, i32 76
  %2724 = getelementptr inbounds %struct.ImVec2ih, ptr %2723, i32 0, i32 1
  store i16 0, ptr %2724, align 2, !tbaa !287
  %2725 = load ptr, ptr %10, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.ImGuiWindow, ptr %2725, i32 0, i32 76
  %2727 = getelementptr inbounds %struct.ImVec2ih, ptr %2726, i32 0, i32 0
  store i16 0, ptr %2727, align 8, !tbaa !288
  %2728 = load ptr, ptr %10, align 8, !tbaa !5
  %2729 = getelementptr inbounds %struct.ImGuiWindow, ptr %2728, i32 0, i32 23
  %2730 = load i32, ptr %2729, align 4, !tbaa !289
  %2731 = load ptr, ptr %8, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiContext, ptr %2731, i32 0, i32 79
  %2733 = load i32, ptr %2732, align 4, !tbaa !290
  %2734 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2735 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2736 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2734, ptr noundef nonnull align 4 dereferenceable(8) %2735, i1 noundef zeroext false)
  %2737 = zext i1 %2736 to i64
  %2738 = select i1 %2736, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %2730, i32 noundef %2733, i32 noundef %2738, ptr noundef nonnull align 4 dereferenceable(16) %72)
  %2739 = load ptr, ptr %8, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.ImGuiContext, ptr %2739, i32 0, i32 80
  %2741 = load i32, ptr %2740, align 8, !tbaa !291
  %2742 = icmp ne i32 %2741, 0
  br i1 %2742, label %2743, label %2760

2743:                                             ; preds = %2721
  %2744 = load ptr, ptr %10, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.ImGuiWindow, ptr %2744, i32 0, i32 2
  %2746 = load i32, ptr %2745, align 8, !tbaa !93
  %2747 = load ptr, ptr %8, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.ImGuiContext, ptr %2747, i32 0, i32 80
  %2749 = load i32, ptr %2748, align 8, !tbaa !291
  %2750 = icmp eq i32 %2746, %2749
  br i1 %2750, label %2759, label %2751

2751:                                             ; preds = %2743
  %2752 = load ptr, ptr %10, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.ImGuiWindow, ptr %2752, i32 0, i32 23
  %2754 = load i32, ptr %2753, align 4, !tbaa !289
  %2755 = load ptr, ptr %8, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.ImGuiContext, ptr %2755, i32 0, i32 80
  %2757 = load i32, ptr %2756, align 8, !tbaa !291
  %2758 = icmp eq i32 %2754, %2757
  br i1 %2758, label %2759, label %2760

2759:                                             ; preds = %2751, %2743
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %2760

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

2761:                                             ; preds = %710
  %2762 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2762)
  br label %2763

2763:                                             ; preds = %2761, %2760
  %2764 = load ptr, ptr %10, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.ImGuiWindow, ptr %2764, i32 0, i32 71
  %2766 = getelementptr inbounds %struct.ImRect, ptr %2765, i32 0, i32 0
  %2767 = load ptr, ptr %10, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.ImGuiWindow, ptr %2767, i32 0, i32 71
  %2769 = getelementptr inbounds %struct.ImRect, ptr %2768, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2766, ptr noundef nonnull align 4 dereferenceable(8) %2769, i1 noundef zeroext true)
  %2770 = load ptr, ptr %10, align 8, !tbaa !5
  %2771 = getelementptr inbounds %struct.ImGuiWindow, ptr %2770, i32 0, i32 35
  store i8 0, ptr %2771, align 8, !tbaa !292
  %2772 = load ptr, ptr %10, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.ImGuiWindow, ptr %2772, i32 0, i32 47
  %2774 = load i16, ptr %2773, align 4, !tbaa !293
  %2775 = add i16 %2774, 1
  store i16 %2775, ptr %2773, align 4, !tbaa !293
  %2776 = load ptr, ptr %8, align 8, !tbaa !5
  %2777 = getelementptr inbounds %struct.ImGuiContext, ptr %2776, i32 0, i32 85
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %2777)
  %2778 = load i8, ptr %13, align 1, !tbaa !91, !range !87, !noundef !88
  %2779 = trunc i8 %2778 to i1
  br i1 %2779, label %2780, label %2999

2780:                                             ; preds = %2763
  %2781 = load i32, ptr %7, align 4, !tbaa !9
  %2782 = and i32 %2781, 16777216
  %2783 = icmp ne i32 %2782, 0
  br i1 %2783, label %2784, label %2910

2784:                                             ; preds = %2780
  %2785 = load i32, ptr %7, align 4, !tbaa !9
  %2786 = and i32 %2785, 268435456
  %2787 = icmp ne i32 %2786, 0
  br i1 %2787, label %2910, label %2788

2788:                                             ; preds = %2784
  %2789 = load i32, ptr %7, align 4, !tbaa !9
  %2790 = and i32 %2789, 1
  %2791 = icmp ne i32 %2790, 0
  br i1 %2791, label %2792, label %2793

2792:                                             ; preds = %2788
  br label %2795

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

2794:                                             ; No predecessors!
  br label %2795

2795:                                             ; preds = %2794, %2792
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #12
  %2796 = load i32, ptr %7, align 4, !tbaa !9
  %2797 = and i32 %2796, 8388608
  %2798 = icmp ne i32 %2797, 0
  br i1 %2798, label %2799, label %2821

2799:                                             ; preds = %2795
  %2800 = load ptr, ptr %8, align 8, !tbaa !5
  %2801 = getelementptr inbounds %struct.ImGuiContext, ptr %2800, i32 0, i32 120
  %2802 = load i8, ptr %2801, align 4, !tbaa !294, !range !87, !noundef !88
  %2803 = trunc i8 %2802 to i1
  br i1 %2803, label %2804, label %2819

2804:                                             ; preds = %2799
  %2805 = load ptr, ptr %8, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiContext, ptr %2805, i32 0, i32 98
  %2807 = load ptr, ptr %2806, align 8, !tbaa !244
  %2808 = icmp ne ptr %2807, null
  br i1 %2808, label %2809, label %2819

2809:                                             ; preds = %2804
  %2810 = load ptr, ptr %8, align 8, !tbaa !5
  %2811 = getelementptr inbounds %struct.ImGuiContext, ptr %2810, i32 0, i32 98
  %2812 = load ptr, ptr %2811, align 8, !tbaa !244
  %2813 = getelementptr inbounds %struct.ImGuiWindow, ptr %2812, i32 0, i32 93
  %2814 = load ptr, ptr %2813, align 8, !tbaa !295
  %2815 = load ptr, ptr %10, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiWindow, ptr %2815, i32 0, i32 93
  %2817 = load ptr, ptr %2816, align 8, !tbaa !295
  %2818 = icmp eq ptr %2814, %2817
  br label %2819

2819:                                             ; preds = %2809, %2804, %2799
  %2820 = phi i1 [ false, %2804 ], [ false, %2799 ], [ %2818, %2809 ]
  br label %2821

2821:                                             ; preds = %2819, %2795
  %2822 = phi i1 [ false, %2795 ], [ %2820, %2819 ]
  %2823 = zext i1 %2822 to i8
  store i8 %2823, ptr %95, align 1, !tbaa !91
  %2824 = load ptr, ptr %8, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiContext, ptr %2824, i32 0, i32 237
  %2826 = load i8, ptr %2825, align 8, !tbaa !296, !range !87, !noundef !88
  %2827 = trunc i8 %2826 to i1
  br i1 %2827, label %2875, label %2828

2828:                                             ; preds = %2821
  %2829 = load i8, ptr %95, align 1, !tbaa !91, !range !87, !noundef !88
  %2830 = trunc i8 %2829 to i1
  br i1 %2830, label %2875, label %2831

2831:                                             ; preds = %2828
  %2832 = load ptr, ptr %10, align 8, !tbaa !5
  %2833 = getelementptr inbounds %struct.ImGuiWindow, ptr %2832, i32 0, i32 69
  %2834 = getelementptr inbounds %struct.ImRect, ptr %2833, i32 0, i32 0
  %2835 = getelementptr inbounds %struct.ImVec2, ptr %2834, i32 0, i32 0
  %2836 = load float, ptr %2835, align 8, !tbaa !297
  %2837 = load ptr, ptr %10, align 8, !tbaa !5
  %2838 = getelementptr inbounds %struct.ImGuiWindow, ptr %2837, i32 0, i32 69
  %2839 = getelementptr inbounds %struct.ImRect, ptr %2838, i32 0, i32 1
  %2840 = getelementptr inbounds %struct.ImVec2, ptr %2839, i32 0, i32 0
  %2841 = load float, ptr %2840, align 8, !tbaa !298
  %2842 = fcmp oge float %2836, %2841
  br i1 %2842, label %2855, label %2843

2843:                                             ; preds = %2831
  %2844 = load ptr, ptr %10, align 8, !tbaa !5
  %2845 = getelementptr inbounds %struct.ImGuiWindow, ptr %2844, i32 0, i32 69
  %2846 = getelementptr inbounds %struct.ImRect, ptr %2845, i32 0, i32 0
  %2847 = getelementptr inbounds %struct.ImVec2, ptr %2846, i32 0, i32 1
  %2848 = load float, ptr %2847, align 4, !tbaa !299
  %2849 = load ptr, ptr %10, align 8, !tbaa !5
  %2850 = getelementptr inbounds %struct.ImGuiWindow, ptr %2849, i32 0, i32 69
  %2851 = getelementptr inbounds %struct.ImRect, ptr %2850, i32 0, i32 1
  %2852 = getelementptr inbounds %struct.ImVec2, ptr %2851, i32 0, i32 1
  %2853 = load float, ptr %2852, align 4, !tbaa !300
  %2854 = fcmp oge float %2848, %2853
  br i1 %2854, label %2855, label %2874

2855:                                             ; preds = %2843, %2831
  %2856 = load ptr, ptr %10, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.ImGuiWindow, ptr %2856, i32 0, i32 54
  %2858 = load i8, ptr %2857, align 4, !tbaa !195
  %2859 = sext i8 %2858 to i32
  %2860 = icmp sgt i32 %2859, 0
  br i1 %2860, label %2867, label %2861

2861:                                             ; preds = %2855
  %2862 = load ptr, ptr %10, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiWindow, ptr %2862, i32 0, i32 55
  %2864 = load i8, ptr %2863, align 1, !tbaa !196
  %2865 = sext i8 %2864 to i32
  %2866 = icmp sgt i32 %2865, 0
  br i1 %2866, label %2867, label %2870

2867:                                             ; preds = %2861, %2855
  %2868 = load ptr, ptr %10, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.ImGuiWindow, ptr %2868, i32 0, i32 60
  store i8 1, ptr %2869, align 1, !tbaa !156
  br label %2873

2870:                                             ; preds = %2861
  %2871 = load ptr, ptr %10, align 8, !tbaa !5
  %2872 = getelementptr inbounds %struct.ImGuiWindow, ptr %2871, i32 0, i32 59
  store i8 1, ptr %2872, align 4, !tbaa !168
  br label %2873

2873:                                             ; preds = %2870, %2867
  br label %2874

2874:                                             ; preds = %2873, %2843
  br label %2875

2875:                                             ; preds = %2874, %2828, %2821
  %2876 = load ptr, ptr %17, align 8, !tbaa !5
  %2877 = icmp ne ptr %2876, null
  br i1 %2877, label %2878, label %2892

2878:                                             ; preds = %2875
  %2879 = load ptr, ptr %17, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.ImGuiWindow, ptr %2879, i32 0, i32 36
  %2881 = load i8, ptr %2880, align 1, !tbaa !188, !range !87, !noundef !88
  %2882 = trunc i8 %2881 to i1
  br i1 %2882, label %2889, label %2883

2883:                                             ; preds = %2878
  %2884 = load ptr, ptr %17, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.ImGuiWindow, ptr %2884, i32 0, i32 59
  %2886 = load i8, ptr %2885, align 4, !tbaa !168
  %2887 = sext i8 %2886 to i32
  %2888 = icmp sgt i32 %2887, 0
  br i1 %2888, label %2889, label %2892

2889:                                             ; preds = %2883, %2878
  %2890 = load ptr, ptr %10, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiWindow, ptr %2890, i32 0, i32 59
  store i8 1, ptr %2891, align 4, !tbaa !168
  br label %2892

2892:                                             ; preds = %2889, %2883, %2875
  %2893 = load ptr, ptr %17, align 8, !tbaa !5
  %2894 = icmp ne ptr %2893, null
  br i1 %2894, label %2895, label %2909

2895:                                             ; preds = %2892
  %2896 = load ptr, ptr %17, align 8, !tbaa !5
  %2897 = getelementptr inbounds %struct.ImGuiWindow, ptr %2896, i32 0, i32 36
  %2898 = load i8, ptr %2897, align 1, !tbaa !188, !range !87, !noundef !88
  %2899 = trunc i8 %2898 to i1
  br i1 %2899, label %2906, label %2900

2900:                                             ; preds = %2895
  %2901 = load ptr, ptr %17, align 8, !tbaa !5
  %2902 = getelementptr inbounds %struct.ImGuiWindow, ptr %2901, i32 0, i32 60
  %2903 = load i8, ptr %2902, align 1, !tbaa !156
  %2904 = sext i8 %2903 to i32
  %2905 = icmp sgt i32 %2904, 0
  br i1 %2905, label %2906, label %2909

2906:                                             ; preds = %2900, %2895
  %2907 = load ptr, ptr %10, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiWindow, ptr %2907, i32 0, i32 60
  store i8 1, ptr %2908, align 1, !tbaa !156
  br label %2909

2909:                                             ; preds = %2906, %2900, %2892
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #12
  br label %2910

2910:                                             ; preds = %2909, %2784, %2780
  %2911 = load ptr, ptr %9, align 8, !tbaa !5
  %2912 = getelementptr inbounds %struct.ImGuiStyle, ptr %2911, i32 0, i32 0
  %2913 = load float, ptr %2912, align 4, !tbaa !301
  %2914 = fcmp ole float %2913, 0.000000e+00
  br i1 %2914, label %2915, label %2918

2915:                                             ; preds = %2910
  %2916 = load ptr, ptr %10, align 8, !tbaa !5
  %2917 = getelementptr inbounds %struct.ImGuiWindow, ptr %2916, i32 0, i32 59
  store i8 1, ptr %2917, align 4, !tbaa !168
  br label %2918

2918:                                             ; preds = %2915, %2910
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #12
  %2919 = load ptr, ptr %10, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.ImGuiWindow, ptr %2919, i32 0, i32 59
  %2921 = load i8, ptr %2920, align 4, !tbaa !168
  %2922 = sext i8 %2921 to i32
  %2923 = icmp sgt i32 %2922, 0
  br i1 %2923, label %2930, label %2924

2924:                                             ; preds = %2918
  %2925 = load ptr, ptr %10, align 8, !tbaa !5
  %2926 = getelementptr inbounds %struct.ImGuiWindow, ptr %2925, i32 0, i32 60
  %2927 = load i8, ptr %2926, align 1, !tbaa !156
  %2928 = sext i8 %2927 to i32
  %2929 = icmp sgt i32 %2928, 0
  br label %2930

2930:                                             ; preds = %2924, %2918
  %2931 = phi i1 [ true, %2918 ], [ %2929, %2924 ]
  %2932 = zext i1 %2931 to i8
  store i8 %2932, ptr %96, align 1, !tbaa !91
  %2933 = load i8, ptr %96, align 1, !tbaa !91, !range !87, !noundef !88
  %2934 = trunc i8 %2933 to i1
  br i1 %2934, label %2941, label %2935

2935:                                             ; preds = %2930
  %2936 = load ptr, ptr %10, align 8, !tbaa !5
  %2937 = getelementptr inbounds %struct.ImGuiWindow, ptr %2936, i32 0, i32 61
  %2938 = load i8, ptr %2937, align 2, !tbaa !169
  %2939 = sext i8 %2938 to i32
  %2940 = icmp sgt i32 %2939, 0
  br label %2941

2941:                                             ; preds = %2935, %2930
  %2942 = phi i1 [ true, %2930 ], [ %2940, %2935 ]
  %2943 = load ptr, ptr %10, align 8, !tbaa !5
  %2944 = getelementptr inbounds %struct.ImGuiWindow, ptr %2943, i32 0, i32 40
  %2945 = zext i1 %2942 to i8
  store i8 %2945, ptr %2944, align 1, !tbaa !302
  %2946 = load ptr, ptr %10, align 8, !tbaa !5
  %2947 = getelementptr inbounds %struct.ImGuiWindow, ptr %2946, i32 0, i32 62
  %2948 = load i8, ptr %2947, align 1, !tbaa !303
  %2949 = sext i8 %2948 to i32
  %2950 = icmp sgt i32 %2949, 0
  br i1 %2950, label %2951, label %2960

2951:                                             ; preds = %2941
  %2952 = load ptr, ptr %10, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.ImGuiWindow, ptr %2952, i32 0, i32 62
  %2954 = load i8, ptr %2953, align 1, !tbaa !303
  %2955 = add i8 %2954, -1
  store i8 %2955, ptr %2953, align 1, !tbaa !303
  %2956 = load ptr, ptr %10, align 8, !tbaa !5
  %2957 = getelementptr inbounds %struct.ImGuiWindow, ptr %2956, i32 0, i32 3
  %2958 = load i32, ptr %2957, align 4, !tbaa !117
  %2959 = or i32 %2958, 197120
  store i32 %2959, ptr %2957, align 4, !tbaa !117
  br label %2960

2960:                                             ; preds = %2951, %2941
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #12
  store i8 0, ptr %97, align 1, !tbaa !91
  %2961 = load ptr, ptr %10, align 8, !tbaa !5
  %2962 = getelementptr inbounds %struct.ImGuiWindow, ptr %2961, i32 0, i32 36
  %2963 = load i8, ptr %2962, align 1, !tbaa !188, !range !87, !noundef !88
  %2964 = trunc i8 %2963 to i1
  br i1 %2964, label %2973, label %2965

2965:                                             ; preds = %2960
  %2966 = load ptr, ptr %10, align 8, !tbaa !5
  %2967 = getelementptr inbounds %struct.ImGuiWindow, ptr %2966, i32 0, i32 33
  %2968 = load i8, ptr %2967, align 2, !tbaa !157, !range !87, !noundef !88
  %2969 = trunc i8 %2968 to i1
  br i1 %2969, label %2970, label %2973

2970:                                             ; preds = %2965
  %2971 = load i8, ptr %96, align 1, !tbaa !91, !range !87, !noundef !88
  %2972 = trunc i8 %2971 to i1
  br i1 %2972, label %2973, label %2993

2973:                                             ; preds = %2970, %2965, %2960
  %2974 = load ptr, ptr %10, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiWindow, ptr %2974, i32 0, i32 54
  %2976 = load i8, ptr %2975, align 4, !tbaa !195
  %2977 = sext i8 %2976 to i32
  %2978 = icmp sle i32 %2977, 0
  br i1 %2978, label %2979, label %2992

2979:                                             ; preds = %2973
  %2980 = load ptr, ptr %10, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiWindow, ptr %2980, i32 0, i32 55
  %2982 = load i8, ptr %2981, align 1, !tbaa !196
  %2983 = sext i8 %2982 to i32
  %2984 = icmp sle i32 %2983, 0
  br i1 %2984, label %2985, label %2992

2985:                                             ; preds = %2979
  %2986 = load ptr, ptr %10, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiWindow, ptr %2986, i32 0, i32 60
  %2988 = load i8, ptr %2987, align 1, !tbaa !156
  %2989 = sext i8 %2988 to i32
  %2990 = icmp sle i32 %2989, 0
  br i1 %2990, label %2991, label %2992

2991:                                             ; preds = %2985
  store i8 1, ptr %97, align 1, !tbaa !91
  br label %2992

2992:                                             ; preds = %2991, %2985, %2979, %2973
  br label %2993

2993:                                             ; preds = %2992, %2970
  %2994 = load i8, ptr %97, align 1, !tbaa !91, !range !87, !noundef !88
  %2995 = trunc i8 %2994 to i1
  %2996 = load ptr, ptr %10, align 8, !tbaa !5
  %2997 = getelementptr inbounds %struct.ImGuiWindow, ptr %2996, i32 0, i32 38
  %2998 = zext i1 %2995 to i8
  store i8 %2998, ptr %2997, align 1, !tbaa !304
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #12
  br label %2999

2999:                                             ; preds = %2993, %2763
  %3000 = load ptr, ptr %10, align 8, !tbaa !5
  %3001 = getelementptr inbounds %struct.ImGuiWindow, ptr %3000, i32 0, i32 41
  %3002 = load i8, ptr %3001, align 2, !tbaa !110, !range !87, !noundef !88
  %3003 = trunc i8 %3002 to i1
  br i1 %3003, label %3053, label %3004

3004:                                             ; preds = %2999
  %3005 = load ptr, ptr %8, align 8, !tbaa !5
  %3006 = getelementptr inbounds %struct.ImGuiContext, ptr %3005, i32 0, i32 2
  %3007 = getelementptr inbounds %struct.ImGuiIO, ptr %3006, i32 0, i32 28
  %3008 = load i8, ptr %3007, align 1, !tbaa !305, !range !87, !noundef !88
  %3009 = trunc i8 %3008 to i1
  br i1 %3009, label %3010, label %3013

3010:                                             ; preds = %3004
  %3011 = load i8, ptr %11, align 1, !tbaa !91, !range !87, !noundef !88
  %3012 = trunc i8 %3011 to i1
  br i1 %3012, label %3029, label %3013

3013:                                             ; preds = %3010, %3004
  %3014 = load ptr, ptr %8, align 8, !tbaa !5
  %3015 = getelementptr inbounds %struct.ImGuiContext, ptr %3014, i32 0, i32 2
  %3016 = getelementptr inbounds %struct.ImGuiIO, ptr %3015, i32 0, i32 29
  %3017 = load i8, ptr %3016, align 2, !tbaa !306, !range !87, !noundef !88
  %3018 = trunc i8 %3017 to i1
  br i1 %3018, label %3019, label %3052

3019:                                             ; preds = %3013
  %3020 = load ptr, ptr %8, align 8, !tbaa !5
  %3021 = getelementptr inbounds %struct.ImGuiContext, ptr %3020, i32 0, i32 256
  %3022 = load i8, ptr %3021, align 4, !tbaa !307
  %3023 = sext i8 %3022 to i32
  %3024 = load ptr, ptr %8, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiContext, ptr %3024, i32 0, i32 25
  %3026 = getelementptr inbounds %struct.ImVector.3, ptr %3025, i32 0, i32 0
  %3027 = load i32, ptr %3026, align 8, !tbaa !108
  %3028 = icmp eq i32 %3023, %3027
  br i1 %3028, label %3029, label %3052

3029:                                             ; preds = %3019, %3010
  %3030 = load ptr, ptr %10, align 8, !tbaa !5
  %3031 = getelementptr inbounds %struct.ImGuiWindow, ptr %3030, i32 0, i32 54
  %3032 = load i8, ptr %3031, align 4, !tbaa !195
  %3033 = sext i8 %3032 to i32
  %3034 = icmp sgt i32 %3033, 0
  br i1 %3034, label %3035, label %3040

3035:                                             ; preds = %3029
  %3036 = load ptr, ptr %10, align 8, !tbaa !5
  %3037 = getelementptr inbounds %struct.ImGuiWindow, ptr %3036, i32 0, i32 54
  %3038 = load i8, ptr %3037, align 4, !tbaa !195
  %3039 = add i8 %3038, 1
  store i8 %3039, ptr %3037, align 4, !tbaa !195
  br label %3040

3040:                                             ; preds = %3035, %3029
  %3041 = load ptr, ptr %10, align 8, !tbaa !5
  %3042 = getelementptr inbounds %struct.ImGuiWindow, ptr %3041, i32 0, i32 55
  %3043 = load i8, ptr %3042, align 1, !tbaa !196
  %3044 = sext i8 %3043 to i32
  %3045 = icmp sgt i32 %3044, 0
  br i1 %3045, label %3046, label %3051

3046:                                             ; preds = %3040
  %3047 = load ptr, ptr %10, align 8, !tbaa !5
  %3048 = getelementptr inbounds %struct.ImGuiWindow, ptr %3047, i32 0, i32 55
  %3049 = load i8, ptr %3048, align 1, !tbaa !196
  %3050 = add i8 %3049, 1
  store i8 %3050, ptr %3048, align 1, !tbaa !196
  br label %3051

3051:                                             ; preds = %3046, %3040
  store i1 false, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %3059

3052:                                             ; preds = %3019, %3013
  br label %3053

3053:                                             ; preds = %3052, %2999
  %3054 = load ptr, ptr %10, align 8, !tbaa !5
  %3055 = getelementptr inbounds %struct.ImGuiWindow, ptr %3054, i32 0, i32 38
  %3056 = load i8, ptr %3055, align 1, !tbaa !304, !range !87, !noundef !88
  %3057 = trunc i8 %3056 to i1
  %3058 = xor i1 %3057, true
  store i1 %3058, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %3059

3059:                                             ; preds = %3053, %3051
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 104, ptr %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #12
  %3060 = load i1, ptr %4, align 1
  ret i1 %3060
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 16228}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14568, !6, i64 15664, !17, i64 15672, !17, i64 15676, !22, i64 15680, !25, i64 16208, !10, i64 16216, !10, i64 16220, !10, i64 16224, !14, i64 16228, !14, i64 16229, !14, i64 16230, !14, i64 16231, !14, i64 16232, !6, i64 16240, !26, i64 16248, !26, i64 16264, !19, i64 16280, !10, i64 16284, !27, i64 16288, !27, i64 16304, !27, i64 16320, !28, i64 16336, !29, i64 16352, !10, i64 16368, !16, i64 16372, !10, i64 16380, !6, i64 16384, !6, i64 16392, !6, i64 16400, !6, i64 16408, !6, i64 16416, !16, i64 16424, !10, i64 16432, !10, i64 16436, !17, i64 16440, !16, i64 16444, !16, i64 16452, !10, i64 16460, !10, i64 16464, !10, i64 16468, !14, i64 16472, !14, i64 16473, !17, i64 16476, !17, i64 16480, !10, i64 16484, !10, i64 16488, !17, i64 16492, !14, i64 16496, !14, i64 16497, !14, i64 16498, !14, i64 16499, !14, i64 16500, !14, i64 16501, !14, i64 16502, !10, i64 16503, !16, i64 16504, !6, i64 16512, !31, i64 16520, !10, i64 16524, !14, i64 16528, !14, i64 16529, !6, i64 16536, !10, i64 16544, !17, i64 16548, !25, i64 16552, !25, i64 16560, !25, i64 16568, !32, i64 16576, !7, i64 16596, !33, i64 18448, !10, i64 18792, !14, i64 18796, !10, i64 18800, !10, i64 18804, !10, i64 18808, !10, i64 18812, !10, i64 18816, !35, i64 18824, !37, i64 18856, !39, i64 18936, !14, i64 19048, !10, i64 19052, !40, i64 19056, !41, i64 19072, !42, i64 19088, !43, i64 19104, !44, i64 19120, !45, i64 19136, !46, i64 19152, !46, i64 19168, !47, i64 19184, !48, i64 19200, !6, i64 19216, !10, i64 19224, !10, i64 19228, !43, i64 19232, !10, i64 19248, !10, i64 19252, !10, i64 19256, !10, i64 19260, !10, i64 19264, !17, i64 19268, !10, i64 19272, !10, i64 19276, !10, i64 19280, !10, i64 19284, !10, i64 19288, !31, i64 19292, !49, i64 19296, !36, i64 19304, !14, i64 19312, !14, i64 19313, !14, i64 19314, !14, i64 19315, !14, i64 19316, !14, i64 19317, !14, i64 19318, !50, i64 19320, !14, i64 19384, !14, i64 19385, !14, i64 19386, !10, i64 19388, !10, i64 19392, !10, i64 19396, !10, i64 19400, !10, i64 19404, !10, i64 19408, !38, i64 19412, !38, i64 19428, !10, i64 19444, !10, i64 19448, !10, i64 19452, !50, i64 19456, !50, i64 19520, !50, i64 19584, !50, i64 19648, !10, i64 19712, !10, i64 19716, !6, i64 19720, !6, i64 19728, !6, i64 19736, !17, i64 19744, !17, i64 19748, !14, i64 19752, !51, i64 19756, !16, i64 19760, !16, i64 19768, !17, i64 19776, !14, i64 19780, !14, i64 19781, !14, i64 19782, !10, i64 19784, !10, i64 19788, !10, i64 19792, !52, i64 19800, !38, i64 19864, !38, i64 19880, !10, i64 19896, !10, i64 19900, !17, i64 19904, !10, i64 19908, !10, i64 19912, !10, i64 19916, !10, i64 19920, !53, i64 19928, !7, i64 19944, !10, i64 19960, !54, i64 19968, !6, i64 19984, !10, i64 19992, !10, i64 19996, !55, i64 20000, !56, i64 20016, !58, i64 20056, !59, i64 20072, !6, i64 20088, !60, i64 20096, !62, i64 20136, !63, i64 20152, !10, i64 20168, !10, i64 20172, !17, i64 20176, !17, i64 20180, !10, i64 20184, !10, i64 20188, !10, i64 20192, !17, i64 20196, !16, i64 20200, !64, i64 20208, !68, i64 23944, !69, i64 23968, !10, i64 24088, !10, i64 24092, !10, i64 24096, !10, i64 24100, !10, i64 24104, !10, i64 24108, !17, i64 24112, !17, i64 24116, !10, i64 24120, !23, i64 24124, !71, i64 24140, !38, i64 24188, !14, i64 24204, !17, i64 24208, !17, i64 24212, !14, i64 24216, !14, i64 24217, !17, i64 24220, !17, i64 24224, !17, i64 24228, !17, i64 24232, !18, i64 24236, !18, i64 24238, !18, i64 24240, !65, i64 24248, !72, i64 24264, !73, i64 24280, !75, i64 24384, !75, i64 24400, !14, i64 24416, !17, i64 24420, !76, i64 24424, !77, i64 24440, !78, i64 24456, !79, i64 24472, !80, i64 24488, !10, i64 24504, !7, i64 24512, !14, i64 24576, !81, i64 24580, !6, i64 24584, !76, i64 24592, !6, i64 24608, !6, i64 24616, !17, i64 24624, !14, i64 24628, !10, i64 24632, !10, i64 24636, !10, i64 24640, !10, i64 24644, !76, i64 24648, !82, i64 24664, !10, i64 24688, !7, i64 24692, !7, i64 24693, !14, i64 24694, !10, i64 24696, !7, i64 24700, !14, i64 24701, !7, i64 24702, !10, i64 24704, !17, i64 24708, !23, i64 24712, !83, i64 24728, !84, i64 24760, !86, i64 24800, !7, i64 24860, !10, i64 25100, !10, i64 25104, !17, i64 25108, !10, i64 25112, !10, i64 25116, !10, i64 25120, !65, i64 25128, !7, i64 25144}
!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, !17, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !14, i64 112, !14, i64 113, !14, i64 114, !14, i64 115, !14, i64 116, !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, !18, i64 192, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !17, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !16, i64 224, !7, i64 232, !7, i64 2896, !7, i64 3564, !6, i64 3632, !16, i64 3640, !7, i64 3648, !17, i64 3656, !17, i64 3660, !19, i64 3664, !14, i64 3668, !14, i64 3669, !14, i64 3670, !14, i64 3671, !10, i64 3672, !7, i64 3676, !14, i64 14332, !16, i64 14336, !7, i64 14344, !7, i64 14384, !7, i64 14424, !7, i64 14429, !7, i64 14434, !7, i64 14444, !7, i64 14454, !7, i64 14459, !7, i64 14464, !14, i64 14469, !7, i64 14472, !7, i64 14492, !7, i64 14512, !17, i64 14532, !14, i64 14536, !14, i64 14537, !7, i64 14538, !14, i64 14539, !18, i64 14540, !20, i64 14544}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !10, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !10, i64 156, !16, i64 160, !16, i64 168, !17, i64 176, !16, i64 180, !16, i64 188, !16, i64 196, !16, i64 204, !17, i64 212, !14, i64 216, !14, i64 217, !14, i64 218, !17, i64 220, !17, i64 224, !7, i64 228, !17, i64 1076, !17, i64 1080, !17, i64 1084, !10, i64 1088, !10, i64 1092}
!22 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !23, i64 28, !10, i64 44, !24, i64 48, !7, i64 64, !17, i64 448, !7, i64 452, !6, i64 520}
!23 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!24 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!32 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!33 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !34, i64 312, !34, i64 328}
!34 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !36, i64 8, !17, i64 16, !10, i64 20, !14, i64 24, !10, i64 25}
!36 = !{!"long long", !7, i64 0}
!37 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !38, i64 12, !38, i64 28, !38, i64 44, !38, i64 60}
!38 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!39 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !10, i64 56, !14, i64 60, !38, i64 64, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100}
!40 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!50 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !38, i64 16, !10, i64 32, !36, i64 40, !17, i64 48, !17, i64 52, !17, i64 56}
!51 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!52 = !{!"_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}
!53 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS6ImPoolI10ImGuiTableE", !57, i64 0, !29, i64 16, !10, i64 32, !10, i64 36}
!57 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !61, i64 0, !29, i64 16, !10, i64 32, !10, i64 36}
!61 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !65, i64 40, !65, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !66, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720, !14, i64 3724, !10, i64 3728, !10, i64 3732}
!65 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !17, i64 28, !67, i64 32}
!67 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!68 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !65, i64 8}
!69 = !{!"_ZTS6ImFont", !58, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !70, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !17, i64 88, !17, i64 92, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !10, i64 112, !7, i64 116}
!70 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS21ImGuiComboPreviewData", !38, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!72 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS22ImGuiTypingSelectState", !74, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!74 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!75 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!76 = !{!"_ZTS15ImGuiTextBuffer", !65, i64 0}
!77 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !65, i64 0}
!79 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !65, i64 0}
!80 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!82 = !{!"_ZTS14ImGuiTextIndex", !44, i64 0, !10, i64 16}
!83 = !{!"_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}
!84 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !85, i64 16, !14, i64 32, !17, i64 36}
!85 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !18, i64 8, !7, i64 12}
!87 = !{i8 0, i8 2}
!88 = !{}
!89 = !{!13, !10, i64 16220}
!90 = !{!13, !10, i64 16216}
!91 = !{!14, !14, i64 0}
!92 = !{!13, !10, i64 16380}
!93 = !{!94, !10, i64 16}
!94 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !16, i64 140, !16, i64 148, !16, i64 156, !16, i64 164, !16, i64 172, !16, i64 180, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !7, i64 201, !7, i64 202, !18, i64 204, !18, i64 206, !18, i64 208, !18, i64 210, !18, i64 212, !10, i64 216, !7, i64 220, !7, i64 221, !14, i64 222, !10, i64 224, !7, i64 228, !7, i64 229, !7, i64 230, !7, i64 231, !10, i64 232, !10, i64 233, !10, i64 234, !16, i64 236, !16, i64 244, !72, i64 256, !95, i64 272, !38, i64 504, !38, i64 520, !38, i64 536, !38, i64 552, !38, i64 568, !38, i64 584, !38, i64 600, !98, i64 616, !98, i64 620, !10, i64 624, !17, i64 628, !17, i64 632, !29, i64 640, !99, i64 656, !17, i64 672, !10, i64 676, !6, i64 680, !100, i64 688, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !7, i64 952, !7, i64 960, !7, i64 992, !10, i64 1008, !10, i64 1012, !10, i64 1016, !14, i64 1020}
!95 = !{!"_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, !96, i64 68, !96, i64 72, !96, i64 76, !16, i64 80, !49, i64 88, !18, i64 92, !18, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !97, i64 108, !10, i64 136, !10, i64 140, !27, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !17, i64 192, !17, i64 196, !58, i64 200, !58, i64 216}
!96 = !{!"_ZTS6ImVec1", !17, i64 0}
!97 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!98 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!99 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!100 = !{!"_ZTS10ImDrawList", !101, i64 0, !20, i64 16, !102, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !103, i64 88, !104, i64 104, !24, i64 120, !105, i64 136, !106, i64 168, !17, i64 192}
!101 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!102 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!103 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!104 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!105 = !{!"_ZTS15ImDrawCmdHeader", !23, i64 0, !6, i64 16, !10, i64 24}
!106 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !59, i64 8}
!107 = !{!94, !10, i64 624}
!108 = !{!13, !10, i64 16336}
!109 = !{!13, !14, i64 16229}
!110 = !{!94, !14, i64 198}
!111 = !{!13, !10, i64 19168}
!112 = !{!94, !10, i64 216}
!113 = !{!114, !10, i64 0}
!114 = !{!"_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}
!115 = !{!114, !6, i64 8}
!116 = !{!94, !14, i64 196}
!117 = !{!94, !10, i64 20}
!118 = !{!13, !10, i64 18936}
!119 = !{!13, !10, i64 18992}
!120 = !{!94, !10, i64 24}
!121 = !{!13, !25, i64 16208}
!122 = !{!94, !17, i64 628}
!123 = !{!94, !18, i64 208}
!124 = !{!13, !10, i64 16368}
!125 = !{!94, !18, i64 210}
!126 = !{!127, !6, i64 0}
!127 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !37, i64 8, !128, i64 84}
!128 = !{!"_ZTS15ImGuiStackSizes", !18, i64 0, !18, i64 2, !18, i64 4, !18, i64 6, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16}
!129 = !{!94, !6, i64 888}
!130 = !{!94, !10, i64 256}
!131 = !{!13, !6, i64 16384}
!132 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !133, i64 16, i64 4, !133, i64 20, i64 4, !133, i64 24, i64 4, !133, i64 28, i64 4, !133, i64 32, i64 4, !133, i64 36, i64 4, !133, i64 40, i64 4, !133, i64 44, i64 4, !133, i64 48, i64 4, !133, i64 52, i64 4, !133, i64 56, i64 4, !133, i64 60, i64 4, !133, i64 64, i64 4, !133, i64 68, i64 4, !133, i64 72, i64 4, !133}
!133 = !{!17, !17, i64 0}
!134 = !{!13, !10, i64 24092}
!135 = !{!94, !6, i64 896}
!136 = !{!94, !6, i64 936}
!137 = !{!13, !10, i64 18808}
!138 = !{!94, !10, i64 1008}
!139 = !{!94, !49, i64 360}
!140 = !{!114, !10, i64 24}
!141 = !{!13, !10, i64 18940}
!142 = !{i64 0, i64 4, !133, i64 4, i64 4, !133}
!143 = !{!13, !10, i64 18944}
!144 = !{!13, !17, i64 18968}
!145 = !{!13, !17, i64 18972}
!146 = !{!94, !17, i64 56}
!147 = !{!94, !17, i64 60}
!148 = !{!13, !17, i64 18984}
!149 = !{!94, !17, i64 156}
!150 = !{!94, !17, i64 164}
!151 = !{!13, !17, i64 18988}
!152 = !{!94, !17, i64 160}
!153 = !{!94, !17, i64 168}
!154 = !{!13, !14, i64 18996}
!155 = !{!13, !10, i64 18948}
!156 = !{!94, !7, i64 229}
!157 = !{!94, !14, i64 190}
!158 = !{!94, !14, i64 200}
!159 = !{i64 0, i64 4, !133, i64 4, i64 4, !133, i64 8, i64 4, !133, i64 12, i64 4, !133}
!160 = !{!94, !6, i64 680}
!161 = !{!94, !10, i64 448}
!162 = !{!94, !14, i64 1020}
!163 = !{!13, !6, i64 19736}
!164 = !{!94, !6, i64 8}
!165 = !{!94, !10, i64 128}
!166 = !{!167, !167, i64 0}
!167 = !{!"long", !7, i64 0}
!168 = !{!94, !7, i64 228}
!169 = !{!94, !7, i64 230}
!170 = !{!94, !17, i64 48}
!171 = !{!94, !17, i64 52}
!172 = !{!21, !17, i64 48}
!173 = !{!94, !17, i64 100}
!174 = !{!21, !17, i64 56}
!175 = !{!21, !17, i64 20}
!176 = !{!21, !17, i64 12}
!177 = !{!94, !17, i64 88}
!178 = !{!21, !17, i64 76}
!179 = !{!13, !17, i64 19036}
!180 = !{!94, !17, i64 372}
!181 = !{!13, !17, i64 19040}
!182 = !{!94, !17, i64 376}
!183 = !{!13, !6, i64 16392}
!184 = !{!13, !10, i64 16464}
!185 = !{!13, !10, i64 16468}
!186 = !{!18, !18, i64 0}
!187 = !{!94, !14, i64 194}
!188 = !{!94, !14, i64 193}
!189 = !{!94, !17, i64 104}
!190 = !{!94, !17, i64 112}
!191 = !{!94, !17, i64 108}
!192 = !{!94, !17, i64 116}
!193 = !{!16, !17, i64 0}
!194 = !{!16, !17, i64 4}
!195 = !{!94, !7, i64 220}
!196 = !{!94, !7, i64 221}
!197 = !{!94, !14, i64 222}
!198 = !{!94, !10, i64 224}
!199 = !{!94, !10, i64 416}
!200 = !{!94, !17, i64 236}
!201 = !{!21, !17, i64 44}
!202 = !{!21, !17, i64 52}
!203 = !{!21, !17, i64 16}
!204 = !{!94, !17, i64 96}
!205 = !{!13, !14, i64 94}
!206 = !{!13, !17, i64 15672}
!207 = !{!94, !7, i64 201}
!208 = !{!94, !7, i64 202}
!209 = !{!94, !14, i64 189}
!210 = !{!21, !17, i64 116}
!211 = !{!94, !14, i64 188}
!212 = !{!94, !17, i64 180}
!213 = !{!94, !17, i64 184}
!214 = !{!94, !17, i64 40}
!215 = !{!94, !17, i64 520}
!216 = !{!94, !17, i64 44}
!217 = !{!94, !17, i64 524}
!218 = !{!94, !17, i64 528}
!219 = !{!94, !17, i64 532}
!220 = !{!21, !17, i64 72}
!221 = !{!94, !17, i64 536}
!222 = !{!94, !17, i64 540}
!223 = !{!94, !17, i64 544}
!224 = !{!94, !17, i64 548}
!225 = !{!94, !17, i64 632}
!226 = !{!94, !17, i64 64}
!227 = !{!94, !17, i64 148}
!228 = !{!94, !17, i64 68}
!229 = !{!94, !17, i64 92}
!230 = !{!94, !17, i64 152}
!231 = !{!94, !17, i64 124}
!232 = !{!94, !17, i64 120}
!233 = !{!100, !10, i64 0}
!234 = !{!235, !10, i64 32}
!235 = !{!"_ZTS9ImDrawCmd", !23, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!236 = !{!13, !6, i64 15664}
!237 = !{!69, !6, i64 64}
!238 = !{!239, !6, i64 8}
!239 = !{!"_ZTS11ImFontAtlas", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !14, i64 24, !6, i64 32, !14, i64 40, !14, i64 41, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !16, i64 72, !16, i64 80, !42, i64 88, !240, i64 104, !241, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!240 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!241 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!242 = !{!100, !10, i64 32}
!243 = !{!13, !6, i64 19720}
!244 = !{!13, !6, i64 19216}
!245 = !{!94, !6, i64 920}
!246 = !{!94, !17, i64 80}
!247 = !{!94, !17, i64 84}
!248 = !{!94, !17, i64 140}
!249 = !{!94, !17, i64 552}
!250 = !{!94, !17, i64 144}
!251 = !{!94, !17, i64 556}
!252 = !{!94, !17, i64 560}
!253 = !{!94, !17, i64 564}
!254 = !{!94, !17, i64 600}
!255 = !{!94, !17, i64 604}
!256 = !{!94, !17, i64 608}
!257 = !{!94, !17, i64 612}
!258 = !{!94, !17, i64 340}
!259 = !{!94, !17, i64 348}
!260 = !{!94, !17, i64 344}
!261 = !{!25, !25, i64 0}
!262 = !{!94, !17, i64 288}
!263 = !{!94, !17, i64 292}
!264 = !{!94, !17, i64 332}
!265 = !{!94, !17, i64 328}
!266 = !{!94, !14, i64 337}
!267 = !{!94, !14, i64 336}
!268 = !{!94, !18, i64 366}
!269 = !{!94, !18, i64 364}
!270 = !{!94, !14, i64 368}
!271 = !{!94, !14, i64 369}
!272 = !{!94, !14, i64 370}
!273 = !{!94, !14, i64 371}
!274 = !{!94, !10, i64 408}
!275 = !{!94, !10, i64 412}
!276 = !{!94, !6, i64 432}
!277 = !{!94, !6, i64 440}
!278 = !{!94, !10, i64 452}
!279 = !{!94, !10, i64 456}
!280 = !{!94, !17, i64 464}
!281 = !{!94, !17, i64 468}
!282 = !{!94, !10, i64 460}
!283 = !{!38, !17, i64 0}
!284 = !{!38, !17, i64 4}
!285 = !{!38, !17, i64 8}
!286 = !{!38, !17, i64 12}
!287 = !{!94, !18, i64 618}
!288 = !{!94, !18, i64 616}
!289 = !{!94, !10, i64 132}
!290 = !{!13, !10, i64 18812}
!291 = !{!13, !10, i64 18816}
!292 = !{!94, !14, i64 192}
!293 = !{!94, !18, i64 204}
!294 = !{!13, !14, i64 19316}
!295 = !{!94, !6, i64 928}
!296 = !{!13, !14, i64 24576}
!297 = !{!94, !17, i64 504}
!298 = !{!94, !17, i64 512}
!299 = !{!94, !17, i64 508}
!300 = !{!94, !17, i64 516}
!301 = !{!21, !17, i64 0}
!302 = !{!94, !14, i64 197}
!303 = !{!94, !7, i64 231}
!304 = !{!94, !14, i64 195}
!305 = !{!13, !14, i64 121}
!306 = !{!13, !14, i64 122}
!307 = !{!13, !7, i64 24700}


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

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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

51:                                               ; preds = %46
  %52 = getelementptr inbounds i8, ptr %42, i64 16220
  %53 = load i32, ptr %52, align 4, !tbaa !88
  %54 = getelementptr inbounds i8, ptr %42, i64 16216
  %55 = load i32, ptr %54, align 8, !tbaa !89
  %.not346 = icmp eq i32 %53, %55
  br i1 %.not346, label %56, label %57

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

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

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

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

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

70:                                               ; preds = %69, %62
  %71 = and i32 %2, 197120
  %72 = icmp eq i32 %71, 197120
  %73 = or i32 %2, 6
  %spec.select = select i1 %72, i32 %73, i32 %2
  %74 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %74, 8388608
  br i1 %or.cond, label %75, label %76

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

76:                                               ; preds = %70
  %77 = load i32, ptr %54, align 8, !tbaa !89
  %78 = getelementptr inbounds i8, ptr %63, i64 624
  %79 = load i32, ptr %78, align 8, !tbaa !105
  %.not349 = icmp eq i32 %79, %77
  %80 = getelementptr inbounds i8, ptr %42, i64 16336
  %81 = load i32, ptr %80, align 8, !tbaa !106
  %82 = icmp eq i32 %81, 0
  br i1 %82, label %83, label %86

83:                                               ; preds = %76
  %84 = getelementptr inbounds i8, ptr %42, i64 16229
  %85 = load i8, ptr %84, align 1, !tbaa !107, !range !86, !noundef !87
  br label %86

86:                                               ; preds = %83, %76
  %87 = phi i8 [ 0, %76 ], [ %85, %83 ]
  %88 = getelementptr inbounds i8, ptr %63, i64 198
  store i8 %87, ptr %88, align 2, !tbaa !108
  %89 = add nsw i32 %77, -1
  %90 = icmp slt i32 %79, %89
  %91 = and i32 %spec.select, 67108864
  %.not350 = icmp eq i32 %91, 0
  br i1 %.not350, label %108, label %92

92:                                               ; preds = %86
  %93 = getelementptr inbounds i8, ptr %42, i64 19152
  %94 = getelementptr inbounds i8, ptr %42, i64 19168
  %95 = load i32, ptr %94, align 8, !tbaa !109
  %96 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %93, i32 noundef %95)
  %97 = getelementptr inbounds i8, ptr %63, i64 216
  %98 = load i32, ptr %97, align 8, !tbaa !110
  %99 = load i32, ptr %96, align 8, !tbaa !111
  %100 = icmp ne i32 %98, %99
  %101 = getelementptr inbounds i8, ptr %96, i64 8
  %102 = load ptr, ptr %101, align 8, !tbaa !113
  %103 = icmp ne ptr %63, %102
  %104 = or i1 %100, %103
  %105 = or i1 %90, %104
  %106 = getelementptr inbounds i8, ptr %63, i64 196
  %107 = zext i1 %105 to i8
  store i8 %107, ptr %106, align 4, !tbaa !114
  br i1 %105, label %111, label %112

108:                                              ; preds = %86
  %109 = getelementptr inbounds i8, ptr %63, i64 196
  %110 = zext i1 %90 to i8
  store i8 %110, ptr %109, align 4, !tbaa !114
  br i1 %90, label %111, label %112

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

112:                                              ; preds = %92, %111, %108
  %.0308.in468 = phi i1 [ false, %92 ], [ true, %111 ], [ false, %108 ]
  br i1 %.not349, label %134, label %113

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

118:                                              ; preds = %113
  %119 = getelementptr inbounds i8, ptr %42, i64 18992
  %120 = load i32, ptr %119, align 8, !tbaa !117
  br label %121

121:                                              ; preds = %113, %118
  %122 = phi i32 [ %120, %118 ], [ 0, %113 ]
  %123 = getelementptr inbounds i8, ptr %63, i64 24
  store i32 %122, ptr %123, align 8, !tbaa !118
  store i32 %77, ptr %78, align 8, !tbaa !105
  %124 = getelementptr inbounds i8, ptr %42, i64 16208
  %125 = load double, ptr %124, align 8, !tbaa !119
  %126 = fptrunc double %125 to float
  %127 = getelementptr inbounds i8, ptr %63, i64 628
  store float %126, ptr %127, align 4, !tbaa !120
  %128 = getelementptr inbounds i8, ptr %63, i64 208
  store i16 0, ptr %128, align 8, !tbaa !121
  %129 = getelementptr inbounds i8, ptr %42, i64 16368
  %130 = load i32, ptr %129, align 8, !tbaa !122
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %129, align 8, !tbaa !122
  %132 = trunc i32 %130 to i16
  %133 = getelementptr inbounds i8, ptr %63, i64 210
  store i16 %132, ptr %133, align 2, !tbaa !123
  br label %137

134:                                              ; preds = %112
  %135 = getelementptr inbounds i8, ptr %63, i64 20
  %136 = load i32, ptr %135, align 4, !tbaa !115
  br label %137

137:                                              ; preds = %134, %121
  %.1 = phi i32 [ %spec.select, %121 ], [ %136, %134 ]
  %138 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  br i1 %138, label %142, label %139

139:                                              ; preds = %137
  %140 = tail call noundef nonnull align 8 dereferenceable(102) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %80)
  %141 = load ptr, ptr %140, align 8, !tbaa !124
  br label %142

142:                                              ; preds = %137, %139
  %143 = phi ptr [ %141, %139 ], [ null, %137 ]
  br i1 %.not349, label %147, label %144

144:                                              ; preds = %142
  %145 = and i32 %.1, 83886080
  %.not352 = icmp eq i32 %145, 0
  %146 = select i1 %.not352, ptr null, ptr %143
  br label %150

147:                                              ; preds = %142
  %148 = getelementptr inbounds i8, ptr %63, i64 888
  %149 = load ptr, ptr %148, align 8, !tbaa !127
  br label %150

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

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

156:                                              ; preds = %150
  %157 = getelementptr inbounds i8, ptr %63, i64 256
  %158 = load i32, ptr %157, align 8, !tbaa !128
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %161

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

161:                                              ; preds = %160, %156
  %162 = getelementptr inbounds i8, ptr %42, i64 16384
  store ptr %63, ptr %162, align 8, !tbaa !129
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %5) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(102) %5)
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %163, ptr %5, align 8, !tbaa !124
  %164 = getelementptr inbounds i8, ptr %42, i64 18856
  %165 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(76) %165, ptr noundef nonnull align 8 dereferenceable(76) %164, i64 76, i1 false), !tbaa.struct !130
  %166 = getelementptr inbounds i8, ptr %5, i64 84
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %166, ptr noundef nonnull %42)
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(102) %5)
  %167 = and i32 %.1, 268435456
  %.not355 = icmp eq i32 %167, 0
  br i1 %.not355, label %172, label %168

168:                                              ; preds = %161
  %169 = getelementptr inbounds i8, ptr %42, i64 24092
  %170 = load i32, ptr %169, align 4, !tbaa !133
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr %169, align 4, !tbaa !133
  br label %172

172:                                              ; preds = %168, %161
  %.pre = load ptr, ptr %4, align 8
  br i1 %.not349, label %178, label %173

173:                                              ; preds = %172
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre, i32 noundef %.1, ptr noundef %151)
  %174 = load ptr, ptr %4, align 8
  %175 = getelementptr inbounds i8, ptr %174, i64 896
  store ptr %143, ptr %175, align 8, !tbaa !134
  %176 = select i1 %154, ptr %143, ptr null
  %177 = getelementptr inbounds i8, ptr %174, i64 936
  store ptr %176, ptr %177, align 8, !tbaa !135
  br label %178

178:                                              ; preds = %173, %172
  %179 = phi ptr [ %174, %173 ], [ %.pre, %172 ]
  %180 = and i32 %.1, 8388608
  %.not356 = icmp eq i32 %180, 0
  %181 = getelementptr inbounds i8, ptr %42, i64 18808
  %182 = getelementptr inbounds i8, ptr %179, i64 16
  %.in = select i1 %.not356, ptr %182, ptr %181
  %183 = load i32, ptr %.in, align 8, !tbaa !131
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %183)
  %184 = load i32, ptr %181, align 8, !tbaa !136
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 1008
  store i32 %184, ptr %186, align 8, !tbaa !137
  %187 = and i32 %.1, 67108864
  %.not357 = icmp eq i32 %187, 0
  br i1 %.not357, label %201, label %188

188:                                              ; preds = %178
  %189 = getelementptr inbounds i8, ptr %42, i64 19152
  %190 = getelementptr inbounds i8, ptr %42, i64 19168
  %191 = load i32, ptr %190, align 8, !tbaa !109
  %192 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %189, i32 noundef %191)
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds i8, ptr %192, i64 8
  store ptr %193, ptr %194, align 8, !tbaa !113
  %195 = getelementptr inbounds i8, ptr %143, i64 360
  %196 = load i32, ptr %195, align 8, !tbaa !138
  %197 = getelementptr inbounds i8, ptr %192, i64 24
  store i32 %196, ptr %197, align 8, !tbaa !139
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef nonnull align 8 dereferenceable(52) %192)
  %198 = load i32, ptr %192, align 8, !tbaa !111
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds i8, ptr %199, i64 216
  store i32 %198, ptr %200, align 8, !tbaa !110
  br label %201

201:                                              ; preds = %188, %178
  %202 = phi ptr [ %199, %188 ], [ %185, %178 ]
  %203 = getelementptr inbounds i8, ptr %42, i64 18936
  %204 = load i32, ptr %203, align 8, !tbaa !116
  %205 = and i32 %204, 1
  %.not358 = icmp eq i32 %205, 0
  br i1 %.not358, label %232, label %206

206:                                              ; preds = %201
  %207 = getelementptr inbounds i8, ptr %202, i64 232
  %208 = load i32, ptr %207, align 8
  %209 = shl i32 %208, 24
  %210 = ashr exact i32 %209, 24
  %211 = getelementptr inbounds i8, ptr %42, i64 18940
  %212 = load i32, ptr %211, align 4, !tbaa !140
  %213 = and i32 %210, %212
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %228

215:                                              ; preds = %206
  %216 = getelementptr inbounds i8, ptr %42, i64 18960
  %217 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %216)
  %218 = fcmp ogt float %217, 0x3EE4F8B580000000
  %.pre516 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %218, label %219, label %._crit_edge

._crit_edge:                                      ; preds = %215
  %.pre517 = load i32, ptr %211, align 4, !tbaa !140
  br label %228

219:                                              ; preds = %215
  %220 = getelementptr inbounds i8, ptr %42, i64 18952
  %221 = getelementptr inbounds i8, ptr %.pre516, i64 236
  %222 = load i64, ptr %220, align 8
  store i64 %222, ptr %221, align 4
  %223 = getelementptr inbounds i8, ptr %.pre516, i64 244
  %224 = load i64, ptr %216, align 8
  store i64 %224, ptr %223, align 4
  %225 = getelementptr inbounds i8, ptr %.pre516, i64 232
  %226 = load i32, ptr %225, align 8
  %227 = and i32 %226, -15
  store i32 %227, ptr %225, align 8
  br label %232

228:                                              ; preds = %._crit_edge, %206
  %229 = phi i32 [ %.pre517, %._crit_edge ], [ %212, %206 ]
  %230 = phi ptr [ %.pre516, %._crit_edge ], [ %202, %206 ]
  %231 = getelementptr inbounds i8, ptr %42, i64 18952
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %230, ptr noundef nonnull align 4 dereferenceable(8) %231, i32 noundef %229)
  br label %232

232:                                              ; preds = %219, %228, %201
  %.0309.shrunk = phi i1 [ true, %219 ], [ %214, %228 ], [ false, %201 ]
  %233 = load i32, ptr %203, align 8, !tbaa !116
  %234 = and i32 %233, 2
  %.not359 = icmp eq i32 %234, 0
  br i1 %.not359, label %274, label %235

235:                                              ; preds = %232
  %236 = load ptr, ptr %4, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %236, i64 232
  %238 = load i32, ptr %237, align 8
  %239 = shl i32 %238, 16
  %240 = ashr i32 %239, 24
  %241 = getelementptr inbounds i8, ptr %42, i64 18944
  %242 = load i32, ptr %241, align 8, !tbaa !141
  %243 = and i32 %240, %242
  %.not360 = icmp eq i32 %243, 0
  br i1 %.not360, label %.thread, label %244

244:                                              ; preds = %235
  %245 = getelementptr inbounds i8, ptr %42, i64 18968
  %246 = load float, ptr %245, align 8, !tbaa !142
  %247 = fcmp ogt float %246, 0.000000e+00
  %248 = getelementptr inbounds i8, ptr %42, i64 18972
  %249 = load float, ptr %248, align 4, !tbaa !143
  %250 = fcmp ogt float %249, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %235, %244
  %251 = phi i1 [ %247, %244 ], [ false, %235 ]
  %252 = phi i1 [ %250, %244 ], [ false, %235 ]
  %253 = getelementptr inbounds i8, ptr %236, i64 24
  %254 = load i32, ptr %253, align 8, !tbaa !118
  %255 = and i32 %254, 4
  %.not362 = icmp ne i32 %255, 0
  %256 = and i32 %238, 1024
  %257 = icmp eq i32 %256, 0
  %or.cond498 = and i1 %257, %.not362
  br i1 %or.cond498, label %258, label %262

258:                                              ; preds = %.thread
  %259 = getelementptr inbounds i8, ptr %236, i64 56
  %260 = load float, ptr %259, align 8, !tbaa !144
  %261 = getelementptr inbounds i8, ptr %42, i64 18968
  store float %260, ptr %261, align 8, !tbaa !142
  br label %262

262:                                              ; preds = %258, %.thread
  %263 = and i32 %254, 8
  %.not363 = icmp eq i32 %263, 0
  br i1 %.not363, label %272, label %264

264:                                              ; preds = %262
  %265 = load i32, ptr %237, align 8
  %266 = and i32 %265, 1024
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %272

268:                                              ; preds = %264
  %269 = getelementptr inbounds i8, ptr %236, i64 60
  %270 = load float, ptr %269, align 4, !tbaa !145
  %271 = getelementptr inbounds i8, ptr %42, i64 18972
  store float %270, ptr %271, align 4, !tbaa !143
  br label %272

272:                                              ; preds = %268, %264, %262
  %273 = getelementptr inbounds i8, ptr %42, i64 18968
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %236, ptr noundef nonnull align 4 dereferenceable(8) %273, i32 noundef %242)
  %.pre518 = load i32, ptr %203, align 8, !tbaa !116
  br label %274

274:                                              ; preds = %272, %232
  %275 = phi i32 [ %.pre518, %272 ], [ %233, %232 ]
  %.0311 = phi i1 [ %252, %272 ], [ false, %232 ]
  %.0310 = phi i1 [ %251, %272 ], [ false, %232 ]
  %276 = and i32 %275, 128
  %.not364 = icmp eq i32 %276, 0
  br i1 %.not364, label %293, label %277

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

281:                                              ; preds = %277
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds i8, ptr %282, i64 156
  store float %279, ptr %283, align 4, !tbaa !147
  %284 = getelementptr inbounds i8, ptr %282, i64 164
  store float 0.000000e+00, ptr %284, align 4, !tbaa !148
  br label %285

285:                                              ; preds = %281, %277
  %286 = getelementptr inbounds i8, ptr %42, i64 18988
  %287 = load float, ptr %286, align 4, !tbaa !149
  %288 = fcmp ult float %287, 0.000000e+00
  br i1 %288, label %293, label %289

289:                                              ; preds = %285
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 160
  store float %287, ptr %291, align 4, !tbaa !150
  %292 = getelementptr inbounds i8, ptr %290, i64 168
  store float 0.000000e+00, ptr %292, align 4, !tbaa !151
  br label %293

293:                                              ; preds = %285, %289, %274
  %294 = and i32 %275, 4
  %.not365 = icmp eq i32 %294, 0
  br i1 %.not365, label %300, label %295

295:                                              ; preds = %293
  %296 = getelementptr inbounds i8, ptr %42, i64 18976
  %297 = load ptr, ptr %4, align 8, !tbaa !5
  %298 = getelementptr inbounds i8, ptr %297, i64 80
  %299 = load i64, ptr %296, align 8
  store i64 %299, ptr %298, align 8
  br label %305

300:                                              ; preds = %293
  br i1 %.not349, label %._crit_edge556, label %301

._crit_edge556:                                   ; preds = %300
  %.pre521.pre551.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %305

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

305:                                              ; preds = %._crit_edge556, %301, %295
  %.pre521.pre551 = phi ptr [ %.pre521.pre551.pre, %._crit_edge556 ], [ %302, %301 ], [ %297, %295 ]
  %306 = load i32, ptr %203, align 8, !tbaa !116
  %307 = and i32 %306, 8
  %.not366 = icmp eq i32 %307, 0
  br i1 %.not366, label %314, label %308

308:                                              ; preds = %305
  %309 = getelementptr inbounds i8, ptr %42, i64 18996
  %310 = load i8, ptr %309, align 4, !tbaa !152, !range !86, !noundef !87
  %311 = trunc nuw i8 %310 to i1
  %312 = getelementptr inbounds i8, ptr %42, i64 18948
  %313 = load i32, ptr %312, align 4, !tbaa !153
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre521.pre551, i1 noundef zeroext %311, i32 noundef %313)
  %.pre519 = load i32, ptr %203, align 8, !tbaa !116
  %.pre521.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %314

314:                                              ; preds = %308, %305
  %.pre521 = phi ptr [ %.pre521.pre, %308 ], [ %.pre521.pre551, %305 ]
  %315 = phi i32 [ %.pre519, %308 ], [ %306, %305 ]
  %316 = and i32 %315, 32
  %.not367 = icmp eq i32 %316, 0
  br i1 %.not367, label %318, label %317

317:                                              ; preds = %314
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre521, i32 noundef 0)
  %.pre520 = load ptr, ptr %4, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %317, %314
  %319 = phi ptr [ %.pre520, %317 ], [ %.pre521, %314 ]
  %320 = getelementptr inbounds i8, ptr %319, i64 196
  %321 = load i8, ptr %320, align 4, !tbaa !114, !range !86, !noundef !87
  %322 = trunc nuw i8 %321 to i1
  br i1 %322, label %323, label %324

323:                                              ; preds = %318
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %319, i32 noundef 8, i1 noundef zeroext false)
  br label %324

324:                                              ; preds = %323, %318
  store ptr null, ptr %162, align 8, !tbaa !129
  br i1 %.not349, label %1313, label %325

325:                                              ; preds = %324
  %326 = and i32 %.1, 33554432
  %.not368 = icmp eq i32 %326, 0
  %327 = and i32 %.1, 50331648
  %328 = icmp eq i32 %327, 50331648
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i64 229
  %331 = load i8, ptr %330, align 1, !tbaa !154
  %332 = icmp slt i8 %331, 1
  %333 = getelementptr inbounds i8, ptr %329, i64 190
  store i8 1, ptr %333, align 2, !tbaa !155
  %334 = icmp ne ptr %1, null
  %335 = getelementptr inbounds i8, ptr %329, i64 200
  %336 = zext i1 %334 to i8
  store i8 %336, ptr %335, align 8, !tbaa !156
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 584
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %338, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !157
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  %339 = getelementptr inbounds i8, ptr %337, i64 256
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %339, i32 noundef 1)
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i64 680
  %342 = load ptr, ptr %341, align 8, !tbaa !158
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %342)
  %343 = load ptr, ptr %4, align 8, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %343, i64 448
  store i32 -1, ptr %344, align 8, !tbaa !159
  %345 = getelementptr inbounds i8, ptr %343, i64 1020
  %346 = load i8, ptr %345, align 4, !tbaa !160, !range !86, !noundef !87
  %347 = trunc nuw i8 %346 to i1
  br i1 %347, label %348, label %349

348:                                              ; preds = %325
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %343)
  %.pre522.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %349

349:                                              ; preds = %348, %325
  %.pre522 = phi ptr [ %.pre522.pre, %348 ], [ %343, %325 ]
  %350 = getelementptr inbounds i8, ptr %42, i64 19736
  %351 = load ptr, ptr %350, align 8, !tbaa !161
  %.not369 = icmp eq ptr %351, null
  br i1 %.not369, label %.critedge405, label %352

352:                                              ; preds = %349
  %353 = getelementptr inbounds i8, ptr %.pre522, i64 20
  %354 = load i32, ptr %353, align 4, !tbaa !115
  %355 = and i32 %354, 131072
  %356 = icmp ne i32 %355, 0
  %brmerge = or i1 %59, %356
  br i1 %brmerge, label %.critedge405, label %357

357:                                              ; preds = %352
  %358 = getelementptr inbounds i8, ptr %.pre522, i64 8
  %359 = load ptr, ptr %358, align 8, !tbaa !162
  %360 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %359) #15
  %.not370 = icmp eq i32 %360, 0
  br i1 %.not370, label %.critedge405, label %361

361:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %362 = getelementptr inbounds i8, ptr %.pre522, i64 128
  %363 = load i32, ptr %362, align 8, !tbaa !163
  %364 = sext i32 %363 to i64
  store i64 %364, ptr %9, align 8, !tbaa !164
  %365 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %359, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %366, i64 8
  store ptr %365, ptr %367, align 8, !tbaa !162
  %368 = load i64, ptr %9, align 8, !tbaa !164
  %369 = trunc i64 %368 to i32
  %370 = getelementptr inbounds i8, ptr %366, i64 128
  store i32 %369, ptr %370, align 8, !tbaa !163
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %.critedge405

.critedge405:                                     ; preds = %349, %352, %361, %357
  %371 = phi ptr [ %.pre522, %349 ], [ %.pre522, %352 ], [ %366, %361 ], [ %.pre522, %357 ]
  %372 = getelementptr inbounds i8, ptr %371, i64 64
  %373 = getelementptr inbounds i8, ptr %371, i64 72
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %371, ptr noundef nonnull %372, ptr noundef nonnull %373)
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds i8, ptr %374, i64 228
  %376 = load i8, ptr %375, align 4, !tbaa !166
  %377 = icmp sgt i8 %376, 0
  br i1 %377, label %378, label %380

378:                                              ; preds = %.critedge405
  %379 = add nsw i8 %376, -1
  store i8 %379, ptr %375, align 4, !tbaa !166
  br label %380

380:                                              ; preds = %378, %.critedge405
  %381 = getelementptr inbounds i8, ptr %374, i64 229
  %382 = load i8, ptr %381, align 1, !tbaa !154
  %383 = icmp sgt i8 %382, 0
  br i1 %383, label %384, label %386

384:                                              ; preds = %380
  %385 = add nsw i8 %382, -1
  store i8 %385, ptr %381, align 1, !tbaa !154
  br label %386

386:                                              ; preds = %384, %380
  %387 = getelementptr inbounds i8, ptr %374, i64 230
  %388 = load i8, ptr %387, align 2, !tbaa !167
  %389 = icmp sgt i8 %388, 0
  br i1 %389, label %390, label %392

390:                                              ; preds = %386
  %391 = add nsw i8 %388, -1
  store i8 %391, ptr %387, align 2, !tbaa !167
  br label %392

392:                                              ; preds = %390, %386
  %.not514 = xor i1 %59, true
  %393 = select i1 %.0310, i1 %.0311, i1 false
  %or.cond515 = select i1 %.not514, i1 true, i1 %393
  br i1 %or.cond515, label %395, label %394

394:                                              ; preds = %392
  store i8 1, ptr %381, align 1, !tbaa !154
  br label %395

395:                                              ; preds = %394, %392
  %396 = and i32 %.1, 100663296
  %.not371 = icmp ne i32 %396, 0
  %or.cond407.not = select i1 %.0308.in468, i1 %.not371, i1 false
  br i1 %or.cond407.not, label %397, label %412

397:                                              ; preds = %395
  store i8 1, ptr %381, align 1, !tbaa !154
  %398 = and i32 %.1, 64
  %.not372 = icmp eq i32 %398, 0
  br i1 %.not372, label %412, label %399

399:                                              ; preds = %397
  br i1 %.0310, label %403, label %400

400:                                              ; preds = %399
  %401 = getelementptr inbounds i8, ptr %374, i64 56
  store float 0.000000e+00, ptr %401, align 8, !tbaa !144
  %402 = getelementptr inbounds i8, ptr %374, i64 48
  store float 0.000000e+00, ptr %402, align 8, !tbaa !168
  br label %403

403:                                              ; preds = %400, %399
  br i1 %.0311, label %407, label %404

404:                                              ; preds = %403
  %405 = getelementptr inbounds i8, ptr %374, i64 60
  store float 0.000000e+00, ptr %405, align 4, !tbaa !145
  %406 = getelementptr inbounds i8, ptr %374, i64 52
  store float 0.000000e+00, ptr %406, align 4, !tbaa !169
  br label %407

407:                                              ; preds = %404, %403
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  %409 = getelementptr inbounds i8, ptr %408, i64 72
  %410 = load i64, ptr %10, align 8
  store i64 %410, ptr %409, align 8
  %411 = getelementptr inbounds i8, ptr %408, i64 64
  store i64 %410, ptr %411, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %412

412:                                              ; preds = %397, %407, %395
  %413 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %414, ptr noundef %413)
  %415 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %415)
  br i1 %154, label %423, label %.thread470

.thread470:                                       ; preds = %412
  %416 = and i32 %.1, 134217728
  %.not374 = icmp eq i32 %416, 0
  %or.cond408 = and i1 %.not371, %.not374
  %.in375.v = select i1 %or.cond408, i64 14624, i64 14588
  %.in375 = getelementptr inbounds i8, ptr %42, i64 %.in375.v
  %417 = load float, ptr %.in375, align 4, !tbaa !132
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds i8, ptr %418, i64 100
  store float %417, ptr %419, align 4, !tbaa !170
  %420 = getelementptr inbounds i8, ptr %42, i64 14576
  %421 = getelementptr inbounds i8, ptr %418, i64 88
  %422 = load i64, ptr %420, align 4
  store i64 %422, ptr %421, align 8
  br label %447

423:                                              ; preds = %412
  %424 = getelementptr inbounds i8, ptr %42, i64 14616
  %425 = load float, ptr %424, align 4, !tbaa !171
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = getelementptr inbounds i8, ptr %426, i64 100
  store float %425, ptr %427, align 4, !tbaa !170
  %428 = getelementptr inbounds i8, ptr %42, i64 14576
  %429 = getelementptr inbounds i8, ptr %426, i64 88
  %430 = load i64, ptr %428, align 4
  store i64 %430, ptr %429, align 8
  %431 = and i32 %.1, 83886080
  %brmerge410.not = icmp eq i32 %431, 16777216
  br i1 %brmerge410.not, label %432, label %447

432:                                              ; preds = %423
  %433 = getelementptr inbounds i8, ptr %426, i64 24
  %434 = load i32, ptr %433, align 8, !tbaa !118
  %435 = and i32 %434, 2
  %.not376 = icmp eq i32 %435, 0
  %436 = fcmp oeq float %425, 0.000000e+00
  %or.cond568 = select i1 %.not376, i1 %436, i1 false
  br i1 %or.cond568, label %437, label %447

437:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %438 = and i32 %.1, 1024
  %.not377 = icmp eq i32 %438, 0
  br i1 %.not377, label %442, label %439

439:                                              ; preds = %437
  %440 = getelementptr inbounds i8, ptr %42, i64 14580
  %441 = load float, ptr %440, align 4, !tbaa !172
  br label %442

442:                                              ; preds = %437, %439
  %443 = phi float [ %441, %439 ], [ 0.000000e+00, %437 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %443)
  %444 = load ptr, ptr %4, align 8, !tbaa !5
  %445 = getelementptr inbounds i8, ptr %444, i64 88
  %446 = load i64, ptr %11, align 8
  store i64 %446, ptr %445, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br label %447

447:                                              ; preds = %.thread470, %423, %442, %432
  %.in561.in = phi i64 [ %422, %.thread470 ], [ %430, %423 ], [ %446, %442 ], [ %430, %432 ]
  %brmerge410475 = phi i1 [ true, %.thread470 ], [ true, %423 ], [ false, %442 ], [ false, %432 ]
  %.in561 = trunc i64 %.in561.in to i32
  %448 = bitcast i32 %.in561 to float
  %.not357.not474 = xor i1 %.not357, true
  %449 = getelementptr inbounds i8, ptr %42, i64 14644
  %450 = load float, ptr %449, align 4, !tbaa !173
  %451 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %448, float noundef %450)
  %452 = getelementptr inbounds i8, ptr %42, i64 19036
  %453 = load float, ptr %452, align 4, !tbaa !174
  %454 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %451, float noundef %453)
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds i8, ptr %455, i64 372
  store float %454, ptr %456, align 4, !tbaa !175
  %457 = getelementptr inbounds i8, ptr %42, i64 19040
  %458 = load float, ptr %457, align 4, !tbaa !176
  %459 = getelementptr inbounds i8, ptr %455, i64 376
  store float %458, ptr %459, align 4, !tbaa !177
  %460 = and i32 %.1, 1
  %.not378 = icmp eq i32 %460, 0
  %461 = and i32 %.1, 33
  %or.cond411 = icmp eq i32 %461, 0
  br i1 %or.cond411, label %462, label %497

462:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #12
  %463 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %455)
  %464 = extractvalue { <2 x float>, <2 x float> } %463, 0
  store <2 x float> %464, ptr %12, align 8
  %465 = getelementptr inbounds i8, ptr %12, i64 8
  %466 = extractvalue { <2 x float>, <2 x float> } %463, 1
  store <2 x float> %466, ptr %465, align 8
  %467 = getelementptr inbounds i8, ptr %42, i64 16392
  %468 = load ptr, ptr %467, align 8, !tbaa !178
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = icmp eq ptr %468, %469
  br i1 %470, label %471, label %487

471:                                              ; preds = %462
  %472 = getelementptr inbounds i8, ptr %42, i64 16464
  %473 = load i32, ptr %472, align 8, !tbaa !179
  %474 = icmp eq i32 %473, 0
  br i1 %474, label %475, label %487

475:                                              ; preds = %471
  %476 = getelementptr inbounds i8, ptr %42, i64 16468
  %477 = load i32, ptr %476, align 4, !tbaa !180
  %478 = icmp eq i32 %477, 0
  br i1 %478, label %479, label %487

479:                                              ; preds = %475
  %480 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %465, i1 noundef zeroext true)
  br i1 %480, label %481, label %._crit_edge523

._crit_edge523:                                   ; preds = %479
  %.pre524 = load ptr, ptr %4, align 8, !tbaa !5
  br label %487

481:                                              ; preds = %479
  %482 = getelementptr inbounds i8, ptr %42, i64 14442
  %483 = load i16, ptr %482, align 2, !tbaa !181
  %484 = icmp eq i16 %483, 2
  %.pre525 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %484, label %485, label %487

485:                                              ; preds = %481
  %486 = getelementptr inbounds i8, ptr %.pre525, i64 194
  store i8 1, ptr %486, align 2, !tbaa !182
  br label %487

487:                                              ; preds = %._crit_edge523, %485, %481, %475, %471, %462
  %488 = phi ptr [ %.pre524, %._crit_edge523 ], [ %.pre525, %485 ], [ %.pre525, %481 ], [ %469, %475 ], [ %469, %471 ], [ %469, %462 ]
  %489 = getelementptr inbounds i8, ptr %488, i64 194
  %490 = load i8, ptr %489, align 2, !tbaa !182, !range !86, !noundef !87
  %491 = trunc nuw i8 %490 to i1
  br i1 %491, label %492, label %496

492:                                              ; preds = %487
  %493 = getelementptr inbounds i8, ptr %488, i64 193
  %494 = load i8, ptr %493, align 1, !tbaa !183, !range !86, !noundef !87
  %495 = xor i8 %494, 1
  store i8 %495, ptr %493, align 1, !tbaa !183
  %.not504.not = icmp ne i8 %494, 0
  %spec.select412 = or i1 %.not504.not, %59
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %488)
  %.pre526.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %496

496:                                              ; preds = %492, %487
  %.pre526 = phi ptr [ %.pre526.pre, %492 ], [ %488, %487 ]
  %.1316 = phi i1 [ %spec.select412, %492 ], [ %59, %487 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  br label %499

497:                                              ; preds = %447
  %498 = getelementptr inbounds i8, ptr %455, i64 193
  store i8 0, ptr %498, align 1, !tbaa !183
  br label %499

499:                                              ; preds = %497, %496
  %500 = phi ptr [ %455, %497 ], [ %.pre526, %496 ]
  %.2317 = phi i1 [ %59, %497 ], [ %.1316, %496 ]
  %501 = getelementptr inbounds i8, ptr %500, i64 194
  store i8 0, ptr %501, align 2, !tbaa !182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %502 = getelementptr inbounds i8, ptr %500, i64 180
  %503 = load i64, ptr %502, align 4
  store i64 %503, ptr %13, align 8
  %504 = getelementptr inbounds i8, ptr %500, i64 104
  store float 0.000000e+00, ptr %504, align 8, !tbaa !184
  %505 = getelementptr inbounds i8, ptr %500, i64 112
  store float 0.000000e+00, ptr %505, align 8, !tbaa !185
  %506 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1021) %500)
  %507 = load ptr, ptr %4, align 8, !tbaa !5
  %508 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(1021) %507)
  %509 = fadd float %506, %508
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = getelementptr inbounds i8, ptr %510, i64 108
  store float %509, ptr %511, align 4, !tbaa !186
  %512 = getelementptr inbounds i8, ptr %510, i64 116
  store float 0.000000e+00, ptr %512, align 4, !tbaa !187
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds i8, ptr %513, i64 180
  %515 = load i64, ptr %14, align 8
  store i64 %515, ptr %514, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %516 = getelementptr inbounds i8, ptr %513, i64 72
  %517 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %513, ptr noundef nonnull align 4 dereferenceable(8) %516)
  store <2 x float> %517, ptr %15, align 8
  %518 = and i32 %.1, 64
  %.not380 = icmp ne i32 %518, 0
  %519 = extractelement <2 x float> %517, i64 0
  %520 = extractelement <2 x float> %517, i64 1
  %.pre527 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not380, label %521, label %531

521:                                              ; preds = %499
  %522 = getelementptr inbounds i8, ptr %.pre527, i64 193
  %523 = load i8, ptr %522, align 1, !tbaa !183, !range !86, !noundef !87
  %524 = trunc nuw i8 %523 to i1
  br i1 %524, label %531, label %525

525:                                              ; preds = %521
  br i1 %.0310, label %528, label %526

526:                                              ; preds = %525
  %527 = getelementptr inbounds i8, ptr %.pre527, i64 56
  store float %519, ptr %527, align 8, !tbaa !144
  br label %528

528:                                              ; preds = %526, %525
  %.0313 = phi i1 [ %59, %525 ], [ true, %526 ]
  br i1 %.0311, label %580, label %529

529:                                              ; preds = %528
  %530 = getelementptr inbounds i8, ptr %.pre527, i64 60
  store float %520, ptr %530, align 4, !tbaa !145
  br label %580

531:                                              ; preds = %521, %499
  %532 = getelementptr inbounds i8, ptr %.pre527, i64 220
  %533 = load i8, ptr %532, align 4, !tbaa !188
  %534 = icmp sgt i8 %533, 0
  br i1 %534, label %539, label %535

535:                                              ; preds = %531
  %536 = getelementptr inbounds i8, ptr %.pre527, i64 221
  %537 = load i8, ptr %536, align 1, !tbaa !189
  %538 = icmp sgt i8 %537, 0
  br i1 %538, label %.thread477, label %580

539:                                              ; preds = %531
  br i1 %.0310, label %.thread477, label %540

540:                                              ; preds = %539
  %541 = getelementptr inbounds i8, ptr %.pre527, i64 222
  %542 = load i8, ptr %541, align 2, !tbaa !190, !range !86, !noundef !87
  %543 = trunc nuw i8 %542 to i1
  br i1 %543, label %544, label %548

544:                                              ; preds = %540
  %545 = getelementptr inbounds i8, ptr %.pre527, i64 56
  %546 = load float, ptr %545, align 8, !tbaa !144
  %547 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %546, float noundef %519)
  %.pre528 = load ptr, ptr %4, align 8, !tbaa !5
  br label %548

548:                                              ; preds = %540, %544
  %549 = phi ptr [ %.pre528, %544 ], [ %.pre527, %540 ]
  %550 = phi float [ %547, %544 ], [ %519, %540 ]
  %551 = getelementptr inbounds i8, ptr %549, i64 56
  store float %550, ptr %551, align 8, !tbaa !144
  br label %.thread477

.thread477:                                       ; preds = %535, %548, %539
  %552 = phi ptr [ %.pre527, %539 ], [ %549, %548 ], [ %.pre527, %535 ]
  %.1314 = phi i1 [ %59, %539 ], [ true, %548 ], [ %59, %535 ]
  br i1 %.0311, label %574, label %553

553:                                              ; preds = %.thread477
  %554 = getelementptr inbounds i8, ptr %552, i64 221
  %555 = load i8, ptr %554, align 1, !tbaa !189
  %556 = icmp sgt i8 %555, 0
  br i1 %556, label %557, label %574

557:                                              ; preds = %553
  %558 = getelementptr inbounds i8, ptr %552, i64 222
  %559 = load i8, ptr %558, align 2, !tbaa !190, !range !86, !noundef !87
  %560 = trunc nuw i8 %559 to i1
  br i1 %560, label %561, label %567

561:                                              ; preds = %557
  %562 = getelementptr inbounds i8, ptr %552, i64 60
  %563 = load float, ptr %562, align 4, !tbaa !145
  %564 = getelementptr inbounds i8, ptr %15, i64 4
  %565 = load float, ptr %564, align 4, !tbaa !191
  %566 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %563, float noundef %565)
  %.pre529 = load ptr, ptr %4, align 8, !tbaa !5
  br label %570

567:                                              ; preds = %557
  %568 = getelementptr inbounds i8, ptr %15, i64 4
  %569 = load float, ptr %568, align 4, !tbaa !191
  br label %570

570:                                              ; preds = %567, %561
  %571 = phi ptr [ %.pre529, %561 ], [ %552, %567 ]
  %572 = phi float [ %566, %561 ], [ %569, %567 ]
  %573 = getelementptr inbounds i8, ptr %571, i64 60
  store float %572, ptr %573, align 4, !tbaa !145
  br label %574

574:                                              ; preds = %570, %553, %.thread477
  %575 = phi ptr [ %552, %.thread477 ], [ %571, %570 ], [ %552, %553 ]
  %.3318 = phi i1 [ %.2317, %.thread477 ], [ true, %570 ], [ %.2317, %553 ]
  %576 = getelementptr inbounds i8, ptr %575, i64 193
  %577 = load i8, ptr %576, align 1, !tbaa !183, !range !86, !noundef !87
  %578 = trunc nuw i8 %577 to i1
  br i1 %578, label %580, label %579

579:                                              ; preds = %574
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %575)
  %.pre530 = load ptr, ptr %4, align 8, !tbaa !5
  br label %580

580:                                              ; preds = %535, %579, %574, %528, %529
  %581 = phi ptr [ %575, %574 ], [ %.pre530, %579 ], [ %.pre527, %535 ], [ %.pre527, %528 ], [ %.pre527, %529 ]
  %.4319 = phi i1 [ %.3318, %574 ], [ %.3318, %579 ], [ %.2317, %535 ], [ %.2317, %528 ], [ true, %529 ]
  %.2 = phi i1 [ %.1314, %574 ], [ %.1314, %579 ], [ %59, %535 ], [ %.0313, %528 ], [ %.0313, %529 ]
  %582 = getelementptr inbounds i8, ptr %581, i64 56
  %583 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %581, ptr noundef nonnull align 4 dereferenceable(8) %582)
  %584 = load ptr, ptr %4, align 8, !tbaa !5
  %585 = getelementptr inbounds i8, ptr %584, i64 56
  store <2 x float> %583, ptr %585, align 8
  %586 = getelementptr inbounds i8, ptr %584, i64 193
  %587 = load i8, ptr %586, align 1, !tbaa !183, !range !86, !noundef !87
  %588 = trunc nuw i8 %587 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #12
  %.not413 = xor i1 %588, true
  %brmerge414 = select i1 %.not413, i1 true, i1 %154
  br i1 %brmerge414, label %595, label %589

589:                                              ; preds = %580
  %590 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %584)
  %591 = extractvalue { <2 x float>, <2 x float> } %590, 0
  store <2 x float> %591, ptr %16, align 8
  %592 = getelementptr inbounds i8, ptr %16, i64 8
  %593 = extractvalue { <2 x float>, <2 x float> } %590, 1
  store <2 x float> %593, ptr %592, align 8
  %594 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre531 = load ptr, ptr %4, align 8, !tbaa !5
  br label %595

595:                                              ; preds = %580, %589
  %596 = phi ptr [ %.pre531, %589 ], [ %584, %580 ]
  %.sroa.044.0 = phi <2 x float> [ %594, %589 ], [ %583, %580 ]
  %597 = getelementptr inbounds i8, ptr %596, i64 48
  store <2 x float> %.sroa.044.0, ptr %597, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  br i1 %.0308.in468, label %598, label %608

598:                                              ; preds = %595
  %599 = getelementptr inbounds i8, ptr %596, i64 224
  store i32 -1, ptr %599, align 8, !tbaa !192
  %600 = and i32 %.1, 201326592
  %or.cond416.not505 = icmp ne i32 %600, 67108864
  %brmerge417 = or i1 %or.cond416.not505, %.0309.shrunk
  br i1 %brmerge417, label %608, label %601

601:                                              ; preds = %598
  %602 = getelementptr inbounds i8, ptr %42, i64 19168
  %603 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %602)
  %604 = getelementptr inbounds i8, ptr %603, i64 36
  %605 = load ptr, ptr %4, align 8, !tbaa !5
  %606 = getelementptr inbounds i8, ptr %605, i64 40
  %607 = load i64, ptr %604, align 4
  store i64 %607, ptr %606, align 8
  br label %608

608:                                              ; preds = %598, %601, %595
  %609 = phi ptr [ %596, %598 ], [ %605, %601 ], [ %596, %595 ]
  br i1 %154, label %610, label %624

610:                                              ; preds = %608
  br i1 %152, label %.critedge2, label %611

611:                                              ; preds = %610
  %612 = getelementptr inbounds i8, ptr %151, i64 190
  %613 = load i8, ptr %612, align 2, !tbaa !155, !range !86, !noundef !87
  %614 = trunc nuw i8 %613 to i1
  br i1 %614, label %615, label %.critedge2

.critedge2:                                       ; preds = %610, %611
  call void @__assert_fail(ptr noundef nonnull @.str.149, ptr noundef nonnull @.str.3, i32 noundef 6700, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

615:                                              ; preds = %611
  %616 = getelementptr inbounds i8, ptr %151, i64 416
  %617 = load i32, ptr %616, align 8, !tbaa !193
  %618 = trunc i32 %617 to i16
  %619 = getelementptr inbounds i8, ptr %609, i64 208
  store i16 %618, ptr %619, align 8, !tbaa !121
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %616, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %brmerge419 = or i1 %.0309.shrunk, %.not357.not474
  %brmerge420 = select i1 %brmerge419, i1 true, i1 %328
  %.pre532 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge420, label %624, label %620

620:                                              ; preds = %615
  %621 = getelementptr inbounds i8, ptr %151, i64 272
  %622 = getelementptr inbounds i8, ptr %.pre532, i64 40
  %623 = load i64, ptr %621, align 8
  store i64 %623, ptr %622, align 8
  br label %624

624:                                              ; preds = %615, %620, %608
  %625 = phi ptr [ %.pre532, %615 ], [ %.pre532, %620 ], [ %609, %608 ]
  %626 = getelementptr inbounds i8, ptr %625, i64 236
  %627 = load float, ptr %626, align 4, !tbaa !194
  %628 = fcmp une float %627, 0x47EFFFFFE0000000
  br i1 %628, label %629, label %.critedge422

629:                                              ; preds = %624
  %630 = getelementptr inbounds i8, ptr %625, i64 229
  %631 = load i8, ptr %630, align 1, !tbaa !154
  %632 = icmp eq i8 %631, 0
  br i1 %632, label %633, label %.critedge422

633:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %634 = getelementptr inbounds i8, ptr %625, i64 48
  %635 = getelementptr inbounds i8, ptr %625, i64 244
  %636 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %634, ptr noundef nonnull align 4 dereferenceable(8) %635)
  store <2 x float> %636, ptr %18, align 8
  %637 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %626, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %637, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %625, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  br label %652

.critedge422:                                     ; preds = %624, %629
  br i1 %.not355, label %642, label %638

638:                                              ; preds = %.critedge422
  %639 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %625)
  %640 = load ptr, ptr %4, align 8, !tbaa !5
  %641 = getelementptr inbounds i8, ptr %640, i64 40
  store <2 x float> %639, ptr %641, align 8
  br label %652

642:                                              ; preds = %.critedge422
  %brmerge423 = or i1 %.not357, %.0309.shrunk
  %brmerge425 = select i1 %brmerge423, i1 true, i1 %332
  br i1 %brmerge425, label %647, label %643

643:                                              ; preds = %642
  %644 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %625)
  %645 = load ptr, ptr %4, align 8, !tbaa !5
  %646 = getelementptr inbounds i8, ptr %645, i64 40
  store <2 x float> %644, ptr %646, align 8
  br label %652

647:                                              ; preds = %642
  %brmerge426 = or i1 %.not368, %.0309.shrunk
  %brmerge427 = select i1 %brmerge426, i1 true, i1 %328
  br i1 %brmerge427, label %652, label %648

648:                                              ; preds = %647
  %649 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %625)
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds i8, ptr %650, i64 40
  store <2 x float> %649, ptr %651, align 8
  br label %652

652:                                              ; preds = %647, %638, %648, %643, %633
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #12
  %653 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(200) %413)
  %654 = extractvalue { <2 x float>, <2 x float> } %653, 0
  store <2 x float> %654, ptr %19, align 8
  %655 = getelementptr inbounds i8, ptr %19, i64 8
  %656 = extractvalue { <2 x float>, <2 x float> } %653, 1
  store <2 x float> %656, ptr %655, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #12
  %657 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(200) %413)
  %658 = extractvalue { <2 x float>, <2 x float> } %657, 0
  store <2 x float> %658, ptr %20, align 8
  %659 = getelementptr inbounds i8, ptr %20, i64 8
  %660 = extractvalue { <2 x float>, <2 x float> } %657, 1
  store <2 x float> %660, ptr %659, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %661 = getelementptr inbounds i8, ptr %42, i64 14764
  %662 = getelementptr inbounds i8, ptr %42, i64 14772
  %663 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %661, ptr noundef nonnull align 4 dereferenceable(8) %662)
  store <2 x float> %663, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %664 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %664, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %665 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %659, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %665, ptr %24, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %24)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  %brmerge428 = select i1 %.0309.shrunk, i1 true, i1 %154
  br i1 %brmerge428, label %674, label %666

666:                                              ; preds = %652
  %667 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %668 = fcmp ogt float %667, 0.000000e+00
  br i1 %668, label %669, label %674

669:                                              ; preds = %666
  %670 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %671 = fcmp ogt float %670, 0.000000e+00
  br i1 %671, label %672, label %674

672:                                              ; preds = %669
  %673 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %673, ptr noundef nonnull align 4 dereferenceable(16) %22)
  br label %674

674:                                              ; preds = %652, %666, %669, %672
  %675 = load ptr, ptr %4, align 8, !tbaa !5
  %676 = getelementptr inbounds i8, ptr %675, i64 40
  %677 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %676)
  %678 = load ptr, ptr %4, align 8, !tbaa !5
  %679 = getelementptr inbounds i8, ptr %678, i64 40
  store <2 x float> %677, ptr %679, align 8
  %680 = and i32 %.1, 201326592
  %or.cond430.not.not = icmp eq i32 %680, 67108864
  %. = select i1 %or.cond430.not.not, i64 14620, i64 14584
  %.sink = select i1 %154, i64 14612, i64 %.
  %681 = getelementptr inbounds i8, ptr %42, i64 %.sink
  %682 = load float, ptr %681, align 4, !tbaa !132
  %683 = getelementptr inbounds i8, ptr %678, i64 96
  store float %682, ptr %683, align 8, !tbaa !195
  %684 = and i32 %.1, 4096
  %.not384 = icmp eq i32 %684, 0
  %or.cond431.not = select i1 %.0308.in468, i1 %.not384, i1 false
  %brmerge466.not = and i1 %.not357, %or.cond431.not
  %685 = icmp eq i32 %327, 0
  %spec.select499 = select i1 %brmerge466.not, i1 %685, i1 %or.cond431.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #12
  store i32 -1, ptr %25, align 4, !tbaa !131
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #12
  store i32 -1, ptr %26, align 4, !tbaa !131
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %27, i8 0, i64 16, i1 false)
  br i1 %brmerge410475, label %686, label %691

686:                                              ; preds = %674
  %687 = getelementptr inbounds i8, ptr %42, i64 94
  %688 = load i8, ptr %687, align 2, !tbaa !196, !range !86, !noundef !87
  %689 = trunc nuw i8 %688 to i1
  %690 = select i1 %689, i32 2, i32 1
  br label %691

691:                                              ; preds = %674, %686
  %692 = phi i32 [ %690, %686 ], [ 0, %674 ]
  %693 = getelementptr inbounds i8, ptr %42, i64 15672
  %694 = load float, ptr %693, align 8, !tbaa !197
  %695 = fmul float %694, 0x3FF19999A0000000
  %696 = fadd float %682, 1.000000e+00
  %697 = call float @llvm.fmuladd.f32(float %694, float 0x3FC99999A0000000, float %696)
  %698 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %695, float noundef %697)
  %699 = fptosi float %698 to i32
  %700 = sitofp i32 %699 to float
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds i8, ptr %701, i64 193
  %703 = load i8, ptr %702, align 1, !tbaa !183, !range !86, !noundef !87
  %704 = trunc nuw i8 %703 to i1
  br i1 %704, label %710, label %705

705:                                              ; preds = %691
  %706 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %701, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %25, ptr noundef nonnull %26, i32 noundef %692, ptr noundef nonnull %27, ptr noundef nonnull align 4 dereferenceable(16) %22)
  %.not385 = icmp eq i32 %706, 0
  br i1 %.not385, label %710, label %707

707:                                              ; preds = %705
  %708 = and i32 %706, 1
  %.not386 = icmp ne i32 %708, 0
  %spec.select436 = or i1 %.not386, %.2
  %709 = and i32 %706, 2
  %.not387 = icmp ne i32 %709, 0
  %spec.select467 = or i1 %.not387, %.4319
  br label %710

710:                                              ; preds = %707, %705, %691
  %.6 = phi i1 [ %.4319, %691 ], [ %.4319, %705 ], [ %spec.select467, %707 ]
  %.5 = phi i1 [ %.2, %691 ], [ %.2, %705 ], [ %spec.select436, %707 ]
  %711 = load i32, ptr %25, align 4, !tbaa !131
  %712 = trunc i32 %711 to i8
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds i8, ptr %713, i64 201
  store i8 %712, ptr %714, align 1, !tbaa !198
  %715 = load i32, ptr %26, align 4, !tbaa !131
  %716 = trunc i32 %715 to i8
  %717 = getelementptr inbounds i8, ptr %713, i64 202
  store i8 %716, ptr %717, align 2, !tbaa !199
  %718 = getelementptr inbounds i8, ptr %713, i64 193
  %719 = load i8, ptr %718, align 1, !tbaa !183, !range !86, !noundef !87
  %720 = trunc nuw i8 %719 to i1
  br i1 %720, label %822, label %721

721:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %722 = getelementptr inbounds i8, ptr %713, i64 56
  %723 = load float, ptr %722, align 8, !tbaa !144
  %724 = getelementptr inbounds i8, ptr %713, i64 60
  %725 = load float, ptr %724, align 4, !tbaa !145
  %726 = getelementptr inbounds i8, ptr %713, i64 108
  %727 = load float, ptr %726, align 4, !tbaa !186
  %728 = getelementptr inbounds i8, ptr %713, i64 116
  %729 = load float, ptr %728, align 4, !tbaa !187
  %730 = fadd float %727, %729
  %731 = fsub float %725, %730
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %723, float noundef %731)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #12
  %732 = load ptr, ptr %4, align 8, !tbaa !5
  %733 = getelementptr inbounds i8, ptr %732, i64 520
  %734 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %733)
  store <2 x float> %734, ptr %29, align 8
  %735 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #12
  br i1 %59, label %736, label %737

736:                                              ; preds = %721
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br label %743

737:                                              ; preds = %721
  %738 = load ptr, ptr %4, align 8, !tbaa !5
  %739 = getelementptr inbounds i8, ptr %738, i64 64
  %740 = getelementptr inbounds i8, ptr %738, i64 88
  %741 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %740, float noundef 2.000000e+00)
  store <2 x float> %741, ptr %31, align 8
  %742 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %739, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %742, ptr %30, align 8
  br label %743

743:                                              ; preds = %737, %736
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  %744 = load float, ptr %28, align 4
  %.sroa.029.0.vec.extract = extractelement <2 x float> %735, i64 0
  %745 = select i1 %.5, float %744, float %.sroa.029.0.vec.extract
  %746 = getelementptr inbounds i8, ptr %28, i64 4
  %747 = load float, ptr %746, align 4
  %.sroa.029.4.vec.extract = extractelement <2 x float> %735, i64 1
  %748 = select i1 %.6, float %747, float %.sroa.029.4.vec.extract
  %749 = and i32 %.1, 16384
  %.not388 = icmp eq i32 %749, 0
  br i1 %.not388, label %750, label %.thread478

750:                                              ; preds = %743
  %751 = getelementptr inbounds i8, ptr %30, i64 4
  %752 = load float, ptr %751, align 4, !tbaa !191
  %753 = fcmp ogt float %752, %748
  %754 = and i32 %.1, 8
  %.not389 = icmp eq i32 %754, 0
  %755 = select i1 %753, i1 %.not389, i1 false
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds i8, ptr %756, i64 189
  %758 = zext i1 %755 to i8
  store i8 %758, ptr %757, align 1, !tbaa !200
  %759 = and i32 %.1, 32768
  %.not390 = icmp eq i32 %759, 0
  br i1 %.not390, label %765, label %.thread483

.thread478:                                       ; preds = %743
  %760 = load ptr, ptr %4, align 8, !tbaa !5
  %761 = getelementptr inbounds i8, ptr %760, i64 189
  store i8 1, ptr %761, align 1, !tbaa !200
  %762 = and i32 %.1, 32768
  %.not390479 = icmp eq i32 %762, 0
  br i1 %.not390479, label %.thread480, label %.thread483.thread

.thread483.thread:                                ; preds = %.thread478
  %763 = getelementptr inbounds i8, ptr %760, i64 188
  store i8 1, ptr %763, align 4, !tbaa !201
  br label %.thread567

.thread480:                                       ; preds = %.thread478
  %764 = load float, ptr %30, align 8, !tbaa !202
  %.pre560 = and i32 %.1, 8
  br label %767

765:                                              ; preds = %750
  %766 = load float, ptr %30, align 8, !tbaa !202
  br i1 %755, label %767, label %773

767:                                              ; preds = %.thread480, %765
  %.pre558.pre-phi = phi i32 [ %.pre560, %.thread480 ], [ 0, %765 ]
  %768 = phi float [ %764, %.thread480 ], [ %766, %765 ]
  %769 = phi ptr [ %760, %.thread480 ], [ %756, %765 ]
  %770 = phi ptr [ %761, %.thread480 ], [ %757, %765 ]
  %771 = getelementptr inbounds i8, ptr %42, i64 14684
  %772 = load float, ptr %771, align 4, !tbaa !203
  br label %773

773:                                              ; preds = %765, %767
  %.pre-phi = phi i32 [ %754, %765 ], [ %.pre558.pre-phi, %767 ]
  %774 = phi i8 [ 0, %765 ], [ 1, %767 ]
  %775 = phi float [ %766, %765 ], [ %768, %767 ]
  %776 = phi i1 [ false, %765 ], [ true, %767 ]
  %777 = phi ptr [ %756, %765 ], [ %769, %767 ]
  %778 = phi ptr [ %757, %765 ], [ %770, %767 ]
  %779 = phi float [ 0.000000e+00, %765 ], [ %772, %767 ]
  %780 = fsub float %745, %779
  %781 = fcmp ogt float %775, %780
  %.not391 = icmp eq i32 %.pre-phi, 0
  %or.cond437 = select i1 %781, i1 %.not391, i1 false
  br i1 %or.cond437, label %784, label %.thread484

.thread484:                                       ; preds = %773
  %782 = getelementptr inbounds i8, ptr %777, i64 188
  store i8 0, ptr %782, align 4, !tbaa !201
  br label %796

.thread483:                                       ; preds = %750
  %783 = getelementptr inbounds i8, ptr %756, i64 188
  store i8 1, ptr %783, align 4, !tbaa !201
  br i1 %755, label %.thread567, label %788

784:                                              ; preds = %773
  %785 = and i32 %.1, 2048
  %.not506 = icmp eq i32 %785, 0
  %786 = getelementptr inbounds i8, ptr %777, i64 188
  %.lobit = lshr exact i32 %785, 11
  %787 = trunc nuw nsw i32 %.lobit to i8
  store i8 %787, ptr %786, align 4, !tbaa !201
  %brmerge501 = or i1 %.not506, %776
  %not..not506 = xor i1 %.not506, true
  br i1 %brmerge501, label %796, label %._crit_edge533

._crit_edge533:                                   ; preds = %784
  %.phi.trans.insert = getelementptr inbounds i8, ptr %30, i64 4
  %.pre534 = load float, ptr %.phi.trans.insert, align 4, !tbaa !191
  br label %788

788:                                              ; preds = %._crit_edge533, %.thread483
  %.pre-phi559 = phi i32 [ 0, %._crit_edge533 ], [ %754, %.thread483 ]
  %789 = phi float [ %.pre534, %._crit_edge533 ], [ %752, %.thread483 ]
  %790 = phi ptr [ %778, %._crit_edge533 ], [ %757, %.thread483 ]
  %791 = fcmp ogt float %789, %748
  %.not392 = icmp eq i32 %.pre-phi559, 0
  %792 = select i1 %791, i1 %.not392, i1 false
  %793 = zext i1 %792 to i8
  store i8 %793, ptr %790, align 1, !tbaa !200
  br label %796

.thread567:                                       ; preds = %.thread483.thread, %.thread483
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %794 = getelementptr inbounds i8, ptr %42, i64 14684
  %795 = load float, ptr %794, align 4, !tbaa !203
  br label %804

796:                                              ; preds = %784, %.thread484, %788
  %797 = phi i8 [ %793, %788 ], [ %774, %784 ], [ %774, %.thread484 ]
  %798 = phi i1 [ true, %788 ], [ %not..not506, %784 ], [ false, %.thread484 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %799 = trunc nuw i8 %797 to i1
  br i1 %799, label %800, label %803

800:                                              ; preds = %796
  %801 = getelementptr inbounds i8, ptr %42, i64 14684
  %802 = load float, ptr %801, align 4, !tbaa !203
  br i1 %798, label %804, label %808

803:                                              ; preds = %796
  br i1 %798, label %804, label %808

804:                                              ; preds = %.thread567, %800, %803
  %805 = phi float [ %802, %800 ], [ 0.000000e+00, %803 ], [ %795, %.thread567 ]
  %806 = getelementptr inbounds i8, ptr %42, i64 14684
  %807 = load float, ptr %806, align 4, !tbaa !203
  br label %808

808:                                              ; preds = %800, %803, %804
  %809 = phi float [ %805, %804 ], [ 0.000000e+00, %803 ], [ %802, %800 ]
  %810 = phi float [ %807, %804 ], [ 0.000000e+00, %803 ], [ 0.000000e+00, %800 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %809, float noundef %810)
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  %812 = getelementptr inbounds i8, ptr %811, i64 180
  %813 = load i64, ptr %32, align 8
  store i64 %813, ptr %812, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  %814 = getelementptr inbounds i8, ptr %811, i64 112
  %815 = lshr i64 %813, 32
  %816 = insertelement <2 x i64> poison, i64 %813, i64 0
  %817 = insertelement <2 x i64> %816, i64 %815, i64 1
  %818 = trunc <2 x i64> %817 to <2 x i32>
  %819 = bitcast <2 x i32> %818 to <2 x float>
  %820 = load <2 x float>, ptr %814, align 8, !tbaa !132
  %821 = fadd <2 x float> %820, %819
  store <2 x float> %821, ptr %814, align 8, !tbaa !132
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #12
  br label %822

822:                                              ; preds = %808, %710
  %823 = phi ptr [ %811, %808 ], [ %713, %710 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #12
  %824 = getelementptr inbounds i8, ptr %151, i64 584
  %825 = select i1 %brmerge410475, i1 true, i1 %328
  %826 = select i1 %825, ptr %19, ptr %824
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %826, i64 16, i1 false), !tbaa.struct !157
  %827 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %823)
  %828 = extractvalue { <2 x float>, <2 x float> } %827, 0
  %829 = extractvalue { <2 x float>, <2 x float> } %827, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #12
  %830 = load ptr, ptr %4, align 8, !tbaa !5
  %831 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1021) %830)
  %832 = extractvalue { <2 x float>, <2 x float> } %831, 0
  store <2 x float> %832, ptr %34, align 8
  %833 = getelementptr inbounds i8, ptr %34, i64 8
  %834 = extractvalue { <2 x float>, <2 x float> } %831, 1
  store <2 x float> %834, ptr %833, align 8
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds i8, ptr %835, i64 504
  store <2 x float> %828, ptr %836, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %835, i64 512
  store <2 x float> %829, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %836, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %837 = load ptr, ptr %4, align 8
  %838 = getelementptr inbounds i8, ptr %837, i64 40
  %839 = getelementptr inbounds i8, ptr %837, i64 104
  %840 = getelementptr inbounds i8, ptr %837, i64 520
  %841 = getelementptr inbounds i8, ptr %837, i64 48
  %842 = load <2 x float>, ptr %838, align 8, !tbaa !132
  %843 = load <2 x float>, ptr %841, align 8, !tbaa !132
  %844 = fadd <2 x float> %842, %843
  %845 = load <4 x float>, ptr %839, align 8, !tbaa !132
  %846 = shufflevector <2 x float> %842, <2 x float> %844, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %847 = fadd <4 x float> %846, %845
  %848 = fsub <4 x float> %846, %845
  %849 = shufflevector <4 x float> %847, <4 x float> %848, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %849, ptr %840, align 8, !tbaa !132
  %850 = and i32 %.1, 1025
  %brmerge442.not = icmp eq i32 %850, 1
  %851 = getelementptr inbounds i8, ptr %42, i64 14640
  %852 = getelementptr inbounds i8, ptr %837, i64 100
  %.in394 = select i1 %brmerge442.not, ptr %852, ptr %851
  %853 = load float, ptr %.in394, align 4, !tbaa !132
  %854 = extractelement <4 x float> %847, i64 0
  %855 = fadd float %854, 5.000000e-01
  %856 = getelementptr inbounds i8, ptr %837, i64 88
  %857 = load float, ptr %856, align 8, !tbaa !204
  %858 = fmul float %857, 5.000000e-01
  %859 = call noundef float @_ZL7ImTruncf(float noundef %858)
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds i8, ptr %860, i64 100
  %862 = load float, ptr %861, align 4, !tbaa !170
  %863 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %859, float noundef %862)
  %864 = fadd float %855, %863
  %865 = call noundef float @_ZL7ImTruncf(float noundef %864)
  %866 = load ptr, ptr %4, align 8, !tbaa !5
  %867 = getelementptr inbounds i8, ptr %866, i64 536
  store float %865, ptr %867, align 8, !tbaa !205
  %868 = getelementptr inbounds i8, ptr %866, i64 524
  %869 = load float, ptr %868, align 4, !tbaa !206
  %870 = fadd float %869, 5.000000e-01
  %871 = fadd float %853, %870
  %872 = call noundef float @_ZL7ImTruncf(float noundef %871)
  %873 = load ptr, ptr %4, align 8, !tbaa !5
  %874 = getelementptr inbounds i8, ptr %873, i64 540
  store float %872, ptr %874, align 4, !tbaa !207
  %875 = getelementptr inbounds i8, ptr %873, i64 528
  %876 = load float, ptr %875, align 8, !tbaa !208
  %877 = fadd float %876, 5.000000e-01
  %878 = getelementptr inbounds i8, ptr %873, i64 88
  %879 = load float, ptr %878, align 8, !tbaa !204
  %880 = fmul float %879, 5.000000e-01
  %881 = call noundef float @_ZL7ImTruncf(float noundef %880)
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  %883 = getelementptr inbounds i8, ptr %882, i64 100
  %884 = load float, ptr %883, align 4, !tbaa !170
  %885 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %881, float noundef %884)
  %886 = fsub float %877, %885
  %887 = call noundef float @_ZL7ImTruncf(float noundef %886)
  %888 = load ptr, ptr %4, align 8, !tbaa !5
  %889 = getelementptr inbounds i8, ptr %888, i64 544
  store float %887, ptr %889, align 8, !tbaa !209
  %890 = getelementptr inbounds i8, ptr %888, i64 532
  %891 = load float, ptr %890, align 4, !tbaa !210
  %892 = fadd float %891, 5.000000e-01
  %893 = getelementptr inbounds i8, ptr %888, i64 100
  %894 = load float, ptr %893, align 4, !tbaa !170
  %895 = fsub float %892, %894
  %896 = call noundef float @_ZL7ImTruncf(float noundef %895)
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = getelementptr inbounds i8, ptr %897, i64 548
  store float %896, ptr %898, align 4, !tbaa !211
  %899 = getelementptr inbounds i8, ptr %897, i64 536
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %899, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds i8, ptr %900, i64 48
  %902 = load float, ptr %901, align 8, !tbaa !168
  %903 = fcmp ule float %902, 0.000000e+00
  %.not368.not = xor i1 %.not368, true
  %brmerge444 = select i1 %903, i1 true, i1 %.not368.not
  %brmerge445 = or i1 %.not380, %brmerge444
  br i1 %brmerge445, label %906, label %904

904:                                              ; preds = %822
  %905 = fmul float %902, 0x3FE4CCCCC0000000
  br label %909

906:                                              ; preds = %822
  %907 = load float, ptr %693, align 8, !tbaa !197
  %908 = fmul float %907, 1.600000e+01
  br label %909

909:                                              ; preds = %906, %904
  %.sink572 = phi float [ %908, %906 ], [ %905, %904 ]
  %910 = call noundef float @_ZL7ImTruncf(float noundef %.sink572)
  %.sink571 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds i8, ptr %.sink571, i64 632
  store float %910, ptr %911, align 8, !tbaa !212
  %912 = getelementptr inbounds i8, ptr %.sink571, i64 64
  %913 = load float, ptr %912, align 8, !tbaa !213
  %914 = getelementptr inbounds i8, ptr %.sink571, i64 88
  %915 = load float, ptr %914, align 8, !tbaa !204
  %916 = call float @llvm.fmuladd.f32(float %915, float 2.000000e+00, float %913)
  %917 = getelementptr inbounds i8, ptr %.sink571, i64 520
  %918 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %917)
  %919 = fsub float %916, %918
  %920 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %919)
  %921 = load ptr, ptr %4, align 8, !tbaa !5
  %922 = getelementptr inbounds i8, ptr %921, i64 148
  store float %920, ptr %922, align 4, !tbaa !214
  %923 = getelementptr inbounds i8, ptr %921, i64 68
  %924 = load float, ptr %923, align 4, !tbaa !215
  %925 = getelementptr inbounds i8, ptr %921, i64 92
  %926 = load float, ptr %925, align 4, !tbaa !216
  %927 = call float @llvm.fmuladd.f32(float %926, float 2.000000e+00, float %924)
  %928 = getelementptr inbounds i8, ptr %921, i64 520
  %929 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %928)
  %930 = fsub float %927, %929
  %931 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %930)
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = getelementptr inbounds i8, ptr %932, i64 152
  store float %931, ptr %933, align 4, !tbaa !217
  %934 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %932)
  %935 = load ptr, ptr %4, align 8, !tbaa !5
  %936 = getelementptr inbounds i8, ptr %935, i64 140
  store <2 x float> %934, ptr %936, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = getelementptr inbounds i8, ptr %937, i64 156
  %939 = load i64, ptr %35, align 8
  store i64 %939, ptr %938, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  %940 = getelementptr inbounds i8, ptr %937, i64 120
  store <2 x float> zeroinitializer, ptr %940, align 8, !tbaa !132
  %941 = getelementptr inbounds i8, ptr %937, i64 680
  %942 = load ptr, ptr %941, align 8, !tbaa !158
  %943 = load i32, ptr %942, align 8, !tbaa !218
  %944 = icmp eq i32 %943, 1
  br i1 %944, label %945, label %.critedge4

945:                                              ; preds = %909
  %946 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %942, i32 noundef 0)
  %947 = getelementptr inbounds i8, ptr %946, i64 32
  %948 = load i32, ptr %947, align 8, !tbaa !219
  %949 = icmp eq i32 %948, 0
  br i1 %949, label %950, label %.critedge4

.critedge4:                                       ; preds = %909, %945
  call void @__assert_fail(ptr noundef nonnull @.str.150, ptr noundef nonnull @.str.3, i32 noundef 6864, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

950:                                              ; preds = %945
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds i8, ptr %951, i64 680
  %953 = load ptr, ptr %952, align 8, !tbaa !158
  %954 = getelementptr inbounds i8, ptr %42, i64 15664
  %955 = load ptr, ptr %954, align 8, !tbaa !221
  %956 = getelementptr inbounds i8, ptr %955, i64 64
  %957 = load ptr, ptr %956, align 8, !tbaa !222
  %958 = getelementptr inbounds i8, ptr %957, i64 8
  %959 = load ptr, ptr %958, align 8, !tbaa !223
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %953, ptr noundef %959)
  %960 = getelementptr inbounds i8, ptr %33, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %960, i1 noundef zeroext false)
  br i1 %825, label %.thread488, label %961

961:                                              ; preds = %950
  %962 = getelementptr inbounds i8, ptr %151, i64 416
  %963 = load i32, ptr %962, align 8, !tbaa !193
  %964 = icmp sgt i32 %963, 1
  br i1 %964, label %965, label %.thread485

.thread485:                                       ; preds = %961
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #12
  br label %980

965:                                              ; preds = %961
  %966 = add nsw i32 %963, -2
  %967 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %962, i32 noundef %966)
  %968 = load ptr, ptr %967, align 8, !tbaa !5
  %.not395 = icmp eq ptr %968, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #12
  br i1 %.not395, label %980, label %969

969:                                              ; preds = %965
  %970 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %968)
  %971 = extractvalue { <2 x float>, <2 x float> } %970, 0
  store <2 x float> %971, ptr %36, align 8
  %972 = getelementptr inbounds i8, ptr %36, i64 8
  %973 = extractvalue { <2 x float>, <2 x float> } %970, 1
  store <2 x float> %973, ptr %972, align 8
  %974 = load ptr, ptr %4, align 8, !tbaa !5
  %975 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1021) %974)
  %976 = extractvalue { <2 x float>, <2 x float> } %975, 0
  store <2 x float> %976, ptr %37, align 8
  %977 = getelementptr inbounds i8, ptr %37, i64 8
  %978 = extractvalue { <2 x float>, <2 x float> } %975, 1
  store <2 x float> %978, ptr %977, align 8
  %979 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %37)
  br label %980

980:                                              ; preds = %.thread485, %965, %969
  %981 = phi i1 [ %979, %969 ], [ false, %965 ], [ false, %.thread485 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #12
  %982 = getelementptr inbounds i8, ptr %151, i64 680
  %983 = load ptr, ptr %982, align 8, !tbaa !158
  %984 = getelementptr inbounds i8, ptr %983, i64 32
  %985 = load i32, ptr %984, align 8, !tbaa !227
  %986 = load ptr, ptr %4, align 8, !tbaa !5
  %987 = getelementptr inbounds i8, ptr %986, i64 680
  %988 = load ptr, ptr %987, align 8, !tbaa !158
  %989 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %988)
  %990 = getelementptr inbounds i8, ptr %989, i64 32
  %991 = load i32, ptr %990, align 8, !tbaa !219
  %992 = icmp ne i32 %991, 0
  %993 = icmp eq i32 %985, 0
  %or.cond450.not509.not512 = select i1 %992, i1 true, i1 %993
  %or.cond503.not = or i1 %981, %or.cond450.not509.not512
  br i1 %or.cond503.not, label %.thread488, label %994

994:                                              ; preds = %980
  %995 = load ptr, ptr %982, align 8, !tbaa !158
  %996 = load ptr, ptr %4, align 8, !tbaa !5
  %997 = getelementptr inbounds i8, ptr %996, i64 680
  store ptr %995, ptr %997, align 8, !tbaa !158
  br label %.thread488

.thread488:                                       ; preds = %980, %950, %994
  %.1323490 = phi i1 [ true, %994 ], [ false, %950 ], [ false, %980 ]
  %998 = getelementptr inbounds i8, ptr %42, i64 19720
  %999 = load ptr, ptr %998, align 8, !tbaa !228
  %.not396 = icmp eq ptr %999, null
  br i1 %.not396, label %1000, label %1003

1000:                                             ; preds = %.thread488
  %1001 = getelementptr inbounds i8, ptr %42, i64 19216
  %1002 = load ptr, ptr %1001, align 8, !tbaa !229
  br label %1003

1003:                                             ; preds = %.thread488, %1000
  %1004 = phi ptr [ %1002, %1000 ], [ %999, %.thread488 ]
  br i1 %spec.select499, label %._crit_edge535, label %1005

._crit_edge535:                                   ; preds = %1003
  %.pre536 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1012

1005:                                             ; preds = %1003
  %.not397 = icmp eq ptr %1004, null
  %.pre537 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not397, label %1012, label %1006

1006:                                             ; preds = %1005
  %1007 = getelementptr inbounds i8, ptr %.pre537, i64 920
  %1008 = load ptr, ptr %1007, align 8, !tbaa !230
  %1009 = getelementptr inbounds i8, ptr %1004, i64 920
  %1010 = load ptr, ptr %1009, align 8, !tbaa !230
  %1011 = icmp eq ptr %1008, %1010
  br label %1012

1012:                                             ; preds = %._crit_edge535, %1005, %1006
  %1013 = phi ptr [ %.pre536, %._crit_edge535 ], [ %.pre537, %1005 ], [ %.pre537, %1006 ]
  %1014 = phi i1 [ true, %._crit_edge535 ], [ false, %1005 ], [ %1011, %1006 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1013, ptr noundef nonnull align 4 dereferenceable(16) %34, i1 noundef zeroext %1014, i1 noundef zeroext true, i32 noundef %692, ptr noundef nonnull %27, float noundef %700)
  %.pre538 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1323490, label %1015, label %1018

1015:                                             ; preds = %1012
  %1016 = getelementptr inbounds i8, ptr %.pre538, i64 688
  %1017 = getelementptr inbounds i8, ptr %.pre538, i64 680
  store ptr %1016, ptr %1017, align 8, !tbaa !158
  br label %1018

1018:                                             ; preds = %1015, %1012
  %1019 = and i32 %.1, 8
  %.not398 = icmp eq i32 %1019, 0
  %1020 = getelementptr inbounds i8, ptr %.pre538, i64 80
  %1021 = load float, ptr %1020, align 8, !tbaa !231
  %1022 = fcmp une float %1021, 0.000000e+00
  br i1 %1022, label %1044, label %1023

1023:                                             ; preds = %1018
  %1024 = and i32 %.1, 2056
  %1025 = icmp eq i32 %1024, 2048
  br i1 %1025, label %1026, label %1029

1026:                                             ; preds = %1023
  %1027 = getelementptr inbounds i8, ptr %.pre538, i64 64
  %1028 = load float, ptr %1027, align 8, !tbaa !213
  br label %1029

1029:                                             ; preds = %1023, %1026
  %1030 = phi float [ %1028, %1026 ], [ 0.000000e+00, %1023 ]
  %1031 = getelementptr inbounds i8, ptr %.pre538, i64 48
  %1032 = load float, ptr %1031, align 8, !tbaa !168
  %1033 = getelementptr inbounds i8, ptr %.pre538, i64 88
  %1034 = load float, ptr %1033, align 8, !tbaa !204
  %1035 = fneg float %1034
  %1036 = call float @llvm.fmuladd.f32(float %1035, float 2.000000e+00, float %1032)
  %1037 = getelementptr inbounds i8, ptr %.pre538, i64 104
  %1038 = load float, ptr %1037, align 8, !tbaa !184
  %1039 = getelementptr inbounds i8, ptr %.pre538, i64 112
  %1040 = load float, ptr %1039, align 8, !tbaa !185
  %1041 = fadd float %1038, %1040
  %1042 = fsub float %1036, %1041
  %1043 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1030, float noundef %1042)
  %.pre539 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1044

1044:                                             ; preds = %1018, %1029
  %1045 = phi ptr [ %.pre539, %1029 ], [ %.pre538, %1018 ]
  %1046 = phi float [ %1043, %1029 ], [ %1021, %1018 ]
  %1047 = getelementptr inbounds i8, ptr %1045, i64 84
  %1048 = load float, ptr %1047, align 4, !tbaa !232
  %1049 = fcmp une float %1048, 0.000000e+00
  br i1 %1049, label %1069, label %1050

1050:                                             ; preds = %1044
  br i1 %.not398, label %1051, label %1054

1051:                                             ; preds = %1050
  %1052 = getelementptr inbounds i8, ptr %1045, i64 68
  %1053 = load float, ptr %1052, align 4, !tbaa !215
  br label %1054

1054:                                             ; preds = %1050, %1051
  %1055 = phi float [ %1053, %1051 ], [ 0.000000e+00, %1050 ]
  %1056 = getelementptr inbounds i8, ptr %1045, i64 52
  %1057 = load float, ptr %1056, align 4, !tbaa !169
  %1058 = getelementptr inbounds i8, ptr %1045, i64 92
  %1059 = load float, ptr %1058, align 4, !tbaa !216
  %1060 = fneg float %1059
  %1061 = call float @llvm.fmuladd.f32(float %1060, float 2.000000e+00, float %1057)
  %1062 = getelementptr inbounds i8, ptr %1045, i64 108
  %1063 = load float, ptr %1062, align 4, !tbaa !186
  %1064 = getelementptr inbounds i8, ptr %1045, i64 116
  %1065 = load float, ptr %1064, align 4, !tbaa !187
  %1066 = fadd float %1063, %1065
  %1067 = fsub float %1061, %1066
  %1068 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1055, float noundef %1067)
  %.pre540 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1069

1069:                                             ; preds = %1044, %1054
  %1070 = phi ptr [ %.pre540, %1054 ], [ %1045, %1044 ]
  %1071 = phi float [ %1068, %1054 ], [ %1048, %1044 ]
  %1072 = getelementptr inbounds i8, ptr %1070, i64 520
  %1073 = load float, ptr %1072, align 8, !tbaa !233
  %1074 = getelementptr inbounds i8, ptr %1070, i64 140
  %1075 = load float, ptr %1074, align 4, !tbaa !234
  %1076 = fsub float %1073, %1075
  %1077 = getelementptr inbounds i8, ptr %1070, i64 88
  %1078 = load float, ptr %1077, align 8, !tbaa !204
  %1079 = getelementptr inbounds i8, ptr %1070, i64 100
  %1080 = load float, ptr %1079, align 4, !tbaa !170
  %1081 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1078, float noundef %1080)
  %1082 = fadd float %1076, %1081
  %1083 = call noundef float @_ZL7ImTruncf(float noundef %1082)
  %1084 = load ptr, ptr %4, align 8, !tbaa !5
  %1085 = getelementptr inbounds i8, ptr %1084, i64 552
  store float %1083, ptr %1085, align 8, !tbaa !235
  %1086 = getelementptr inbounds i8, ptr %1084, i64 524
  %1087 = load float, ptr %1086, align 4, !tbaa !206
  %1088 = getelementptr inbounds i8, ptr %1084, i64 144
  %1089 = load float, ptr %1088, align 4, !tbaa !236
  %1090 = fsub float %1087, %1089
  %1091 = getelementptr inbounds i8, ptr %1084, i64 92
  %1092 = load float, ptr %1091, align 4, !tbaa !216
  %1093 = getelementptr inbounds i8, ptr %1084, i64 100
  %1094 = load float, ptr %1093, align 4, !tbaa !170
  %1095 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1092, float noundef %1094)
  %1096 = fadd float %1090, %1095
  %1097 = call noundef float @_ZL7ImTruncf(float noundef %1096)
  %1098 = load ptr, ptr %4, align 8, !tbaa !5
  %1099 = getelementptr inbounds i8, ptr %1098, i64 556
  store float %1097, ptr %1099, align 4, !tbaa !237
  %1100 = getelementptr inbounds i8, ptr %1098, i64 552
  %1101 = load float, ptr %1100, align 8, !tbaa !235
  %1102 = getelementptr inbounds i8, ptr %1098, i64 560
  %1103 = insertelement <2 x float> poison, float %1046, i64 0
  %1104 = insertelement <2 x float> %1103, float %1071, i64 1
  %1105 = insertelement <2 x float> poison, float %1101, i64 0
  %1106 = insertelement <2 x float> %1105, float %1097, i64 1
  %1107 = fadd <2 x float> %1104, %1106
  store <2 x float> %1107, ptr %1102, align 8, !tbaa !132
  %1108 = getelementptr inbounds i8, ptr %1098, i64 568
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1108, ptr noundef nonnull align 8 dereferenceable(16) %1100, i64 16, i1 false), !tbaa.struct !157
  %1109 = getelementptr inbounds i8, ptr %1098, i64 40
  %1110 = getelementptr inbounds i8, ptr %1098, i64 140
  %1111 = getelementptr inbounds i8, ptr %1098, i64 88
  %1112 = getelementptr inbounds i8, ptr %1098, i64 104
  %1113 = getelementptr inbounds i8, ptr %1098, i64 600
  %1114 = load <2 x float>, ptr %1109, align 8, !tbaa !132
  %1115 = load <2 x float>, ptr %1110, align 4, !tbaa !132
  %1116 = fsub <2 x float> %1114, %1115
  %1117 = load <2 x float>, ptr %1111, align 8, !tbaa !132
  %1118 = fadd <2 x float> %1116, %1117
  %1119 = load <2 x float>, ptr %1112, align 8, !tbaa !132
  %1120 = fadd <2 x float> %1118, %1119
  store <2 x float> %1120, ptr %1113, align 8, !tbaa !132
  %1121 = getelementptr inbounds i8, ptr %1098, i64 80
  %1122 = load float, ptr %1121, align 8, !tbaa !231
  %1123 = fcmp une float %1122, 0.000000e+00
  br i1 %1123, label %1135, label %1124

1124:                                             ; preds = %1069
  %1125 = getelementptr inbounds i8, ptr %1098, i64 48
  %1126 = load float, ptr %1125, align 8, !tbaa !168
  %1127 = extractelement <2 x float> %1117, i64 0
  %1128 = fneg float %1127
  %1129 = call float @llvm.fmuladd.f32(float %1128, float 2.000000e+00, float %1126)
  %1130 = getelementptr inbounds i8, ptr %1098, i64 112
  %1131 = load float, ptr %1130, align 8, !tbaa !185
  %1132 = extractelement <2 x float> %1119, i64 0
  %1133 = fadd float %1132, %1131
  %1134 = fsub float %1129, %1133
  br label %1135

1135:                                             ; preds = %1069, %1124
  %1136 = phi float [ %1134, %1124 ], [ %1122, %1069 ]
  %1137 = extractelement <2 x float> %1120, i64 0
  %1138 = fadd float %1137, %1136
  %1139 = getelementptr inbounds i8, ptr %1098, i64 608
  store float %1138, ptr %1139, align 8, !tbaa !238
  %1140 = getelementptr inbounds i8, ptr %1098, i64 84
  %1141 = load float, ptr %1140, align 4, !tbaa !232
  %1142 = fcmp une float %1141, 0.000000e+00
  br i1 %1142, label %1154, label %1143

1143:                                             ; preds = %1135
  %1144 = getelementptr inbounds i8, ptr %1098, i64 52
  %1145 = load float, ptr %1144, align 4, !tbaa !169
  %1146 = extractelement <2 x float> %1117, i64 1
  %1147 = fneg float %1146
  %1148 = call float @llvm.fmuladd.f32(float %1147, float 2.000000e+00, float %1145)
  %1149 = getelementptr inbounds i8, ptr %1098, i64 116
  %1150 = load float, ptr %1149, align 4, !tbaa !187
  %1151 = extractelement <2 x float> %1119, i64 1
  %1152 = fadd float %1151, %1150
  %1153 = fsub float %1148, %1152
  br label %1154

1154:                                             ; preds = %1135, %1143
  %1155 = phi float [ %1153, %1143 ], [ %1141, %1135 ]
  %1156 = extractelement <2 x float> %1120, i64 1
  %1157 = fadd float %1156, %1155
  %1158 = getelementptr inbounds i8, ptr %1098, i64 612
  store float %1157, ptr %1158, align 4, !tbaa !239
  %1159 = extractelement <2 x float> %1117, i64 0
  %1160 = extractelement <2 x float> %1119, i64 0
  %1161 = fadd <2 x float> %1117, %1119
  %1162 = extractelement <2 x float> %1115, i64 0
  %1163 = fsub <2 x float> %1161, %1115
  %1164 = extractelement <2 x float> %1163, i64 0
  %1165 = getelementptr inbounds i8, ptr %1098, i64 340
  store float %1164, ptr %1165, align 4, !tbaa !240
  %1166 = getelementptr inbounds i8, ptr %1098, i64 344
  store <2 x float> zeroinitializer, ptr %1166, align 8, !tbaa !132
  %1167 = extractelement <2 x float> %1114, i64 0
  %1168 = fpext float %1167 to double
  %1169 = fpext float %1159 to double
  %1170 = fadd double %1168, %1169
  %1171 = fpext float %1162 to double
  %1172 = fsub double %1170, %1171
  %1173 = fpext float %1160 to double
  %1174 = fadd double %1172, %1173
  %1175 = fadd double %1174, 0.000000e+00
  %1176 = extractelement <2 x float> %1114, i64 1
  %1177 = fpext float %1176 to double
  %1178 = extractelement <2 x float> %1117, i64 1
  %1179 = fpext float %1178 to double
  %1180 = fadd double %1177, %1179
  %1181 = extractelement <2 x float> %1115, i64 1
  %1182 = fpext float %1181 to double
  %1183 = fsub double %1180, %1182
  %1184 = extractelement <2 x float> %1119, i64 1
  %1185 = fpext float %1184 to double
  %1186 = fadd double %1183, %1185
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  %1187 = fptrunc double %1175 to float
  %1188 = fptrunc double %1186 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %1187, float noundef %1188)
  %1189 = load ptr, ptr %4, align 8, !tbaa !5
  %1190 = getelementptr inbounds i8, ptr %1189, i64 288
  %1191 = load i64, ptr %38, align 8
  store i64 %1191, ptr %1190, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #12
  %1192 = trunc i64 %1191 to i32
  %1193 = bitcast i32 %1192 to float
  %1194 = fpext float %1193 to double
  %1195 = fsub double %1175, %1194
  %1196 = fptrunc double %1195 to float
  %1197 = lshr i64 %1191, 32
  %1198 = trunc nuw i64 %1197 to i32
  %1199 = bitcast i32 %1198 to float
  %1200 = fpext float %1199 to double
  %1201 = fsub double %1186, %1200
  %1202 = fptrunc double %1201 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef %1196, float noundef %1202)
  %1203 = load ptr, ptr %4, align 8, !tbaa !5
  %1204 = getelementptr inbounds i8, ptr %1203, i64 352
  %1205 = load i64, ptr %39, align 8
  store i64 %1205, ptr %1204, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  %1206 = getelementptr inbounds i8, ptr %1203, i64 272
  %1207 = getelementptr inbounds i8, ptr %1203, i64 288
  %1208 = load i64, ptr %1207, align 8
  store i64 %1208, ptr %1206, align 8
  %1209 = getelementptr inbounds i8, ptr %1203, i64 280
  store i64 %1208, ptr %1209, align 8
  %1210 = getelementptr inbounds i8, ptr %1203, i64 296
  store i64 %1208, ptr %1210, align 8
  %1211 = getelementptr inbounds i8, ptr %1203, i64 304
  store i64 %1208, ptr %1211, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1212 = load ptr, ptr %4, align 8, !tbaa !5
  %1213 = getelementptr inbounds i8, ptr %1212, i64 320
  %1214 = load i64, ptr %40, align 8
  store i64 %1214, ptr %1213, align 8
  %1215 = getelementptr inbounds i8, ptr %1212, i64 312
  store i64 %1214, ptr %1215, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  %1216 = getelementptr inbounds i8, ptr %1212, i64 328
  %1217 = getelementptr inbounds i8, ptr %1212, i64 360
  store i32 0, ptr %1217, align 8, !tbaa !138
  %1218 = getelementptr inbounds i8, ptr %1212, i64 366
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1216, i8 0, i64 10, i1 false)
  %1219 = load i16, ptr %1218, align 2, !tbaa !241
  %1220 = getelementptr inbounds i8, ptr %1212, i64 364
  store i16 %1219, ptr %1220, align 4, !tbaa !242
  store i16 0, ptr %1218, align 2, !tbaa !241
  %1221 = getelementptr inbounds i8, ptr %1212, i64 368
  store i8 1, ptr %1221, align 8, !tbaa !243
  %1222 = getelementptr inbounds i8, ptr %1212, i64 369
  store i8 0, ptr %1222, align 1, !tbaa !244
  %1223 = getelementptr inbounds i8, ptr %1212, i64 152
  %1224 = load float, ptr %1223, align 4, !tbaa !217
  %1225 = fcmp ogt float %1224, 0.000000e+00
  %1226 = getelementptr inbounds i8, ptr %1212, i64 370
  %1227 = zext i1 %1225 to i8
  store i8 %1227, ptr %1226, align 2, !tbaa !245
  %1228 = getelementptr inbounds i8, ptr %1212, i64 371
  store i8 0, ptr %1228, align 1, !tbaa !246
  %1229 = getelementptr inbounds i8, ptr %1212, i64 380
  %1230 = load float, ptr %449, align 4, !tbaa !173
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1229, float noundef %1230, i1 noundef zeroext %.0308.in468)
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %1231, i64 408
  store i32 0, ptr %1232, align 8, !tbaa !247
  %1233 = getelementptr inbounds i8, ptr %1231, i64 412
  store i32 0, ptr %1233, align 4, !tbaa !248
  %1234 = getelementptr inbounds i8, ptr %1231, i64 416
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1234, i32 noundef 0)
  %1235 = load ptr, ptr %4, align 8, !tbaa !5
  %1236 = getelementptr inbounds i8, ptr %1235, i64 640
  %1237 = getelementptr inbounds i8, ptr %1235, i64 432
  store ptr %1236, ptr %1237, align 8, !tbaa !249
  %1238 = getelementptr inbounds i8, ptr %1235, i64 440
  store ptr null, ptr %1238, align 8, !tbaa !250
  %1239 = getelementptr inbounds i8, ptr %1235, i64 452
  store i32 1, ptr %1239, align 4, !tbaa !251
  br i1 %152, label %1243, label %1240

1240:                                             ; preds = %1154
  %1241 = getelementptr inbounds i8, ptr %151, i64 452
  %1242 = load i32, ptr %1241, align 4, !tbaa !251
  br label %1243

1243:                                             ; preds = %1154, %1240
  %1244 = phi i32 [ %1242, %1240 ], [ 1, %1154 ]
  %1245 = getelementptr inbounds i8, ptr %1235, i64 456
  store i32 %1244, ptr %1245, align 8, !tbaa !252
  %1246 = getelementptr inbounds i8, ptr %1235, i64 632
  %1247 = load float, ptr %1246, align 8, !tbaa !212
  %1248 = getelementptr inbounds i8, ptr %1235, i64 464
  store float %1247, ptr %1248, align 8, !tbaa !253
  %1249 = getelementptr inbounds i8, ptr %1235, i64 468
  store float -1.000000e+00, ptr %1249, align 4, !tbaa !254
  %1250 = getelementptr inbounds i8, ptr %1235, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1250, i32 noundef 0)
  %1251 = load ptr, ptr %4, align 8, !tbaa !5
  %1252 = getelementptr inbounds i8, ptr %1251, i64 488
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1252, i32 noundef 0)
  %1253 = and i32 %.1, 134217728
  %.not399 = icmp eq i32 %1253, 0
  br i1 %.not399, label %._crit_edge541, label %1254

._crit_edge541:                                   ; preds = %1243
  %.pre542 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1259

1254:                                             ; preds = %1243
  %1255 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 52)
  %1256 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %1255)
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds i8, ptr %1257, i64 460
  store i32 %1256, ptr %1258, align 4, !tbaa !255
  br label %1259

1259:                                             ; preds = %._crit_edge541, %1254
  %1260 = phi ptr [ %.pre542, %._crit_edge541 ], [ %1257, %1254 ]
  %1261 = getelementptr inbounds i8, ptr %1260, i64 220
  %1262 = load i8, ptr %1261, align 4, !tbaa !188
  %1263 = icmp sgt i8 %1262, 0
  br i1 %1263, label %1264, label %1266

1264:                                             ; preds = %1259
  %1265 = add nsw i8 %1262, -1
  store i8 %1265, ptr %1261, align 4, !tbaa !188
  br label %1266

1266:                                             ; preds = %1264, %1259
  %1267 = getelementptr inbounds i8, ptr %1260, i64 221
  %1268 = load i8, ptr %1267, align 1, !tbaa !189
  %1269 = icmp sgt i8 %1268, 0
  br i1 %1269, label %1270, label %1272

1270:                                             ; preds = %1266
  %1271 = add nsw i8 %1268, -1
  store i8 %1271, ptr %1267, align 1, !tbaa !189
  br label %1272

1272:                                             ; preds = %1270, %1266
  br i1 %spec.select499, label %1273, label %.critedge453

1273:                                             ; preds = %1272
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1260, i32 noundef 2)
  %1274 = load ptr, ptr %4, align 8, !tbaa !5
  %1275 = getelementptr inbounds i8, ptr %42, i64 19216
  %1276 = load ptr, ptr %1275, align 8, !tbaa !229
  %1277 = icmp eq ptr %1274, %1276
  br i1 %1277, label %1278, label %.critedge453

1278:                                             ; preds = %1273
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1274, i1 noundef zeroext false)
  %.pre544.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %.critedge453

.critedge453:                                     ; preds = %1272, %1278, %1273
  %.pre544 = phi ptr [ %1260, %1272 ], [ %.pre544.pre, %1278 ], [ %1274, %1273 ]
  br i1 %.not378, label %1279, label %1290

1279:                                             ; preds = %.critedge453
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #12
  %1280 = load float, ptr %34, align 8, !tbaa !256
  %1281 = getelementptr inbounds i8, ptr %.pre544, i64 100
  %1282 = load float, ptr %1281, align 4, !tbaa !170
  %1283 = fadd float %1280, %1282
  %1284 = getelementptr inbounds i8, ptr %34, i64 4
  %1285 = load float, ptr %1284, align 4, !tbaa !257
  %1286 = load float, ptr %833, align 8, !tbaa !258
  %1287 = fsub float %1286, %1282
  %1288 = getelementptr inbounds i8, ptr %34, i64 12
  %1289 = load float, ptr %1288, align 4, !tbaa !259
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %41, float noundef %1283, float noundef %1285, float noundef %1287, float noundef %1289)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre544, ptr noundef nonnull align 4 dereferenceable(16) %41, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #12
  %.pre543 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1290

1290:                                             ; preds = %1279, %.critedge453
  %1291 = phi ptr [ %.pre543, %1279 ], [ %.pre544, %.critedge453 ]
  %1292 = getelementptr inbounds i8, ptr %1291, i64 618
  store i16 0, ptr %1292, align 2, !tbaa !260
  %1293 = getelementptr inbounds i8, ptr %1291, i64 616
  store i16 0, ptr %1293, align 8, !tbaa !261
  %1294 = getelementptr inbounds i8, ptr %1291, i64 132
  %1295 = load i32, ptr %1294, align 4, !tbaa !262
  %1296 = getelementptr inbounds i8, ptr %42, i64 18812
  %1297 = load i32, ptr %1296, align 4, !tbaa !263
  %1298 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %833, i1 noundef zeroext false)
  %1299 = zext i1 %1298 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1295, i32 noundef %1297, i32 noundef %1299, ptr noundef nonnull align 4 dereferenceable(16) %34)
  %1300 = getelementptr inbounds i8, ptr %42, i64 18816
  %1301 = load i32, ptr %1300, align 8, !tbaa !264
  %.not400 = icmp eq i32 %1301, 0
  br i1 %.not400, label %1312, label %1302

1302:                                             ; preds = %1290
  %1303 = load ptr, ptr %4, align 8, !tbaa !5
  %1304 = getelementptr inbounds i8, ptr %1303, i64 16
  %1305 = load i32, ptr %1304, align 8, !tbaa !91
  %1306 = icmp eq i32 %1305, %1301
  br i1 %1306, label %1311, label %1307

1307:                                             ; preds = %1302
  %1308 = getelementptr inbounds i8, ptr %1303, i64 132
  %1309 = load i32, ptr %1308, align 4, !tbaa !262
  %1310 = icmp eq i32 %1309, %1301
  br i1 %1310, label %1311, label %1312

1311:                                             ; preds = %1307, %1302
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1312

1312:                                             ; preds = %1311, %1307, %1290
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  br label %1315

1313:                                             ; preds = %324
  %1314 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1314)
  br label %1315

1315:                                             ; preds = %1313, %1312
  %1316 = load ptr, ptr %4, align 8, !tbaa !5
  %1317 = getelementptr inbounds i8, ptr %1316, i64 536
  %1318 = getelementptr inbounds i8, ptr %1316, i64 544
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1317, ptr noundef nonnull align 4 dereferenceable(8) %1318, i1 noundef zeroext true)
  %1319 = load ptr, ptr %4, align 8, !tbaa !5
  %1320 = getelementptr inbounds i8, ptr %1319, i64 192
  store i8 0, ptr %1320, align 8, !tbaa !265
  %1321 = getelementptr inbounds i8, ptr %1319, i64 204
  %1322 = load i16, ptr %1321, align 4, !tbaa !266
  %1323 = add i16 %1322, 1
  store i16 %1323, ptr %1321, align 4, !tbaa !266
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %203)
  br i1 %.not349, label %._crit_edge549, label %1324

._crit_edge549:                                   ; preds = %1315
  %.pre550 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1439

1324:                                             ; preds = %1315
  %1325 = and i32 %.1, 285212672
  %brmerge455.not = icmp eq i32 %1325, 16777216
  br i1 %brmerge455.not, label %1326, label %.critedge458

1326:                                             ; preds = %1324
  %1327 = and i32 %.1, 1
  %.not401 = icmp eq i32 %1327, 0
  br i1 %.not401, label %1328, label %1329

1328:                                             ; preds = %1326
  call void @__assert_fail(ptr noundef nonnull @.str.151, ptr noundef nonnull @.str.3, i32 noundef 7034, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1329:                                             ; preds = %1326
  br i1 %.not356, label %1344, label %1330

1330:                                             ; preds = %1329
  %1331 = getelementptr inbounds i8, ptr %42, i64 19316
  %1332 = load i8, ptr %1331, align 4, !tbaa !267, !range !86, !noundef !87
  %1333 = trunc nuw i8 %1332 to i1
  br i1 %1333, label %1334, label %1344

1334:                                             ; preds = %1330
  %1335 = getelementptr inbounds i8, ptr %42, i64 19216
  %1336 = load ptr, ptr %1335, align 8, !tbaa !229
  %.not402 = icmp eq ptr %1336, null
  br i1 %.not402, label %1344, label %1337

1337:                                             ; preds = %1334
  %1338 = getelementptr inbounds i8, ptr %1336, i64 928
  %1339 = load ptr, ptr %1338, align 8, !tbaa !268
  %1340 = load ptr, ptr %4, align 8, !tbaa !5
  %1341 = getelementptr inbounds i8, ptr %1340, i64 928
  %1342 = load ptr, ptr %1341, align 8, !tbaa !268
  %1343 = icmp eq ptr %1339, %1342
  br label %1344

1344:                                             ; preds = %1330, %1334, %1337, %1329
  %1345 = phi i1 [ false, %1329 ], [ false, %1334 ], [ false, %1330 ], [ %1343, %1337 ]
  %1346 = getelementptr inbounds i8, ptr %42, i64 24576
  %1347 = load i8, ptr %1346, align 8, !tbaa !269, !range !86, !noundef !87
  %1348 = trunc nuw i8 %1347 to i1
  %brmerge456 = select i1 %1348, i1 true, i1 %1345
  br i1 %brmerge456, label %1374, label %1349

1349:                                             ; preds = %1344
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds i8, ptr %1350, i64 504
  %1352 = load float, ptr %1351, align 8, !tbaa !270
  %1353 = getelementptr inbounds i8, ptr %1350, i64 512
  %1354 = load float, ptr %1353, align 8, !tbaa !271
  %1355 = fcmp ult float %1352, %1354
  br i1 %1355, label %1356, label %1362

1356:                                             ; preds = %1349
  %1357 = getelementptr inbounds i8, ptr %1350, i64 508
  %1358 = load float, ptr %1357, align 4, !tbaa !272
  %1359 = getelementptr inbounds i8, ptr %1350, i64 516
  %1360 = load float, ptr %1359, align 4, !tbaa !273
  %1361 = fcmp ult float %1358, %1360
  br i1 %1361, label %1374, label %1362

1362:                                             ; preds = %1356, %1349
  %1363 = getelementptr inbounds i8, ptr %1350, i64 220
  %1364 = load i8, ptr %1363, align 4, !tbaa !188
  %1365 = icmp sgt i8 %1364, 0
  br i1 %1365, label %1370, label %1366

1366:                                             ; preds = %1362
  %1367 = getelementptr inbounds i8, ptr %1350, i64 221
  %1368 = load i8, ptr %1367, align 1, !tbaa !189
  %1369 = icmp sgt i8 %1368, 0
  br i1 %1369, label %1370, label %1372

1370:                                             ; preds = %1366, %1362
  %1371 = getelementptr inbounds i8, ptr %1350, i64 229
  store i8 1, ptr %1371, align 1, !tbaa !154
  br label %1374

1372:                                             ; preds = %1366
  %1373 = getelementptr inbounds i8, ptr %1350, i64 228
  store i8 1, ptr %1373, align 4, !tbaa !166
  br label %1374

1374:                                             ; preds = %1344, %1356, %1372, %1370
  br i1 %152, label %.critedge458, label %1375

1375:                                             ; preds = %1374
  %1376 = getelementptr inbounds i8, ptr %151, i64 193
  %1377 = load i8, ptr %1376, align 1, !tbaa !183, !range !86, !noundef !87
  %1378 = trunc nuw i8 %1377 to i1
  br i1 %1378, label %.thread492, label %1381

.thread492:                                       ; preds = %1375
  %1379 = load ptr, ptr %4, align 8, !tbaa !5
  %1380 = getelementptr inbounds i8, ptr %1379, i64 228
  store i8 1, ptr %1380, align 4, !tbaa !166
  br label %1391

1381:                                             ; preds = %1375
  %1382 = getelementptr inbounds i8, ptr %151, i64 228
  %1383 = load i8, ptr %1382, align 4, !tbaa !166
  %1384 = icmp sgt i8 %1383, 0
  br i1 %1384, label %1385, label %.thread491

1385:                                             ; preds = %1381
  %1386 = load ptr, ptr %4, align 8, !tbaa !5
  %1387 = getelementptr inbounds i8, ptr %1386, i64 228
  store i8 1, ptr %1387, align 4, !tbaa !166
  br label %.thread491

.thread491:                                       ; preds = %1381, %1385
  %1388 = getelementptr inbounds i8, ptr %151, i64 229
  %1389 = load i8, ptr %1388, align 1, !tbaa !154
  %1390 = icmp sgt i8 %1389, 0
  br i1 %1390, label %.thread491._crit_edge, label %.critedge458

.thread491._crit_edge:                            ; preds = %.thread491
  %.pre545 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1391

1391:                                             ; preds = %.thread491._crit_edge, %.thread492
  %1392 = phi ptr [ %.pre545, %.thread491._crit_edge ], [ %1379, %.thread492 ]
  %1393 = getelementptr inbounds i8, ptr %1392, i64 229
  store i8 1, ptr %1393, align 1, !tbaa !154
  br label %.critedge458

.critedge458:                                     ; preds = %.thread491, %1391, %1374, %1324
  %1394 = load float, ptr %43, align 4, !tbaa !274
  %1395 = fcmp ugt float %1394, 0.000000e+00
  %.pre546 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert547 = getelementptr inbounds i8, ptr %.pre546, i64 228
  br i1 %1395, label %1396, label %.thread566

.thread566:                                       ; preds = %.critedge458
  store i8 1, ptr %.phi.trans.insert547, align 4, !tbaa !166
  br label %.thread493

1396:                                             ; preds = %.critedge458
  %.pre548 = load i8, ptr %.phi.trans.insert547, align 4, !tbaa !166
  %1397 = icmp sgt i8 %.pre548, 0
  br i1 %1397, label %.thread493, label %1398

1398:                                             ; preds = %1396
  %1399 = getelementptr inbounds i8, ptr %.pre546, i64 229
  %1400 = load i8, ptr %1399, align 1, !tbaa !154
  %1401 = icmp sgt i8 %1400, 0
  br i1 %1401, label %.thread493, label %1402

1402:                                             ; preds = %1398
  %1403 = getelementptr inbounds i8, ptr %.pre546, i64 230
  %1404 = load i8, ptr %1403, align 2, !tbaa !167
  %1405 = icmp sgt i8 %1404, 0
  %1406 = zext i1 %1405 to i8
  br label %.thread493

.thread493:                                       ; preds = %.thread566, %1396, %1402, %1398
  %.not513 = phi i1 [ false, %1398 ], [ true, %1402 ], [ false, %1396 ], [ false, %.thread566 ]
  %1407 = phi i8 [ 1, %1398 ], [ %1406, %1402 ], [ 1, %1396 ], [ 1, %.thread566 ]
  %1408 = getelementptr inbounds i8, ptr %.pre546, i64 197
  store i8 %1407, ptr %1408, align 1, !tbaa !275
  %1409 = getelementptr inbounds i8, ptr %.pre546, i64 231
  %1410 = load i8, ptr %1409, align 1, !tbaa !276
  %1411 = icmp sgt i8 %1410, 0
  br i1 %1411, label %1412, label %1417

1412:                                             ; preds = %.thread493
  %1413 = add nsw i8 %1410, -1
  store i8 %1413, ptr %1409, align 1, !tbaa !276
  %1414 = getelementptr inbounds i8, ptr %.pre546, i64 20
  %1415 = load i32, ptr %1414, align 4, !tbaa !115
  %1416 = or i32 %1415, 197120
  store i32 %1416, ptr %1414, align 4, !tbaa !115
  br label %1417

1417:                                             ; preds = %1412, %.thread493
  %1418 = getelementptr inbounds i8, ptr %.pre546, i64 193
  %1419 = load i8, ptr %1418, align 1, !tbaa !183, !range !86, !noundef !87
  %1420 = trunc nuw i8 %1419 to i1
  br i1 %1420, label %1425, label %1421

1421:                                             ; preds = %1417
  %1422 = getelementptr inbounds i8, ptr %.pre546, i64 190
  %1423 = load i8, ptr %1422, align 2, !tbaa !155, !range !86, !noundef !87
  %1424 = trunc nuw i8 %1423 to i1
  %brmerge460.not = and i1 %.not513, %1424
  br i1 %brmerge460.not, label %1437, label %1425

1425:                                             ; preds = %1421, %1417
  %1426 = getelementptr inbounds i8, ptr %.pre546, i64 220
  %1427 = load i8, ptr %1426, align 4, !tbaa !188
  %1428 = icmp slt i8 %1427, 1
  br i1 %1428, label %1429, label %1437

1429:                                             ; preds = %1425
  %1430 = getelementptr inbounds i8, ptr %.pre546, i64 221
  %1431 = load i8, ptr %1430, align 1, !tbaa !189
  %1432 = icmp slt i8 %1431, 1
  br i1 %1432, label %1433, label %1437

1433:                                             ; preds = %1429
  %1434 = getelementptr inbounds i8, ptr %.pre546, i64 229
  %1435 = load i8, ptr %1434, align 1, !tbaa !154
  %1436 = icmp slt i8 %1435, 1
  %spec.select461 = zext i1 %1436 to i8
  br label %1437

1437:                                             ; preds = %1433, %1421, %1425, %1429
  %.0 = phi i8 [ 0, %1429 ], [ 0, %1425 ], [ 0, %1421 ], [ %spec.select461, %1433 ]
  %1438 = getelementptr inbounds i8, ptr %.pre546, i64 195
  store i8 %.0, ptr %1438, align 1, !tbaa !277
  br label %1439

1439:                                             ; preds = %._crit_edge549, %1437
  %1440 = phi ptr [ %.pre550, %._crit_edge549 ], [ %.pre546, %1437 ]
  %1441 = getelementptr inbounds i8, ptr %1440, i64 198
  %1442 = load i8, ptr %1441, align 2, !tbaa !108, !range !86, !noundef !87
  %1443 = trunc nuw i8 %1442 to i1
  br i1 %1443, label %1470, label %1444

1444:                                             ; preds = %1439
  %1445 = getelementptr inbounds i8, ptr %42, i64 121
  %1446 = load i8, ptr %1445, align 1, !tbaa !278, !range !86, !noundef !87
  %1447 = trunc nuw i8 %1446 to i1
  %brmerge464.demorgan = and i1 %59, %1447
  br i1 %brmerge464.demorgan, label %1458, label %1448

1448:                                             ; preds = %1444
  %1449 = getelementptr inbounds i8, ptr %42, i64 122
  %1450 = load i8, ptr %1449, align 2, !tbaa !279, !range !86, !noundef !87
  %1451 = trunc nuw i8 %1450 to i1
  br i1 %1451, label %1452, label %1470

1452:                                             ; preds = %1448
  %1453 = getelementptr inbounds i8, ptr %42, i64 24700
  %1454 = load i8, ptr %1453, align 4, !tbaa !280
  %1455 = sext i8 %1454 to i32
  %1456 = load i32, ptr %80, align 8, !tbaa !106
  %1457 = icmp eq i32 %1456, %1455
  br i1 %1457, label %1458, label %1470

1458:                                             ; preds = %1444, %1452
  %1459 = getelementptr inbounds i8, ptr %1440, i64 220
  %1460 = load i8, ptr %1459, align 4, !tbaa !188
  %1461 = icmp sgt i8 %1460, 0
  br i1 %1461, label %1462, label %1464

1462:                                             ; preds = %1458
  %1463 = add nuw i8 %1460, 1
  store i8 %1463, ptr %1459, align 4, !tbaa !188
  br label %1464

1464:                                             ; preds = %1462, %1458
  %1465 = getelementptr inbounds i8, ptr %1440, i64 221
  %1466 = load i8, ptr %1465, align 1, !tbaa !189
  %1467 = icmp sgt i8 %1466, 0
  br i1 %1467, label %1468, label %1475

1468:                                             ; preds = %1464
  %1469 = add nuw i8 %1466, 1
  store i8 %1469, ptr %1465, align 1, !tbaa !189
  br label %1475

1470:                                             ; preds = %1448, %1452, %1439
  %1471 = getelementptr inbounds i8, ptr %1440, i64 195
  %1472 = load i8, ptr %1471, align 1, !tbaa !277, !range !86, !noundef !87
  %1473 = trunc nuw i8 %1472 to i1
  %1474 = xor i1 %1473, true
  br label %1475

1475:                                             ; preds = %1464, %1468, %1470
  %.0306 = phi i1 [ %1474, %1470 ], [ false, %1468 ], [ false, %1464 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  ret i1 %.0306
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 16228}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14568, !6, i64 15664, !16, i64 15672, !16, i64 15676, !21, i64 15680, !24, i64 16208, !14, i64 16216, !14, i64 16220, !14, i64 16224, !12, i64 16228, !12, i64 16229, !12, i64 16230, !12, i64 16231, !12, i64 16232, !6, i64 16240, !25, i64 16248, !25, i64 16264, !18, i64 16280, !14, i64 16284, !26, i64 16288, !26, i64 16304, !26, i64 16320, !27, i64 16336, !28, i64 16352, !14, i64 16368, !15, i64 16372, !14, i64 16380, !6, i64 16384, !6, i64 16392, !6, i64 16400, !6, i64 16408, !6, i64 16416, !15, i64 16424, !14, i64 16432, !14, i64 16436, !16, i64 16440, !15, i64 16444, !15, i64 16452, !14, i64 16460, !14, i64 16464, !14, i64 16468, !12, i64 16472, !12, i64 16473, !16, i64 16476, !16, i64 16480, !14, i64 16484, !14, i64 16488, !16, i64 16492, !12, i64 16496, !12, i64 16497, !12, i64 16498, !12, i64 16499, !12, i64 16500, !12, i64 16501, !12, i64 16502, !14, i64 16503, !15, i64 16504, !6, i64 16512, !30, i64 16520, !14, i64 16524, !12, i64 16528, !12, i64 16529, !6, i64 16536, !14, i64 16544, !16, i64 16548, !24, i64 16552, !24, i64 16560, !24, i64 16568, !31, i64 16576, !7, i64 16596, !32, i64 18448, !14, i64 18792, !12, i64 18796, !14, i64 18800, !14, i64 18804, !14, i64 18808, !14, i64 18812, !14, i64 18816, !34, i64 18824, !36, i64 18856, !38, i64 18936, !12, i64 19048, !14, i64 19052, !39, i64 19056, !40, i64 19072, !41, i64 19088, !42, i64 19104, !43, i64 19120, !44, i64 19136, !45, i64 19152, !45, i64 19168, !46, i64 19184, !47, i64 19200, !6, i64 19216, !14, i64 19224, !14, i64 19228, !42, i64 19232, !14, i64 19248, !14, i64 19252, !14, i64 19256, !14, i64 19260, !14, i64 19264, !16, i64 19268, !14, i64 19272, !14, i64 19276, !14, i64 19280, !14, i64 19284, !14, i64 19288, !30, i64 19292, !48, i64 19296, !35, i64 19304, !12, i64 19312, !12, i64 19313, !12, i64 19314, !12, i64 19315, !12, i64 19316, !12, i64 19317, !12, i64 19318, !49, i64 19320, !12, i64 19384, !12, i64 19385, !12, i64 19386, !14, i64 19388, !14, i64 19392, !14, i64 19396, !14, i64 19400, !14, i64 19404, !14, i64 19408, !37, i64 19412, !37, i64 19428, !14, i64 19444, !14, i64 19448, !14, i64 19452, !49, i64 19456, !49, i64 19520, !49, i64 19584, !49, i64 19648, !14, i64 19712, !14, i64 19716, !6, i64 19720, !6, i64 19728, !6, i64 19736, !16, i64 19744, !16, i64 19748, !12, i64 19752, !50, i64 19756, !15, i64 19760, !15, i64 19768, !16, i64 19776, !12, i64 19780, !12, i64 19781, !12, i64 19782, !14, i64 19784, !14, i64 19788, !14, i64 19792, !51, i64 19800, !37, i64 19864, !37, i64 19880, !14, i64 19896, !14, i64 19900, !16, i64 19904, !14, i64 19908, !14, i64 19912, !14, i64 19916, !14, i64 19920, !52, i64 19928, !7, i64 19944, !14, i64 19960, !53, i64 19968, !6, i64 19984, !14, i64 19992, !14, i64 19996, !54, i64 20000, !55, i64 20016, !57, i64 20056, !58, i64 20072, !6, i64 20088, !59, i64 20096, !61, i64 20136, !62, i64 20152, !14, i64 20168, !14, i64 20172, !16, i64 20176, !16, i64 20180, !14, i64 20184, !14, i64 20188, !14, i64 20192, !16, i64 20196, !15, i64 20200, !63, i64 20208, !67, i64 23944, !68, i64 23968, !14, i64 24088, !14, i64 24092, !14, i64 24096, !14, i64 24100, !14, i64 24104, !14, i64 24108, !16, i64 24112, !16, i64 24116, !14, i64 24120, !22, i64 24124, !70, i64 24140, !37, i64 24188, !12, i64 24204, !16, i64 24208, !16, i64 24212, !12, i64 24216, !12, i64 24217, !16, i64 24220, !16, i64 24224, !16, i64 24228, !16, i64 24232, !17, i64 24236, !17, i64 24238, !17, i64 24240, !64, i64 24248, !71, i64 24264, !72, i64 24280, !74, i64 24384, !74, i64 24400, !12, i64 24416, !16, i64 24420, !75, i64 24424, !76, i64 24440, !77, i64 24456, !78, i64 24472, !79, i64 24488, !14, i64 24504, !7, i64 24512, !12, i64 24576, !80, i64 24580, !6, i64 24584, !75, i64 24592, !6, i64 24608, !6, i64 24616, !16, i64 24624, !12, i64 24628, !14, i64 24632, !14, i64 24636, !14, i64 24640, !14, i64 24644, !75, i64 24648, !81, i64 24664, !14, i64 24688, !7, i64 24692, !7, i64 24693, !12, i64 24694, !14, i64 24696, !7, i64 24700, !12, i64 24701, !7, i64 24702, !14, i64 24704, !16, i64 24708, !22, i64 24712, !82, i64 24728, !83, i64 24760, !85, i64 24800, !7, i64 24860, !14, i64 25100, !14, i64 25104, !16, i64 25108, !14, i64 25112, !14, i64 25116, !14, i64 25120, !64, i64 25128, !7, i64 25144}
!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, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !12, i64 112, !12, i64 113, !12, i64 114, !12, i64 115, !12, i64 116, !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, !17, i64 192, !12, i64 194, !12, i64 195, !12, i64 196, !12, i64 197, !12, i64 198, !12, i64 199, !12, i64 200, !16, i64 204, !14, i64 208, !14, i64 212, !14, i64 216, !14, i64 220, !15, i64 224, !7, i64 232, !7, i64 2896, !7, i64 3564, !6, i64 3632, !15, i64 3640, !7, i64 3648, !16, i64 3656, !16, i64 3660, !18, i64 3664, !12, i64 3668, !12, i64 3669, !12, i64 3670, !12, i64 3671, !14, i64 3672, !7, i64 3676, !12, i64 14332, !15, i64 14336, !7, i64 14344, !7, i64 14384, !7, i64 14424, !7, i64 14429, !7, i64 14434, !7, i64 14444, !7, i64 14454, !7, i64 14459, !7, i64 14464, !12, i64 14469, !7, i64 14472, !7, i64 14492, !7, i64 14512, !16, i64 14532, !12, i64 14536, !12, i64 14537, !7, i64 14538, !12, i64 14539, !17, i64 14540, !19, i64 14544}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !14, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !14, i64 156, !15, i64 160, !15, i64 168, !16, i64 176, !15, i64 180, !15, i64 188, !15, i64 196, !15, i64 204, !16, i64 212, !12, i64 216, !12, i64 217, !12, i64 218, !16, i64 220, !16, i64 224, !7, i64 228, !16, i64 1076, !16, i64 1080, !16, i64 1084, !14, i64 1088, !14, i64 1092}
!21 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !22, i64 28, !14, i64 44, !23, i64 48, !7, i64 64, !16, i64 448, !7, i64 452, !6, i64 520}
!22 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!23 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!24 = !{!"double", !7, i64 0}
!25 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!32 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !33, i64 312, !33, i64 328}
!33 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!34 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !35, i64 8, !16, i64 16, !14, i64 20, !12, i64 24, !14, i64 25}
!35 = !{!"long long", !7, i64 0}
!36 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !37, i64 12, !37, i64 28, !37, i64 44, !37, i64 60}
!37 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!38 = !{!"_ZTS19ImGuiNextWindowData", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !14, i64 56, !12, i64 60, !37, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!39 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!49 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !37, i64 16, !14, i64 32, !35, i64 40, !16, i64 48, !16, i64 52, !16, i64 56}
!50 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!51 = !{!"_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}
!52 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS6ImPoolI10ImGuiTableE", !56, i64 0, !28, i64 16, !14, i64 32, !14, i64 36}
!56 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !60, i64 0, !28, i64 16, !14, i64 32, !14, i64 36}
!60 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !64, i64 40, !64, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !65, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720, !12, i64 3724, !14, i64 3728, !14, i64 3732}
!64 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!65 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !14, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !16, i64 28, !66, i64 32}
!66 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!67 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !64, i64 8}
!68 = !{!"_ZTS6ImFont", !57, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !69, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !17, i64 86, !16, i64 88, !16, i64 92, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !14, i64 112, !7, i64 116}
!69 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!70 = !{!"_ZTS21ImGuiComboPreviewData", !37, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!71 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!72 = !{!"_ZTS22ImGuiTypingSelectState", !73, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!73 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!74 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!75 = !{!"_ZTS15ImGuiTextBuffer", !64, i64 0}
!76 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!77 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !64, i64 0}
!78 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !64, i64 0}
!79 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!80 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!81 = !{!"_ZTS14ImGuiTextIndex", !43, i64 0, !14, i64 16}
!82 = !{!"_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}
!83 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !84, i64 16, !12, i64 32, !16, i64 36}
!84 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!85 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !17, i64 8, !7, i64 12}
!86 = !{i8 0, i8 2}
!87 = !{}
!88 = !{!11, !14, i64 16220}
!89 = !{!11, !14, i64 16216}
!90 = !{!11, !14, i64 16380}
!91 = !{!92, !14, i64 16}
!92 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !6, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !15, i64 180, !12, i64 188, !12, i64 189, !12, i64 190, !12, i64 191, !12, i64 192, !12, i64 193, !12, i64 194, !12, i64 195, !12, i64 196, !12, i64 197, !12, i64 198, !12, i64 199, !12, i64 200, !7, i64 201, !7, i64 202, !17, i64 204, !17, i64 206, !17, i64 208, !17, i64 210, !17, i64 212, !14, i64 216, !7, i64 220, !7, i64 221, !12, i64 222, !14, i64 224, !7, i64 228, !7, i64 229, !7, i64 230, !7, i64 231, !14, i64 232, !14, i64 233, !14, i64 234, !15, i64 236, !15, i64 244, !71, i64 256, !93, i64 272, !37, i64 504, !37, i64 520, !37, i64 536, !37, i64 552, !37, i64 568, !37, i64 584, !37, i64 600, !96, i64 616, !96, i64 620, !14, i64 624, !16, i64 628, !16, i64 632, !28, i64 640, !97, i64 656, !16, i64 672, !14, i64 676, !6, i64 680, !98, i64 688, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !7, i64 952, !7, i64 960, !7, i64 992, !14, i64 1008, !14, i64 1012, !14, i64 1016, !12, i64 1020}
!93 = !{!"_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, !94, i64 68, !94, i64 72, !94, i64 76, !15, i64 80, !48, i64 88, !17, i64 92, !17, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !95, i64 108, !14, i64 136, !14, i64 140, !26, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !14, i64 188, !16, i64 192, !16, i64 196, !57, i64 200, !57, i64 216}
!94 = !{!"_ZTS6ImVec1", !16, i64 0}
!95 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !7, i64 18}
!96 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!97 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!98 = !{!"_ZTS10ImDrawList", !99, i64 0, !19, i64 16, !100, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !101, i64 88, !102, i64 104, !23, i64 120, !103, i64 136, !104, i64 168, !16, i64 192}
!99 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!100 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!101 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!102 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!103 = !{!"_ZTS15ImDrawCmdHeader", !22, i64 0, !6, i64 16, !14, i64 24}
!104 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !58, i64 8}
!105 = !{!92, !14, i64 624}
!106 = !{!11, !14, i64 16336}
!107 = !{!11, !12, i64 16229}
!108 = !{!92, !12, i64 198}
!109 = !{!11, !14, i64 19168}
!110 = !{!92, !14, i64 216}
!111 = !{!112, !14, i64 0}
!112 = !{!"_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}
!113 = !{!112, !6, i64 8}
!114 = !{!92, !12, i64 196}
!115 = !{!92, !14, i64 20}
!116 = !{!11, !14, i64 18936}
!117 = !{!11, !14, i64 18992}
!118 = !{!92, !14, i64 24}
!119 = !{!11, !24, i64 16208}
!120 = !{!92, !16, i64 628}
!121 = !{!92, !17, i64 208}
!122 = !{!11, !14, i64 16368}
!123 = !{!92, !17, i64 210}
!124 = !{!125, !6, i64 0}
!125 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !36, i64 8, !126, i64 84}
!126 = !{!"_ZTS15ImGuiStackSizes", !17, i64 0, !17, i64 2, !17, i64 4, !17, i64 6, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16}
!127 = !{!92, !6, i64 888}
!128 = !{!92, !14, i64 256}
!129 = !{!11, !6, i64 16384}
!130 = !{i64 0, i64 4, !131, i64 4, i64 4, !131, i64 8, i64 4, !131, i64 12, i64 4, !132, i64 16, i64 4, !132, i64 20, i64 4, !132, i64 24, i64 4, !132, i64 28, i64 4, !132, i64 32, i64 4, !132, i64 36, i64 4, !132, i64 40, i64 4, !132, i64 44, i64 4, !132, i64 48, i64 4, !132, i64 52, i64 4, !132, i64 56, i64 4, !132, i64 60, i64 4, !132, i64 64, i64 4, !132, i64 68, i64 4, !132, i64 72, i64 4, !132}
!131 = !{!14, !14, i64 0}
!132 = !{!16, !16, i64 0}
!133 = !{!11, !14, i64 24092}
!134 = !{!92, !6, i64 896}
!135 = !{!92, !6, i64 936}
!136 = !{!11, !14, i64 18808}
!137 = !{!92, !14, i64 1008}
!138 = !{!92, !48, i64 360}
!139 = !{!112, !14, i64 24}
!140 = !{!11, !14, i64 18940}
!141 = !{!11, !14, i64 18944}
!142 = !{!11, !16, i64 18968}
!143 = !{!11, !16, i64 18972}
!144 = !{!92, !16, i64 56}
!145 = !{!92, !16, i64 60}
!146 = !{!11, !16, i64 18984}
!147 = !{!92, !16, i64 156}
!148 = !{!92, !16, i64 164}
!149 = !{!11, !16, i64 18988}
!150 = !{!92, !16, i64 160}
!151 = !{!92, !16, i64 168}
!152 = !{!11, !12, i64 18996}
!153 = !{!11, !14, i64 18948}
!154 = !{!92, !7, i64 229}
!155 = !{!92, !12, i64 190}
!156 = !{!92, !12, i64 200}
!157 = !{i64 0, i64 4, !132, i64 4, i64 4, !132, i64 8, i64 4, !132, i64 12, i64 4, !132}
!158 = !{!92, !6, i64 680}
!159 = !{!92, !14, i64 448}
!160 = !{!92, !12, i64 1020}
!161 = !{!11, !6, i64 19736}
!162 = !{!92, !6, i64 8}
!163 = !{!92, !14, i64 128}
!164 = !{!165, !165, i64 0}
!165 = !{!"long", !7, i64 0}
!166 = !{!92, !7, i64 228}
!167 = !{!92, !7, i64 230}
!168 = !{!92, !16, i64 48}
!169 = !{!92, !16, i64 52}
!170 = !{!92, !16, i64 100}
!171 = !{!20, !16, i64 48}
!172 = !{!20, !16, i64 12}
!173 = !{!20, !16, i64 76}
!174 = !{!11, !16, i64 19036}
!175 = !{!92, !16, i64 372}
!176 = !{!11, !16, i64 19040}
!177 = !{!92, !16, i64 376}
!178 = !{!11, !6, i64 16392}
!179 = !{!11, !14, i64 16464}
!180 = !{!11, !14, i64 16468}
!181 = !{!17, !17, i64 0}
!182 = !{!92, !12, i64 194}
!183 = !{!92, !12, i64 193}
!184 = !{!92, !16, i64 104}
!185 = !{!92, !16, i64 112}
!186 = !{!92, !16, i64 108}
!187 = !{!92, !16, i64 116}
!188 = !{!92, !7, i64 220}
!189 = !{!92, !7, i64 221}
!190 = !{!92, !12, i64 222}
!191 = !{!15, !16, i64 4}
!192 = !{!92, !14, i64 224}
!193 = !{!92, !14, i64 416}
!194 = !{!92, !16, i64 236}
!195 = !{!92, !16, i64 96}
!196 = !{!11, !12, i64 94}
!197 = !{!11, !16, i64 15672}
!198 = !{!92, !7, i64 201}
!199 = !{!92, !7, i64 202}
!200 = !{!92, !12, i64 189}
!201 = !{!92, !12, i64 188}
!202 = !{!15, !16, i64 0}
!203 = !{!20, !16, i64 116}
!204 = !{!92, !16, i64 88}
!205 = !{!92, !16, i64 536}
!206 = !{!92, !16, i64 524}
!207 = !{!92, !16, i64 540}
!208 = !{!92, !16, i64 528}
!209 = !{!92, !16, i64 544}
!210 = !{!92, !16, i64 532}
!211 = !{!92, !16, i64 548}
!212 = !{!92, !16, i64 632}
!213 = !{!92, !16, i64 64}
!214 = !{!92, !16, i64 148}
!215 = !{!92, !16, i64 68}
!216 = !{!92, !16, i64 92}
!217 = !{!92, !16, i64 152}
!218 = !{!98, !14, i64 0}
!219 = !{!220, !14, i64 32}
!220 = !{!"_ZTS9ImDrawCmd", !22, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!221 = !{!11, !6, i64 15664}
!222 = !{!68, !6, i64 64}
!223 = !{!224, !6, i64 8}
!224 = !{!"_ZTS11ImFontAtlas", !14, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !12, i64 24, !6, i64 32, !12, i64 40, !12, i64 41, !6, i64 48, !6, i64 56, !14, i64 64, !14, i64 68, !15, i64 72, !15, i64 80, !41, i64 88, !225, i64 104, !226, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!225 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!226 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!227 = !{!98, !14, i64 32}
!228 = !{!11, !6, i64 19720}
!229 = !{!11, !6, i64 19216}
!230 = !{!92, !6, i64 920}
!231 = !{!92, !16, i64 80}
!232 = !{!92, !16, i64 84}
!233 = !{!92, !16, i64 520}
!234 = !{!92, !16, i64 140}
!235 = !{!92, !16, i64 552}
!236 = !{!92, !16, i64 144}
!237 = !{!92, !16, i64 556}
!238 = !{!92, !16, i64 608}
!239 = !{!92, !16, i64 612}
!240 = !{!92, !16, i64 340}
!241 = !{!92, !17, i64 366}
!242 = !{!92, !17, i64 364}
!243 = !{!92, !12, i64 368}
!244 = !{!92, !12, i64 369}
!245 = !{!92, !12, i64 370}
!246 = !{!92, !12, i64 371}
!247 = !{!92, !14, i64 408}
!248 = !{!92, !14, i64 412}
!249 = !{!92, !6, i64 432}
!250 = !{!92, !6, i64 440}
!251 = !{!92, !14, i64 452}
!252 = !{!92, !14, i64 456}
!253 = !{!92, !16, i64 464}
!254 = !{!92, !16, i64 468}
!255 = !{!92, !14, i64 460}
!256 = !{!37, !16, i64 0}
!257 = !{!37, !16, i64 4}
!258 = !{!37, !16, i64 8}
!259 = !{!37, !16, i64 12}
!260 = !{!92, !17, i64 618}
!261 = !{!92, !17, i64 616}
!262 = !{!92, !14, i64 132}
!263 = !{!11, !14, i64 18812}
!264 = !{!11, !14, i64 18816}
!265 = !{!92, !12, i64 192}
!266 = !{!92, !17, i64 204}
!267 = !{!11, !12, i64 19316}
!268 = !{!92, !6, i64 928}
!269 = !{!11, !12, i64 24576}
!270 = !{!92, !16, i64 504}
!271 = !{!92, !16, i64 512}
!272 = !{!92, !16, i64 508}
!273 = !{!92, !16, i64 516}
!274 = !{!20, !16, i64 0}
!275 = !{!92, !12, i64 197}
!276 = !{!92, !7, i64 231}
!277 = !{!92, !12, i64 195}
!278 = !{!11, !12, i64 121}
!279 = !{!11, !12, i64 122}
!280 = !{!11, !7, i64 24700}


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