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

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(200), 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 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(1029)) #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
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 %struct.ImRect, align 4
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca i8, align 1
  %99 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #12
  %100 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %100, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #12
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.ImGuiContext, ptr %101, i32 0, i32 4
  store ptr %102, ptr %9, align 8, !tbaa !5
  %103 = load ptr, ptr %5, align 8, !tbaa !5
  %104 = icmp ne ptr %103, null
  br i1 %104, label %105, label %111

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

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

113:                                              ; preds = %111
  br label %116

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

115:                                              ; No predecessors!
  br label %116

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

121:                                              ; preds = %116
  br label %124

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

123:                                              ; No predecessors!
  br label %124

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

132:                                              ; preds = %124
  br label %135

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

134:                                              ; No predecessors!
  br label %135

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

266:                                              ; preds = %247
  br label %267

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

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

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

297:                                              ; preds = %293
  br label %304

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

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

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

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

314:                                              ; preds = %308
  br label %315

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

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

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

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

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

332:                                              ; preds = %330
  br label %335

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

334:                                              ; No predecessors!
  br label %335

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

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

346:                                              ; preds = %341, %335
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImGuiContext, ptr %348, i32 0, i32 34
  store ptr %347, ptr %349, align 8, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 112, ptr %18) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(107) %18)
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 0
  store ptr %350, ptr %351, align 8, !tbaa !132
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiContext, ptr %352, i32 0, i32 87
  %354 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %354, ptr align 8 %353, i64 80, i1 false), !tbaa.struct !138
  %355 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 2
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %355, ptr noundef %356)
  %357 = load i32, ptr %7, align 4, !tbaa !9
  %358 = and i32 %357, 33554432
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %360, label %366

360:                                              ; preds = %346
  %361 = load ptr, ptr %8, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiContext, ptr %361, i32 0, i32 84
  %363 = load i32, ptr %362, align 8, !tbaa !140
  %364 = and i32 %363, 1024
  %365 = icmp ne i32 %364, 0
  br label %366

366:                                              ; preds = %360, %346
  %367 = phi i1 [ false, %346 ], [ %365, %360 ]
  %368 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 3
  %369 = zext i1 %367 to i8
  store i8 %369, ptr %368, align 2, !tbaa !141
  %370 = load ptr, ptr %8, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiContext, ptr %370, i32 0, i32 29
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %371, ptr noundef nonnull align 8 dereferenceable(107) %18)
  %372 = load i32, ptr %7, align 4, !tbaa !9
  %373 = and i32 %372, 268435456
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %380

375:                                              ; preds = %366
  %376 = load ptr, ptr %8, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.ImGuiContext, ptr %376, i32 0, i32 211
  %378 = load i32, ptr %377, align 4, !tbaa !142
  %379 = add nsw i32 %378, 1
  store i32 %379, ptr %377, align 4, !tbaa !142
  br label %380

380:                                              ; preds = %375, %366
  %381 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %382 = trunc i8 %381 to i1
  br i1 %382, label %383, label %400

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

393:                                              ; preds = %383
  %394 = load ptr, ptr %16, align 8, !tbaa !5
  br label %396

395:                                              ; preds = %383
  br label %396

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

400:                                              ; preds = %396, %380
  %401 = load ptr, ptr %10, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.ImGuiWindow, ptr %401, i32 0, i32 4
  %403 = load i32, ptr %402, align 8, !tbaa !126
  %404 = and i32 %403, 256
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %410

406:                                              ; preds = %400
  %407 = load ptr, ptr %8, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.ImGuiContext, ptr %407, i32 0, i32 83
  %409 = load i32, ptr %408, align 4, !tbaa !145
  br label %414

410:                                              ; preds = %400
  %411 = load ptr, ptr %10, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiWindow, ptr %411, i32 0, i32 2
  %413 = load i32, ptr %412, align 8, !tbaa !99
  br label %414

414:                                              ; preds = %410, %406
  %415 = phi i32 [ %409, %406 ], [ %413, %410 ]
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %415)
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.ImGuiContext, ptr %416, i32 0, i32 83
  %418 = load i32, ptr %417, align 4, !tbaa !145
  %419 = load ptr, ptr %10, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.ImGuiWindow, ptr %419, i32 0, i32 100
  store i32 %418, ptr %420, align 8, !tbaa !146
  %421 = load i32, ptr %7, align 4, !tbaa !9
  %422 = and i32 %421, 67108864
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %449

424:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #12
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.ImGuiContext, ptr %425, i32 0, i32 97
  %427 = load ptr, ptr %8, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.ImGuiContext, ptr %427, i32 0, i32 98
  %429 = getelementptr inbounds %struct.ImVector.12, ptr %428, i32 0, i32 0
  %430 = load i32, ptr %429, align 8, !tbaa !117
  %431 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %426, i32 noundef %430)
  store ptr %431, ptr %19, align 8, !tbaa !5
  %432 = load ptr, ptr %10, align 8, !tbaa !5
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.ImGuiPopupData, ptr %433, i32 0, i32 2
  store ptr %432, ptr %434, align 8, !tbaa !121
  %435 = load ptr, ptr %16, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.ImGuiWindow, ptr %435, i32 0, i32 69
  %437 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %436, i32 0, i32 15
  %438 = load i32, ptr %437, align 8, !tbaa !147
  %439 = load ptr, ptr %19, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiPopupData, ptr %439, i32 0, i32 4
  store i32 %438, ptr %440, align 8, !tbaa !148
  %441 = load ptr, ptr %8, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.ImGuiContext, ptr %441, i32 0, i32 98
  %443 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %442, ptr noundef nonnull align 8 dereferenceable(52) %443)
  %444 = load ptr, ptr %19, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiPopupData, ptr %444, i32 0, i32 0
  %446 = load i32, ptr %445, align 8, !tbaa !119
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiWindow, ptr %447, i32 0, i32 27
  store i32 %446, ptr %448, align 4, !tbaa !118
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  br label %449

449:                                              ; preds = %424, %414
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  store i8 0, ptr %20, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #12
  store i8 0, ptr %21, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #12
  store i8 0, ptr %22, align 1, !tbaa !97
  %450 = load ptr, ptr %8, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 88
  %452 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %451, i32 0, i32 0
  %453 = load i32, ptr %452, align 8, !tbaa !124
  %454 = and i32 %453, 1
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %510

456:                                              ; preds = %449
  %457 = load ptr, ptr %10, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.ImGuiWindow, ptr %457, i32 0, i32 64
  %459 = load i32, ptr %458, align 8
  %460 = shl i32 %459, 24
  %461 = ashr i32 %460, 24
  %462 = load ptr, ptr %8, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiContext, ptr %462, i32 0, i32 88
  %464 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %463, i32 0, i32 1
  %465 = load i32, ptr %464, align 4, !tbaa !149
  %466 = and i32 %461, %465
  %467 = icmp ne i32 %466, 0
  %468 = zext i1 %467 to i8
  store i8 %468, ptr %20, align 1, !tbaa !97
  %469 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %470 = trunc i8 %469 to i1
  br i1 %470, label %471, label %500

471:                                              ; preds = %456
  %472 = load ptr, ptr %8, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ImGuiContext, ptr %472, i32 0, i32 88
  %474 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %473, i32 0, i32 5
  %475 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %474)
  %476 = fcmp ogt float %475, 0x3EE4F8B580000000
  br i1 %476, label %477, label %500

477:                                              ; preds = %471
  %478 = load ptr, ptr %8, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.ImGuiContext, ptr %478, i32 0, i32 88
  %480 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %479, i32 0, i32 4
  %481 = load ptr, ptr %10, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ImGuiWindow, ptr %481, i32 0, i32 65
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %482, ptr align 8 %480, i64 8, i1 false), !tbaa.struct !150
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ImGuiContext, ptr %483, i32 0, i32 88
  %485 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %484, i32 0, i32 5
  %486 = load ptr, ptr %10, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.ImGuiWindow, ptr %486, i32 0, i32 66
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %487, ptr align 8 %485, i64 8, i1 false), !tbaa.struct !150
  %488 = load ptr, ptr %10, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.ImGuiWindow, ptr %488, i32 0, i32 64
  %490 = load i32, ptr %489, align 8
  %491 = shl i32 %490, 24
  %492 = ashr i32 %491, 24
  %493 = and i32 %492, -15
  %494 = load i32, ptr %489, align 8
  %495 = and i32 %493, 255
  %496 = and i32 %494, -256
  %497 = or i32 %496, %495
  store i32 %497, ptr %489, align 8
  %498 = shl i32 %495, 24
  %499 = ashr i32 %498, 24
  br label %509

500:                                              ; preds = %471, %456
  %501 = load ptr, ptr %10, align 8, !tbaa !5
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.ImGuiContext, ptr %502, i32 0, i32 88
  %504 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %503, i32 0, i32 4
  %505 = load ptr, ptr %8, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.ImGuiContext, ptr %505, i32 0, i32 88
  %507 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %506, i32 0, i32 1
  %508 = load i32, ptr %507, align 4, !tbaa !149
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %501, ptr noundef nonnull align 4 dereferenceable(8) %504, i32 noundef %508)
  br label %509

509:                                              ; preds = %500, %477
  br label %510

510:                                              ; preds = %509, %449
  %511 = load ptr, ptr %8, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.ImGuiContext, ptr %511, i32 0, i32 88
  %513 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %512, i32 0, i32 0
  %514 = load i32, ptr %513, align 8, !tbaa !124
  %515 = and i32 %514, 2
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %614

517:                                              ; preds = %510
  %518 = load ptr, ptr %10, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiWindow, ptr %518, i32 0, i32 64
  %520 = load i32, ptr %519, align 8
  %521 = shl i32 %520, 16
  %522 = ashr i32 %521, 24
  %523 = load ptr, ptr %8, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImGuiContext, ptr %523, i32 0, i32 88
  %525 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %524, i32 0, i32 2
  %526 = load i32, ptr %525, align 8, !tbaa !151
  %527 = and i32 %522, %526
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %536

529:                                              ; preds = %517
  %530 = load ptr, ptr %8, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.ImGuiContext, ptr %530, i32 0, i32 88
  %532 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %531, i32 0, i32 6
  %533 = getelementptr inbounds %struct.ImVec2, ptr %532, i32 0, i32 0
  %534 = load float, ptr %533, align 8, !tbaa !152
  %535 = fcmp ogt float %534, 0.000000e+00
  br label %536

536:                                              ; preds = %529, %517
  %537 = phi i1 [ false, %517 ], [ %535, %529 ]
  %538 = zext i1 %537 to i8
  store i8 %538, ptr %21, align 1, !tbaa !97
  %539 = load ptr, ptr %10, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ImGuiWindow, ptr %539, i32 0, i32 64
  %541 = load i32, ptr %540, align 8
  %542 = shl i32 %541, 16
  %543 = ashr i32 %542, 24
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.ImGuiContext, ptr %544, i32 0, i32 88
  %546 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %545, i32 0, i32 2
  %547 = load i32, ptr %546, align 8, !tbaa !151
  %548 = and i32 %543, %547
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %557

550:                                              ; preds = %536
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiContext, ptr %551, i32 0, i32 88
  %553 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %552, i32 0, i32 6
  %554 = getelementptr inbounds %struct.ImVec2, ptr %553, i32 0, i32 1
  %555 = load float, ptr %554, align 4, !tbaa !153
  %556 = fcmp ogt float %555, 0.000000e+00
  br label %557

557:                                              ; preds = %550, %536
  %558 = phi i1 [ false, %536 ], [ %556, %550 ]
  %559 = zext i1 %558 to i8
  store i8 %559, ptr %22, align 1, !tbaa !97
  %560 = load ptr, ptr %10, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiWindow, ptr %560, i32 0, i32 4
  %562 = load i32, ptr %561, align 8, !tbaa !126
  %563 = and i32 %562, 4
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %582

565:                                              ; preds = %557
  %566 = load ptr, ptr %10, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiWindow, ptr %566, i32 0, i32 64
  %568 = load i32, ptr %567, align 8
  %569 = shl i32 %568, 16
  %570 = ashr i32 %569, 24
  %571 = and i32 %570, 4
  %572 = icmp eq i32 %571, 0
  br i1 %572, label %573, label %582

573:                                              ; preds = %565
  %574 = load ptr, ptr %10, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiWindow, ptr %574, i32 0, i32 9
  %576 = getelementptr inbounds %struct.ImVec2, ptr %575, i32 0, i32 0
  %577 = load float, ptr %576, align 8, !tbaa !154
  %578 = load ptr, ptr %8, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImGuiContext, ptr %578, i32 0, i32 88
  %580 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %579, i32 0, i32 6
  %581 = getelementptr inbounds %struct.ImVec2, ptr %580, i32 0, i32 0
  store float %577, ptr %581, align 8, !tbaa !152
  br label %582

582:                                              ; preds = %573, %565, %557
  %583 = load ptr, ptr %10, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.ImGuiWindow, ptr %583, i32 0, i32 4
  %585 = load i32, ptr %584, align 8, !tbaa !126
  %586 = and i32 %585, 8
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %588, label %605

588:                                              ; preds = %582
  %589 = load ptr, ptr %10, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.ImGuiWindow, ptr %589, i32 0, i32 64
  %591 = load i32, ptr %590, align 8
  %592 = shl i32 %591, 16
  %593 = ashr i32 %592, 24
  %594 = and i32 %593, 4
  %595 = icmp eq i32 %594, 0
  br i1 %595, label %596, label %605

596:                                              ; preds = %588
  %597 = load ptr, ptr %10, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiWindow, ptr %597, i32 0, i32 9
  %599 = getelementptr inbounds %struct.ImVec2, ptr %598, i32 0, i32 1
  %600 = load float, ptr %599, align 4, !tbaa !155
  %601 = load ptr, ptr %8, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.ImGuiContext, ptr %601, i32 0, i32 88
  %603 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %602, i32 0, i32 6
  %604 = getelementptr inbounds %struct.ImVec2, ptr %603, i32 0, i32 1
  store float %600, ptr %604, align 4, !tbaa !153
  br label %605

605:                                              ; preds = %596, %588, %582
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  %607 = load ptr, ptr %8, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.ImGuiContext, ptr %607, i32 0, i32 88
  %609 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %608, i32 0, i32 6
  %610 = load ptr, ptr %8, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.ImGuiContext, ptr %610, i32 0, i32 88
  %612 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %611, i32 0, i32 2
  %613 = load i32, ptr %612, align 8, !tbaa !151
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %606, ptr noundef nonnull align 4 dereferenceable(8) %609, i32 noundef %613)
  br label %614

614:                                              ; preds = %605, %510
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.ImGuiContext, ptr %615, i32 0, i32 88
  %617 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %616, i32 0, i32 0
  %618 = load i32, ptr %617, align 8, !tbaa !124
  %619 = and i32 %618, 128
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %660

621:                                              ; preds = %614
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiContext, ptr %622, i32 0, i32 88
  %624 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %623, i32 0, i32 8
  %625 = getelementptr inbounds %struct.ImVec2, ptr %624, i32 0, i32 0
  %626 = load float, ptr %625, align 8, !tbaa !156
  %627 = fcmp oge float %626, 0.000000e+00
  br i1 %627, label %628, label %640

628:                                              ; preds = %621
  %629 = load ptr, ptr %8, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiContext, ptr %629, i32 0, i32 88
  %631 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %630, i32 0, i32 8
  %632 = getelementptr inbounds %struct.ImVec2, ptr %631, i32 0, i32 0
  %633 = load float, ptr %632, align 8, !tbaa !156
  %634 = load ptr, ptr %10, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.ImGuiWindow, ptr %634, i32 0, i32 30
  %636 = getelementptr inbounds %struct.ImVec2, ptr %635, i32 0, i32 0
  store float %633, ptr %636, align 8, !tbaa !157
  %637 = load ptr, ptr %10, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.ImGuiWindow, ptr %637, i32 0, i32 31
  %639 = getelementptr inbounds %struct.ImVec2, ptr %638, i32 0, i32 0
  store float 0.000000e+00, ptr %639, align 8, !tbaa !158
  br label %640

640:                                              ; preds = %628, %621
  %641 = load ptr, ptr %8, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiContext, ptr %641, i32 0, i32 88
  %643 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %642, i32 0, i32 8
  %644 = getelementptr inbounds %struct.ImVec2, ptr %643, i32 0, i32 1
  %645 = load float, ptr %644, align 4, !tbaa !159
  %646 = fcmp oge float %645, 0.000000e+00
  br i1 %646, label %647, label %659

647:                                              ; preds = %640
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImGuiContext, ptr %648, i32 0, i32 88
  %650 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %649, i32 0, i32 8
  %651 = getelementptr inbounds %struct.ImVec2, ptr %650, i32 0, i32 1
  %652 = load float, ptr %651, align 4, !tbaa !159
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ImGuiWindow, ptr %653, i32 0, i32 30
  %655 = getelementptr inbounds %struct.ImVec2, ptr %654, i32 0, i32 1
  store float %652, ptr %655, align 4, !tbaa !160
  %656 = load ptr, ptr %10, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiWindow, ptr %656, i32 0, i32 31
  %658 = getelementptr inbounds %struct.ImVec2, ptr %657, i32 0, i32 1
  store float 0.000000e+00, ptr %658, align 4, !tbaa !161
  br label %659

659:                                              ; preds = %647, %640
  br label %660

660:                                              ; preds = %659, %614
  %661 = load ptr, ptr %8, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.ImGuiContext, ptr %661, i32 0, i32 88
  %663 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %662, i32 0, i32 0
  %664 = load i32, ptr %663, align 8, !tbaa !124
  %665 = and i32 %664, 4
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %673

667:                                              ; preds = %660
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiContext, ptr %668, i32 0, i32 88
  %670 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %669, i32 0, i32 7
  %671 = load ptr, ptr %10, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiWindow, ptr %671, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %672, ptr align 8 %670, i64 8, i1 false), !tbaa.struct !150
  br label %680

673:                                              ; preds = %660
  %674 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %675 = trunc i8 %674 to i1
  br i1 %675, label %676, label %679

676:                                              ; preds = %673
  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)
  %677 = load ptr, ptr %10, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiWindow, ptr %677, i32 0, i32 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %678, ptr align 4 %23, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %679

679:                                              ; preds = %676, %673
  br label %680

680:                                              ; preds = %679, %667
  %681 = load ptr, ptr %8, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiContext, ptr %681, i32 0, i32 88
  %683 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %682, i32 0, i32 0
  %684 = load i32, ptr %683, align 8, !tbaa !124
  %685 = and i32 %684, 8
  %686 = icmp ne i32 %685, 0
  br i1 %686, label %687, label %698

687:                                              ; preds = %680
  %688 = load ptr, ptr %10, align 8, !tbaa !5
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ImGuiContext, ptr %689, i32 0, i32 88
  %691 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %690, i32 0, i32 10
  %692 = load i8, ptr %691, align 4, !tbaa !162, !range !93, !noundef !94
  %693 = trunc i8 %692 to i1
  %694 = load ptr, ptr %8, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiContext, ptr %694, i32 0, i32 88
  %696 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %695, i32 0, i32 3
  %697 = load i32, ptr %696, align 4, !tbaa !163
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %688, i1 noundef zeroext %693, i32 noundef %697)
  br label %698

698:                                              ; preds = %687, %680
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiContext, ptr %699, i32 0, i32 88
  %701 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %700, i32 0, i32 0
  %702 = load i32, ptr %701, align 8, !tbaa !124
  %703 = and i32 %702, 32
  %704 = icmp ne i32 %703, 0
  br i1 %704, label %705, label %707

705:                                              ; preds = %698
  %706 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %706, i32 noundef 0)
  br label %707

707:                                              ; preds = %705, %698
  %708 = load ptr, ptr %10, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImGuiWindow, ptr %708, i32 0, i32 43
  %710 = load i8, ptr %709, align 1, !tbaa !122, !range !93, !noundef !94
  %711 = trunc i8 %710 to i1
  br i1 %711, label %712, label %714

712:                                              ; preds = %707
  %713 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %713, i32 noundef 8, i1 noundef zeroext false)
  br label %714

714:                                              ; preds = %712, %707
  %715 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %715)
  %716 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 3
  %717 = load i8, ptr %716, align 2, !tbaa !141, !range !93, !noundef !94
  %718 = trunc i8 %717 to i1
  br i1 %718, label %719, label %726

719:                                              ; preds = %714
  %720 = load ptr, ptr %10, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiWindow, ptr %720, i32 0, i32 91
  %722 = load ptr, ptr %721, align 8, !tbaa !164
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = icmp eq ptr %722, %723
  br i1 %724, label %725, label %726

725:                                              ; preds = %719
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  br label %726

726:                                              ; preds = %725, %719, %714
  %727 = load ptr, ptr %8, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ImGuiContext, ptr %727, i32 0, i32 34
  store ptr null, ptr %728, align 8, !tbaa !137
  %729 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %2830

731:                                              ; preds = %726
  %732 = load ptr, ptr %10, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImGuiWindow, ptr %732, i32 0, i32 42
  %734 = load i8, ptr %733, align 8, !tbaa !165, !range !93, !noundef !94
  %735 = trunc i8 %734 to i1
  br i1 %735, label %2830, label %736

736:                                              ; preds = %731
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  %737 = load i32, ptr %7, align 4, !tbaa !9
  %738 = and i32 %737, 16777216
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %744

740:                                              ; preds = %736
  %741 = load i32, ptr %7, align 4, !tbaa !9
  %742 = and i32 %741, 33554432
  %743 = icmp ne i32 %742, 0
  br label %744

744:                                              ; preds = %740, %736
  %745 = phi i1 [ false, %736 ], [ %743, %740 ]
  %746 = zext i1 %745 to i8
  store i8 %746, ptr %24, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #12
  %747 = load ptr, ptr %10, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiWindow, ptr %747, i32 0, i32 61
  %749 = load i8, ptr %748, align 1, !tbaa !166
  %750 = sext i8 %749 to i32
  %751 = icmp sgt i32 %750, 0
  %752 = zext i1 %751 to i8
  store i8 %752, ptr %25, align 1, !tbaa !97
  %753 = load ptr, ptr %10, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.ImGuiWindow, ptr %753, i32 0, i32 36
  store i8 1, ptr %754, align 2, !tbaa !167
  %755 = load ptr, ptr %6, align 8, !tbaa !5
  %756 = icmp ne ptr %755, null
  %757 = load ptr, ptr %10, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ImGuiWindow, ptr %757, i32 0, i32 47
  %759 = zext i1 %756 to i8
  store i8 %759, ptr %758, align 1, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #12
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %27, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %27)
  %760 = load ptr, ptr %10, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.ImGuiWindow, ptr %760, i32 0, i32 75
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %761, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !169
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #12
  %762 = load ptr, ptr %10, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiWindow, ptr %762, i32 0, i32 68
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %763, i32 noundef 1)
  %764 = load ptr, ptr %10, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.ImGuiWindow, ptr %764, i32 0, i32 87
  %766 = load ptr, ptr %765, align 8, !tbaa !170
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(200) %766)
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.ImGuiWindow, ptr %767, i32 0, i32 69
  %769 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %768, i32 0, i32 29
  store i32 -1, ptr %769, align 8, !tbaa !171
  %770 = load ptr, ptr %10, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.ImGuiWindow, ptr %770, i32 0, i32 103
  %772 = load i8, ptr %771, align 4, !tbaa !172, !range !93, !noundef !94
  %773 = trunc i8 %772 to i1
  br i1 %773, label %774, label %776

774:                                              ; preds = %744
  %775 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %775)
  br label %776

776:                                              ; preds = %774, %744
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #12
  store i8 0, ptr %28, align 1, !tbaa !97
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.ImGuiContext, ptr %777, i32 0, i32 152
  %779 = load ptr, ptr %778, align 8, !tbaa !173
  %780 = icmp ne ptr %779, null
  br i1 %780, label %781, label %788

781:                                              ; preds = %776
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiWindow, ptr %782, i32 0, i32 3
  %784 = load i32, ptr %783, align 4, !tbaa !123
  %785 = and i32 %784, 131072
  %786 = icmp eq i32 %785, 0
  br i1 %786, label %787, label %788

787:                                              ; preds = %781
  store i8 1, ptr %28, align 1, !tbaa !97
  br label %788

788:                                              ; preds = %787, %781, %776
  %789 = load i8, ptr %28, align 1, !tbaa !97, !range !93, !noundef !94
  %790 = trunc i8 %789 to i1
  br i1 %790, label %791, label %817

791:                                              ; preds = %788
  %792 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %793 = trunc i8 %792 to i1
  br i1 %793, label %817, label %794

794:                                              ; preds = %791
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = load ptr, ptr %10, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.ImGuiWindow, ptr %796, i32 0, i32 1
  %798 = load ptr, ptr %797, align 8, !tbaa !174
  %799 = call i32 @strcmp(ptr noundef %795, ptr noundef %798) #15
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %817

801:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #12
  %802 = load ptr, ptr %10, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.ImGuiWindow, ptr %802, i32 0, i32 24
  %804 = load i32, ptr %803, align 8, !tbaa !175
  %805 = sext i32 %804 to i64
  store i64 %805, ptr %29, align 8, !tbaa !176
  %806 = load ptr, ptr %10, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.ImGuiWindow, ptr %806, i32 0, i32 1
  %808 = load ptr, ptr %807, align 8, !tbaa !174
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %808, ptr noundef %29, ptr noundef %809)
  %811 = load ptr, ptr %10, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.ImGuiWindow, ptr %811, i32 0, i32 1
  store ptr %810, ptr %812, align 8, !tbaa !174
  %813 = load i64, ptr %29, align 8, !tbaa !176
  %814 = trunc i64 %813 to i32
  %815 = load ptr, ptr %10, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.ImGuiWindow, ptr %815, i32 0, i32 24
  store i32 %814, ptr %816, align 8, !tbaa !175
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #12
  br label %817

817:                                              ; preds = %801, %794, %791, %788
  %818 = load ptr, ptr %10, align 8, !tbaa !5
  %819 = load ptr, ptr %10, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImGuiWindow, ptr %819, i32 0, i32 10
  %821 = load ptr, ptr %10, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiWindow, ptr %821, i32 0, i32 11
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %818, ptr noundef %820, ptr noundef %822)
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiWindow, ptr %823, i32 0, i32 60
  %825 = load i8, ptr %824, align 4, !tbaa !178
  %826 = sext i8 %825 to i32
  %827 = icmp sgt i32 %826, 0
  br i1 %827, label %828, label %833

828:                                              ; preds = %817
  %829 = load ptr, ptr %10, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.ImGuiWindow, ptr %829, i32 0, i32 60
  %831 = load i8, ptr %830, align 4, !tbaa !178
  %832 = add i8 %831, -1
  store i8 %832, ptr %830, align 4, !tbaa !178
  br label %833

833:                                              ; preds = %828, %817
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.ImGuiWindow, ptr %834, i32 0, i32 61
  %836 = load i8, ptr %835, align 1, !tbaa !166
  %837 = sext i8 %836 to i32
  %838 = icmp sgt i32 %837, 0
  br i1 %838, label %839, label %844

839:                                              ; preds = %833
  %840 = load ptr, ptr %10, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImGuiWindow, ptr %840, i32 0, i32 61
  %842 = load i8, ptr %841, align 1, !tbaa !166
  %843 = add i8 %842, -1
  store i8 %843, ptr %841, align 1, !tbaa !166
  br label %844

844:                                              ; preds = %839, %833
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiWindow, ptr %845, i32 0, i32 62
  %847 = load i8, ptr %846, align 2, !tbaa !179
  %848 = sext i8 %847 to i32
  %849 = icmp sgt i32 %848, 0
  br i1 %849, label %850, label %855

850:                                              ; preds = %844
  %851 = load ptr, ptr %10, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImGuiWindow, ptr %851, i32 0, i32 62
  %853 = load i8, ptr %852, align 2, !tbaa !179
  %854 = add i8 %853, -1
  store i8 %854, ptr %852, align 2, !tbaa !179
  br label %855

855:                                              ; preds = %850, %844
  %856 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %857 = trunc i8 %856 to i1
  br i1 %857, label %858, label %867

858:                                              ; preds = %855
  %859 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %860 = trunc i8 %859 to i1
  br i1 %860, label %861, label %864

861:                                              ; preds = %858
  %862 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %863 = trunc i8 %862 to i1
  br i1 %863, label %867, label %864

864:                                              ; preds = %861, %858
  %865 = load ptr, ptr %10, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.ImGuiWindow, ptr %865, i32 0, i32 61
  store i8 1, ptr %866, align 1, !tbaa !166
  br label %867

867:                                              ; preds = %864, %861, %855
  %868 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %869 = trunc i8 %868 to i1
  br i1 %869, label %870, label %906

870:                                              ; preds = %867
  %871 = load i32, ptr %7, align 4, !tbaa !9
  %872 = and i32 %871, 100663296
  %873 = icmp ne i32 %872, 0
  br i1 %873, label %874, label %906

874:                                              ; preds = %870
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiWindow, ptr %875, i32 0, i32 61
  store i8 1, ptr %876, align 1, !tbaa !166
  %877 = load i32, ptr %7, align 4, !tbaa !9
  %878 = and i32 %877, 64
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %880, label %905

880:                                              ; preds = %874
  %881 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %882 = trunc i8 %881 to i1
  br i1 %882, label %890, label %883

883:                                              ; preds = %880
  %884 = load ptr, ptr %10, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.ImGuiWindow, ptr %884, i32 0, i32 9
  %886 = getelementptr inbounds %struct.ImVec2, ptr %885, i32 0, i32 0
  store float 0.000000e+00, ptr %886, align 8, !tbaa !154
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.ImGuiWindow, ptr %887, i32 0, i32 8
  %889 = getelementptr inbounds %struct.ImVec2, ptr %888, i32 0, i32 0
  store float 0.000000e+00, ptr %889, align 8, !tbaa !180
  br label %890

890:                                              ; preds = %883, %880
  %891 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %892 = trunc i8 %891 to i1
  br i1 %892, label %900, label %893

893:                                              ; preds = %890
  %894 = load ptr, ptr %10, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiWindow, ptr %894, i32 0, i32 9
  %896 = getelementptr inbounds %struct.ImVec2, ptr %895, i32 0, i32 1
  store float 0.000000e+00, ptr %896, align 4, !tbaa !155
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.ImGuiWindow, ptr %897, i32 0, i32 8
  %899 = getelementptr inbounds %struct.ImVec2, ptr %898, i32 0, i32 1
  store float 0.000000e+00, ptr %899, align 4, !tbaa !181
  br label %900

900:                                              ; preds = %893, %890
  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)
  %901 = load ptr, ptr %10, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImGuiWindow, ptr %901, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %902, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !150
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiWindow, ptr %903, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %904, ptr align 4 %902, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  br label %905

905:                                              ; preds = %900, %874
  br label %906

906:                                              ; preds = %905, %870, %867
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #12
  %907 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  store ptr %907, ptr %31, align 8, !tbaa !5
  %908 = load ptr, ptr %10, align 8, !tbaa !5
  %909 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %908, ptr noundef %909)
  %910 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %910)
  %911 = load i32, ptr %7, align 4, !tbaa !9
  %912 = and i32 %911, 16777216
  %913 = icmp ne i32 %912, 0
  br i1 %913, label %914, label %920

914:                                              ; preds = %906
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiStyle, ptr %915, i32 0, i32 9
  %917 = load float, ptr %916, align 4, !tbaa !182
  %918 = load ptr, ptr %10, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImGuiWindow, ptr %918, i32 0, i32 15
  store float %917, ptr %919, align 4, !tbaa !183
  br label %940

920:                                              ; preds = %906
  %921 = load i32, ptr %7, align 4, !tbaa !9
  %922 = and i32 %921, 100663296
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %924, label %932

924:                                              ; preds = %920
  %925 = load i32, ptr %7, align 4, !tbaa !9
  %926 = and i32 %925, 134217728
  %927 = icmp ne i32 %926, 0
  br i1 %927, label %932, label %928

928:                                              ; preds = %924
  %929 = load ptr, ptr %9, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.ImGuiStyle, ptr %929, i32 0, i32 11
  %931 = load float, ptr %930, align 4, !tbaa !184
  br label %936

932:                                              ; preds = %924, %920
  %933 = load ptr, ptr %9, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.ImGuiStyle, ptr %933, i32 0, i32 4
  %935 = load float, ptr %934, align 4, !tbaa !185
  br label %936

936:                                              ; preds = %932, %928
  %937 = phi float [ %931, %928 ], [ %935, %932 ]
  %938 = load ptr, ptr %10, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ImGuiWindow, ptr %938, i32 0, i32 15
  store float %937, ptr %939, align 4, !tbaa !183
  br label %940

940:                                              ; preds = %936, %914
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiStyle, ptr %941, i32 0, i32 2
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.ImGuiWindow, ptr %943, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %944, ptr align 4 %942, i64 8, i1 false), !tbaa.struct !150
  %945 = load i32, ptr %7, align 4, !tbaa !9
  %946 = and i32 %945, 16777216
  %947 = icmp ne i32 %946, 0
  br i1 %947, label %948, label %977

948:                                              ; preds = %940
  %949 = load i32, ptr %7, align 4, !tbaa !9
  %950 = and i32 %949, 67108864
  %951 = icmp ne i32 %950, 0
  br i1 %951, label %977, label %952

952:                                              ; preds = %948
  %953 = load ptr, ptr %10, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiWindow, ptr %953, i32 0, i32 4
  %955 = load i32, ptr %954, align 8, !tbaa !126
  %956 = and i32 %955, 2
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %977, label %958

958:                                              ; preds = %952
  %959 = load ptr, ptr %10, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiWindow, ptr %959, i32 0, i32 15
  %961 = load float, ptr %960, align 4, !tbaa !183
  %962 = fcmp oeq float %961, 0.000000e+00
  br i1 %962, label %963, label %977

963:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #12
  %964 = load i32, ptr %7, align 4, !tbaa !9
  %965 = and i32 %964, 1024
  %966 = icmp ne i32 %965, 0
  br i1 %966, label %967, label %972

967:                                              ; preds = %963
  %968 = load ptr, ptr %9, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiStyle, ptr %968, i32 0, i32 2
  %970 = getelementptr inbounds %struct.ImVec2, ptr %969, i32 0, i32 1
  %971 = load float, ptr %970, align 4, !tbaa !186
  br label %973

972:                                              ; preds = %963
  br label %973

973:                                              ; preds = %972, %967
  %974 = phi float [ %971, %967 ], [ 0.000000e+00, %972 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %974)
  %975 = load ptr, ptr %10, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImGuiWindow, ptr %975, i32 0, i32 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %976, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #12
  br label %977

977:                                              ; preds = %973, %958, %952, %948, %940
  %978 = load ptr, ptr %10, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.ImGuiWindow, ptr %978, i32 0, i32 13
  %980 = getelementptr inbounds %struct.ImVec2, ptr %979, i32 0, i32 0
  %981 = load float, ptr %980, align 8, !tbaa !187
  %982 = load ptr, ptr %9, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImGuiStyle, ptr %982, i32 0, i32 15
  %984 = getelementptr inbounds %struct.ImVec2, ptr %983, i32 0, i32 0
  %985 = load float, ptr %984, align 4, !tbaa !188
  %986 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %981, float noundef %985)
  %987 = load ptr, ptr %8, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImGuiContext, ptr %987, i32 0, i32 88
  %989 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %988, i32 0, i32 15
  %990 = getelementptr inbounds %struct.ImVec2, ptr %989, i32 0, i32 0
  %991 = load float, ptr %990, align 4, !tbaa !189
  %992 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %986, float noundef %991)
  %993 = load ptr, ptr %10, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.ImGuiWindow, ptr %993, i32 0, i32 69
  %995 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %994, i32 0, i32 22
  %996 = getelementptr inbounds %struct.ImVec2, ptr %995, i32 0, i32 0
  store float %992, ptr %996, align 4, !tbaa !190
  %997 = load ptr, ptr %8, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiContext, ptr %997, i32 0, i32 88
  %999 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %998, i32 0, i32 15
  %1000 = getelementptr inbounds %struct.ImVec2, ptr %999, i32 0, i32 1
  %1001 = load float, ptr %1000, align 4, !tbaa !191
  %1002 = load ptr, ptr %10, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImGuiWindow, ptr %1002, i32 0, i32 69
  %1004 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1003, i32 0, i32 22
  %1005 = getelementptr inbounds %struct.ImVec2, ptr %1004, i32 0, i32 1
  store float %1001, ptr %1005, align 4, !tbaa !192
  %1006 = load i32, ptr %7, align 4, !tbaa !9
  %1007 = and i32 %1006, 1
  %1008 = icmp ne i32 %1007, 0
  br i1 %1008, label %1009, label %1010

1009:                                             ; preds = %977
  br label %1020

1010:                                             ; preds = %977
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiContext, ptr %1011, i32 0, i32 6
  %1013 = load float, ptr %1012, align 8, !tbaa !193
  %1014 = load ptr, ptr %8, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiContext, ptr %1014, i32 0, i32 4
  %1016 = getelementptr inbounds %struct.ImGuiStyle, ptr %1015, i32 0, i32 12
  %1017 = getelementptr inbounds %struct.ImVec2, ptr %1016, i32 0, i32 1
  %1018 = load float, ptr %1017, align 4, !tbaa !194
  %1019 = call float @llvm.fmuladd.f32(float %1018, float 2.000000e+00, float %1013)
  br label %1020

1020:                                             ; preds = %1010, %1009
  %1021 = phi float [ 0.000000e+00, %1009 ], [ %1019, %1010 ]
  %1022 = load ptr, ptr %10, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImGuiWindow, ptr %1022, i32 0, i32 16
  store float %1021, ptr %1023, align 8, !tbaa !195
  %1024 = load i32, ptr %7, align 4, !tbaa !9
  %1025 = and i32 %1024, 1024
  %1026 = icmp ne i32 %1025, 0
  br i1 %1026, label %1027, label %1043

1027:                                             ; preds = %1020
  %1028 = load ptr, ptr %10, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImGuiWindow, ptr %1028, i32 0, i32 69
  %1030 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1029, i32 0, i32 22
  %1031 = getelementptr inbounds %struct.ImVec2, ptr %1030, i32 0, i32 1
  %1032 = load float, ptr %1031, align 4, !tbaa !192
  %1033 = load ptr, ptr %8, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImGuiContext, ptr %1033, i32 0, i32 6
  %1035 = load float, ptr %1034, align 8, !tbaa !193
  %1036 = fadd float %1032, %1035
  %1037 = load ptr, ptr %8, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ImGuiContext, ptr %1037, i32 0, i32 4
  %1039 = getelementptr inbounds %struct.ImGuiStyle, ptr %1038, i32 0, i32 12
  %1040 = getelementptr inbounds %struct.ImVec2, ptr %1039, i32 0, i32 1
  %1041 = load float, ptr %1040, align 4, !tbaa !194
  %1042 = call float @llvm.fmuladd.f32(float %1041, float 2.000000e+00, float %1036)
  br label %1044

1043:                                             ; preds = %1020
  br label %1044

1044:                                             ; preds = %1043, %1027
  %1045 = phi float [ %1042, %1027 ], [ 0.000000e+00, %1043 ]
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ImGuiWindow, ptr %1046, i32 0, i32 17
  store float %1045, ptr %1047, align 4, !tbaa !196
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  %1048 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1049 = trunc i8 %1048 to i1
  %1050 = zext i1 %1049 to i8
  store i8 %1050, ptr %33, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #12
  %1051 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1052 = trunc i8 %1051 to i1
  %1053 = zext i1 %1052 to i8
  store i8 %1053, ptr %34, align 1, !tbaa !97
  %1054 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1055 = trunc i8 %1054 to i1
  br i1 %1055, label %1056, label %1063

1056:                                             ; preds = %1044
  %1057 = load ptr, ptr %10, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.ImGuiWindow, ptr %1057, i32 0, i32 12
  %1059 = getelementptr inbounds %struct.ImVec2, ptr %1058, i32 0, i32 0
  %1060 = load float, ptr %1059, align 8, !tbaa !197
  %1061 = fcmp une float %1060, 0.000000e+00
  br i1 %1061, label %1062, label %1063

1062:                                             ; preds = %1056
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1063

1063:                                             ; preds = %1062, %1056, %1044
  %1064 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1066, label %1073

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr %10, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiWindow, ptr %1067, i32 0, i32 12
  %1069 = getelementptr inbounds %struct.ImVec2, ptr %1068, i32 0, i32 1
  %1070 = load float, ptr %1069, align 4, !tbaa !198
  %1071 = fcmp une float %1070, 0.000000e+00
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1066
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1073

1073:                                             ; preds = %1072, %1066, %1063
  %1074 = load i32, ptr %7, align 4, !tbaa !9
  %1075 = and i32 %1074, 1
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1144, label %1077

1077:                                             ; preds = %1073
  %1078 = load i32, ptr %7, align 4, !tbaa !9
  %1079 = and i32 %1078, 32
  %1080 = icmp ne i32 %1079, 0
  br i1 %1080, label %1144, label %1081

1081:                                             ; preds = %1077
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #12
  %1082 = load ptr, ptr %10, align 8, !tbaa !5
  %1083 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1082)
  %1084 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 0
  %1085 = extractvalue { <2 x float>, <2 x float> } %1083, 0
  store <2 x float> %1085, ptr %1084, align 4
  %1086 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 1
  %1087 = extractvalue { <2 x float>, <2 x float> } %1083, 1
  store <2 x float> %1087, ptr %1086, align 4
  %1088 = load ptr, ptr %8, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiContext, ptr %1088, i32 0, i32 35
  %1090 = load ptr, ptr %1089, align 8, !tbaa !199
  %1091 = load ptr, ptr %10, align 8, !tbaa !5
  %1092 = icmp eq ptr %1090, %1091
  br i1 %1092, label %1093, label %1122

1093:                                             ; preds = %1081
  %1094 = load ptr, ptr %8, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.ImGuiContext, ptr %1094, i32 0, i32 47
  %1096 = load i32, ptr %1095, align 8, !tbaa !200
  %1097 = icmp eq i32 %1096, 0
  br i1 %1097, label %1098, label %1122

1098:                                             ; preds = %1093
  %1099 = load ptr, ptr %8, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiContext, ptr %1099, i32 0, i32 48
  %1101 = load i32, ptr %1100, align 4, !tbaa !201
  %1102 = icmp eq i32 %1101, 0
  br i1 %1102, label %1103, label %1122

1103:                                             ; preds = %1098
  %1104 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 0
  %1105 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 1
  %1106 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1104, ptr noundef nonnull align 4 dereferenceable(8) %1105, i1 noundef zeroext true)
  br i1 %1106, label %1107, label %1122

1107:                                             ; preds = %1103
  %1108 = load ptr, ptr %8, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.ImGuiContext, ptr %1108, i32 0, i32 3
  %1110 = getelementptr inbounds %struct.ImGuiIO, ptr %1109, i32 0, i32 82
  %1111 = getelementptr inbounds [5 x i16], ptr %1110, i64 0, i64 0
  %1112 = load i16, ptr %1111, align 2, !tbaa !202
  %1113 = zext i16 %1112 to i32
  %1114 = icmp eq i32 %1113, 2
  br i1 %1114, label %1115, label %1121

1115:                                             ; preds = %1107
  %1116 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 655)
  %1117 = icmp eq i32 %1116, -1
  br i1 %1117, label %1118, label %1121

1118:                                             ; preds = %1115
  %1119 = load ptr, ptr %10, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImGuiWindow, ptr %1119, i32 0, i32 40
  store i8 1, ptr %1120, align 2, !tbaa !203
  br label %1121

1121:                                             ; preds = %1118, %1115, %1107
  br label %1122

1122:                                             ; preds = %1121, %1103, %1098, %1093, %1081
  %1123 = load ptr, ptr %10, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiWindow, ptr %1123, i32 0, i32 40
  %1125 = load i8, ptr %1124, align 2, !tbaa !203, !range !93, !noundef !94
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1127, label %1143

1127:                                             ; preds = %1122
  %1128 = load ptr, ptr %10, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.ImGuiWindow, ptr %1128, i32 0, i32 39
  %1130 = load i8, ptr %1129, align 1, !tbaa !204, !range !93, !noundef !94
  %1131 = trunc i8 %1130 to i1
  %1132 = xor i1 %1131, true
  %1133 = load ptr, ptr %10, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiWindow, ptr %1133, i32 0, i32 39
  %1135 = zext i1 %1132 to i8
  store i8 %1135, ptr %1134, align 1, !tbaa !204
  %1136 = load ptr, ptr %10, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiWindow, ptr %1136, i32 0, i32 39
  %1138 = load i8, ptr %1137, align 1, !tbaa !204, !range !93, !noundef !94
  %1139 = trunc i8 %1138 to i1
  br i1 %1139, label %1141, label %1140

1140:                                             ; preds = %1127
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1141

1141:                                             ; preds = %1140, %1127
  %1142 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1142)
  br label %1143

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

1144:                                             ; preds = %1077, %1073
  %1145 = load ptr, ptr %10, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ImGuiWindow, ptr %1145, i32 0, i32 39
  store i8 0, ptr %1146, align 1, !tbaa !204
  br label %1147

1147:                                             ; preds = %1144, %1143
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiWindow, ptr %1148, i32 0, i32 40
  store i8 0, ptr %1149, align 2, !tbaa !203
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiWindow, ptr %1150, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %1151, i64 8, i1 false), !tbaa.struct !150
  %1152 = load ptr, ptr %10, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiWindow, ptr %1152, i32 0, i32 18
  store float 0.000000e+00, ptr %1153, align 8, !tbaa !205
  %1154 = load ptr, ptr %10, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.ImGuiWindow, ptr %1154, i32 0, i32 20
  store float 0.000000e+00, ptr %1155, align 8, !tbaa !206
  %1156 = load ptr, ptr %10, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.ImGuiWindow, ptr %1156, i32 0, i32 16
  %1158 = load float, ptr %1157, align 8, !tbaa !195
  %1159 = load ptr, ptr %10, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.ImGuiWindow, ptr %1159, i32 0, i32 17
  %1161 = load float, ptr %1160, align 4, !tbaa !196
  %1162 = fadd float %1158, %1161
  %1163 = load ptr, ptr %10, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImGuiWindow, ptr %1163, i32 0, i32 19
  store float %1162, ptr %1164, align 4, !tbaa !207
  %1165 = load ptr, ptr %10, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.ImGuiWindow, ptr %1165, i32 0, i32 21
  store float 0.000000e+00, ptr %1166, align 4, !tbaa !208
  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)
  %1167 = load ptr, ptr %10, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.ImGuiWindow, ptr %1167, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1168, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #12
  %1169 = load ptr, ptr %10, align 8, !tbaa !5
  %1170 = load ptr, ptr %10, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImGuiWindow, ptr %1170, i32 0, i32 11
  %1172 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %1169, ptr noundef nonnull align 4 dereferenceable(8) %1171)
  store <2 x float> %1172, ptr %38, align 4
  %1173 = load i32, ptr %7, align 4, !tbaa !9
  %1174 = and i32 %1173, 64
  %1175 = icmp ne i32 %1174, 0
  br i1 %1175, label %1176, label %1200

1176:                                             ; preds = %1147
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.ImGuiWindow, ptr %1177, i32 0, i32 39
  %1179 = load i8, ptr %1178, align 1, !tbaa !204, !range !93, !noundef !94
  %1180 = trunc i8 %1179 to i1
  br i1 %1180, label %1200, label %1181

1181:                                             ; preds = %1176
  %1182 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1183 = trunc i8 %1182 to i1
  br i1 %1183, label %1190, label %1184

1184:                                             ; preds = %1181
  %1185 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1186 = load float, ptr %1185, align 4, !tbaa !209
  %1187 = load ptr, ptr %10, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.ImGuiWindow, ptr %1187, i32 0, i32 9
  %1189 = getelementptr inbounds %struct.ImVec2, ptr %1188, i32 0, i32 0
  store float %1186, ptr %1189, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1190

1190:                                             ; preds = %1184, %1181
  %1191 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1199, label %1193

1193:                                             ; preds = %1190
  %1194 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1195 = load float, ptr %1194, align 4, !tbaa !210
  %1196 = load ptr, ptr %10, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.ImGuiWindow, ptr %1196, i32 0, i32 9
  %1198 = getelementptr inbounds %struct.ImVec2, ptr %1197, i32 0, i32 1
  store float %1195, ptr %1198, align 4, !tbaa !155
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1199

1199:                                             ; preds = %1193, %1190
  br label %1281

1200:                                             ; preds = %1176, %1147
  %1201 = load ptr, ptr %10, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.ImGuiWindow, ptr %1201, i32 0, i32 55
  %1203 = load i8, ptr %1202, align 2, !tbaa !211
  %1204 = sext i8 %1203 to i32
  %1205 = icmp sgt i32 %1204, 0
  br i1 %1205, label %1212, label %1206

1206:                                             ; preds = %1200
  %1207 = load ptr, ptr %10, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiWindow, ptr %1207, i32 0, i32 56
  %1209 = load i8, ptr %1208, align 1, !tbaa !212
  %1210 = sext i8 %1209 to i32
  %1211 = icmp sgt i32 %1210, 0
  br i1 %1211, label %1212, label %1280

1212:                                             ; preds = %1206, %1200
  %1213 = load i8, ptr %21, align 1, !tbaa !97, !range !93, !noundef !94
  %1214 = trunc i8 %1213 to i1
  br i1 %1214, label %1242, label %1215

1215:                                             ; preds = %1212
  %1216 = load ptr, ptr %10, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiWindow, ptr %1216, i32 0, i32 55
  %1218 = load i8, ptr %1217, align 2, !tbaa !211
  %1219 = sext i8 %1218 to i32
  %1220 = icmp sgt i32 %1219, 0
  br i1 %1220, label %1221, label %1242

1221:                                             ; preds = %1215
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiWindow, ptr %1222, i32 0, i32 57
  %1224 = load i8, ptr %1223, align 4, !tbaa !213, !range !93, !noundef !94
  %1225 = trunc i8 %1224 to i1
  br i1 %1225, label %1226, label %1234

1226:                                             ; preds = %1221
  %1227 = load ptr, ptr %10, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.ImGuiWindow, ptr %1227, i32 0, i32 9
  %1229 = getelementptr inbounds %struct.ImVec2, ptr %1228, i32 0, i32 0
  %1230 = load float, ptr %1229, align 8, !tbaa !154
  %1231 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1232 = load float, ptr %1231, align 4, !tbaa !209
  %1233 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1230, float noundef %1232)
  br label %1237

1234:                                             ; preds = %1221
  %1235 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1236 = load float, ptr %1235, align 4, !tbaa !209
  br label %1237

1237:                                             ; preds = %1234, %1226
  %1238 = phi float [ %1233, %1226 ], [ %1236, %1234 ]
  %1239 = load ptr, ptr %10, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ImGuiWindow, ptr %1239, i32 0, i32 9
  %1241 = getelementptr inbounds %struct.ImVec2, ptr %1240, i32 0, i32 0
  store float %1238, ptr %1241, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1242

1242:                                             ; preds = %1237, %1215, %1212
  %1243 = load i8, ptr %22, align 1, !tbaa !97, !range !93, !noundef !94
  %1244 = trunc i8 %1243 to i1
  br i1 %1244, label %1272, label %1245

1245:                                             ; preds = %1242
  %1246 = load ptr, ptr %10, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.ImGuiWindow, ptr %1246, i32 0, i32 56
  %1248 = load i8, ptr %1247, align 1, !tbaa !212
  %1249 = sext i8 %1248 to i32
  %1250 = icmp sgt i32 %1249, 0
  br i1 %1250, label %1251, label %1272

1251:                                             ; preds = %1245
  %1252 = load ptr, ptr %10, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiWindow, ptr %1252, i32 0, i32 57
  %1254 = load i8, ptr %1253, align 4, !tbaa !213, !range !93, !noundef !94
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1264

1256:                                             ; preds = %1251
  %1257 = load ptr, ptr %10, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiWindow, ptr %1257, i32 0, i32 9
  %1259 = getelementptr inbounds %struct.ImVec2, ptr %1258, i32 0, i32 1
  %1260 = load float, ptr %1259, align 4, !tbaa !155
  %1261 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1262 = load float, ptr %1261, align 4, !tbaa !210
  %1263 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1260, float noundef %1262)
  br label %1267

1264:                                             ; preds = %1251
  %1265 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1266 = load float, ptr %1265, align 4, !tbaa !210
  br label %1267

1267:                                             ; preds = %1264, %1256
  %1268 = phi float [ %1263, %1256 ], [ %1266, %1264 ]
  %1269 = load ptr, ptr %10, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.ImGuiWindow, ptr %1269, i32 0, i32 9
  %1271 = getelementptr inbounds %struct.ImVec2, ptr %1270, i32 0, i32 1
  store float %1268, ptr %1271, align 4, !tbaa !155
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1272

1272:                                             ; preds = %1267, %1245, %1242
  %1273 = load ptr, ptr %10, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiWindow, ptr %1273, i32 0, i32 39
  %1275 = load i8, ptr %1274, align 1, !tbaa !204, !range !93, !noundef !94
  %1276 = trunc i8 %1275 to i1
  br i1 %1276, label %1279, label %1277

1277:                                             ; preds = %1272
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1278)
  br label %1279

1279:                                             ; preds = %1277, %1272
  br label %1280

1280:                                             ; preds = %1279, %1206
  br label %1281

1281:                                             ; preds = %1280, %1199
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %1282 = load ptr, ptr %10, align 8, !tbaa !5
  %1283 = load ptr, ptr %10, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ImGuiWindow, ptr %1283, i32 0, i32 9
  %1285 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1282, ptr noundef nonnull align 4 dereferenceable(8) %1284)
  store <2 x float> %1285, ptr %39, align 4
  %1286 = load ptr, ptr %10, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ImGuiWindow, ptr %1286, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1287, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %1288 = load ptr, ptr %10, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiWindow, ptr %1288, i32 0, i32 39
  %1290 = load i8, ptr %1289, align 1, !tbaa !204, !range !93, !noundef !94
  %1291 = trunc i8 %1290 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #12
  br i1 %1291, label %1292, label %1304

1292:                                             ; preds = %1281
  %1293 = load i32, ptr %7, align 4, !tbaa !9
  %1294 = and i32 %1293, 16777216
  %1295 = icmp ne i32 %1294, 0
  br i1 %1295, label %1304, label %1296

1296:                                             ; preds = %1292
  %1297 = load ptr, ptr %10, align 8, !tbaa !5
  %1298 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1297)
  %1299 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 0
  %1300 = extractvalue { <2 x float>, <2 x float> } %1298, 0
  store <2 x float> %1300, ptr %1299, align 4
  %1301 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 1
  %1302 = extractvalue { <2 x float>, <2 x float> } %1298, 1
  store <2 x float> %1302, ptr %1301, align 4
  %1303 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %1303, ptr %40, align 4
  br label %1307

1304:                                             ; preds = %1292, %1281
  %1305 = load ptr, ptr %10, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiWindow, ptr %1305, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1306, i64 8, i1 false), !tbaa.struct !150
  br label %1307

1307:                                             ; preds = %1304, %1296
  %1308 = load ptr, ptr %10, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.ImGuiWindow, ptr %1308, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1309, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  %1310 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %1311 = trunc i8 %1310 to i1
  br i1 %1311, label %1312, label %1333

1312:                                             ; preds = %1307
  %1313 = load ptr, ptr %10, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.ImGuiWindow, ptr %1313, i32 0, i32 59
  store i32 -1, ptr %1314, align 8, !tbaa !214
  %1315 = load i32, ptr %7, align 4, !tbaa !9
  %1316 = and i32 %1315, 67108864
  %1317 = icmp ne i32 %1316, 0
  br i1 %1317, label %1318, label %1332

1318:                                             ; preds = %1312
  %1319 = load i32, ptr %7, align 4, !tbaa !9
  %1320 = and i32 %1319, 134217728
  %1321 = icmp ne i32 %1320, 0
  br i1 %1321, label %1332, label %1322

1322:                                             ; preds = %1318
  %1323 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1324 = trunc i8 %1323 to i1
  br i1 %1324, label %1332, label %1325

1325:                                             ; preds = %1322
  %1326 = load ptr, ptr %8, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.ImGuiContext, ptr %1326, i32 0, i32 98
  %1328 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1327)
  %1329 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1328, i32 0, i32 7
  %1330 = load ptr, ptr %10, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiWindow, ptr %1330, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1331, ptr align 4 %1329, i64 8, i1 false), !tbaa.struct !150
  br label %1332

1332:                                             ; preds = %1325, %1322, %1318, %1312
  br label %1333

1333:                                             ; preds = %1332, %1307
  %1334 = load i32, ptr %7, align 4, !tbaa !9
  %1335 = and i32 %1334, 16777216
  %1336 = icmp ne i32 %1335, 0
  br i1 %1336, label %1337, label %1378

1337:                                             ; preds = %1333
  %1338 = load ptr, ptr %17, align 8, !tbaa !5
  %1339 = icmp ne ptr %1338, null
  br i1 %1339, label %1340, label %1345

1340:                                             ; preds = %1337
  %1341 = load ptr, ptr %17, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.ImGuiWindow, ptr %1341, i32 0, i32 36
  %1343 = load i8, ptr %1342, align 2, !tbaa !167, !range !93, !noundef !94
  %1344 = trunc i8 %1343 to i1
  br label %1345

1345:                                             ; preds = %1340, %1337
  %1346 = phi i1 [ false, %1337 ], [ %1344, %1340 ]
  br i1 %1346, label %1347, label %1348

1347:                                             ; preds = %1345
  br label %1350

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

1349:                                             ; No predecessors!
  br label %1350

1350:                                             ; preds = %1349, %1347
  %1351 = load ptr, ptr %17, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.ImGuiWindow, ptr %1351, i32 0, i32 69
  %1353 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1352, i32 0, i32 26
  %1354 = getelementptr inbounds %struct.ImVector.2, ptr %1353, i32 0, i32 0
  %1355 = load i32, ptr %1354, align 8, !tbaa !215
  %1356 = trunc i32 %1355 to i16
  %1357 = load ptr, ptr %10, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.ImGuiWindow, ptr %1357, i32 0, i32 52
  store i16 %1356, ptr %1358, align 4, !tbaa !129
  %1359 = load ptr, ptr %17, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.ImGuiWindow, ptr %1359, i32 0, i32 69
  %1361 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1360, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1361, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1362 = load i32, ptr %7, align 4, !tbaa !9
  %1363 = and i32 %1362, 67108864
  %1364 = icmp ne i32 %1363, 0
  br i1 %1364, label %1377, label %1365

1365:                                             ; preds = %1350
  %1366 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1377, label %1368

1368:                                             ; preds = %1365
  %1369 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1370 = trunc i8 %1369 to i1
  br i1 %1370, label %1377, label %1371

1371:                                             ; preds = %1368
  %1372 = load ptr, ptr %17, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiWindow, ptr %1372, i32 0, i32 69
  %1374 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1373, i32 0, i32 0
  %1375 = load ptr, ptr %10, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiWindow, ptr %1375, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1376, ptr align 8 %1374, i64 8, i1 false), !tbaa.struct !150
  br label %1377

1377:                                             ; preds = %1371, %1368, %1365, %1350
  br label %1378

1378:                                             ; preds = %1377, %1333
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #12
  %1379 = load ptr, ptr %10, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.ImGuiWindow, ptr %1379, i32 0, i32 65
  %1381 = getelementptr inbounds %struct.ImVec2, ptr %1380, i32 0, i32 0
  %1382 = load float, ptr %1381, align 4, !tbaa !216
  %1383 = fcmp une float %1382, 0x47EFFFFFE0000000
  br i1 %1383, label %1384, label %1390

1384:                                             ; preds = %1378
  %1385 = load ptr, ptr %10, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImGuiWindow, ptr %1385, i32 0, i32 61
  %1387 = load i8, ptr %1386, align 1, !tbaa !166
  %1388 = sext i8 %1387 to i32
  %1389 = icmp eq i32 %1388, 0
  br label %1390

1390:                                             ; preds = %1384, %1378
  %1391 = phi i1 [ false, %1378 ], [ %1389, %1384 ]
  %1392 = zext i1 %1391 to i8
  store i8 %1392, ptr %42, align 1, !tbaa !97
  %1393 = load i8, ptr %42, align 1, !tbaa !97, !range !93, !noundef !94
  %1394 = trunc i8 %1393 to i1
  br i1 %1394, label %1395, label %1405

1395:                                             ; preds = %1390
  %1396 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %1397 = load ptr, ptr %10, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.ImGuiWindow, ptr %1397, i32 0, i32 65
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #12
  %1399 = load ptr, ptr %10, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiWindow, ptr %1399, i32 0, i32 8
  %1401 = load ptr, ptr %10, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.ImGuiWindow, ptr %1401, i32 0, i32 66
  %1403 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1400, ptr noundef nonnull align 4 dereferenceable(8) %1402)
  store <2 x float> %1403, ptr %44, align 4
  %1404 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1398, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1404, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1396, 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 %1447

1405:                                             ; preds = %1390
  %1406 = load i32, ptr %7, align 4, !tbaa !9
  %1407 = and i32 %1406, 268435456
  %1408 = icmp ne i32 %1407, 0
  br i1 %1408, label %1409, label %1414

1409:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  %1410 = load ptr, ptr %10, align 8, !tbaa !5
  %1411 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1410)
  store <2 x float> %1411, ptr %45, align 4
  %1412 = load ptr, ptr %10, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.ImGuiWindow, ptr %1412, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1413, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %1446

1414:                                             ; preds = %1405
  %1415 = load i32, ptr %7, align 4, !tbaa !9
  %1416 = and i32 %1415, 67108864
  %1417 = icmp ne i32 %1416, 0
  br i1 %1417, label %1418, label %1429

1418:                                             ; preds = %1414
  %1419 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1429, label %1421

1421:                                             ; preds = %1418
  %1422 = load i8, ptr %25, align 1, !tbaa !97, !range !93, !noundef !94
  %1423 = trunc i8 %1422 to i1
  br i1 %1423, label %1424, label %1429

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

1429:                                             ; preds = %1421, %1418, %1414
  %1430 = load i32, ptr %7, align 4, !tbaa !9
  %1431 = and i32 %1430, 33554432
  %1432 = icmp ne i32 %1431, 0
  br i1 %1432, label %1433, label %1444

1433:                                             ; preds = %1429
  %1434 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1435 = trunc i8 %1434 to i1
  br i1 %1435, label %1444, label %1436

1436:                                             ; preds = %1433
  %1437 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1438 = trunc i8 %1437 to i1
  br i1 %1438, label %1444, label %1439

1439:                                             ; preds = %1436
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %1440 = load ptr, ptr %10, align 8, !tbaa !5
  %1441 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1440)
  store <2 x float> %1441, ptr %47, align 4
  %1442 = load ptr, ptr %10, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.ImGuiWindow, ptr %1442, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1443, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1444

1444:                                             ; preds = %1439, %1436, %1433, %1429
  br label %1445

1445:                                             ; preds = %1444, %1424
  br label %1446

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

1447:                                             ; preds = %1446, %1395
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #12
  %1448 = load ptr, ptr %31, align 8, !tbaa !5
  %1449 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208) %1448)
  %1450 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1451 = extractvalue { <2 x float>, <2 x float> } %1449, 0
  store <2 x float> %1451, ptr %1450, align 4
  %1452 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1453 = extractvalue { <2 x float>, <2 x float> } %1449, 1
  store <2 x float> %1453, ptr %1452, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #12
  %1454 = load ptr, ptr %31, align 8, !tbaa !5
  %1455 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208) %1454)
  %1456 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 0
  %1457 = extractvalue { <2 x float>, <2 x float> } %1455, 0
  store <2 x float> %1457, ptr %1456, align 4
  %1458 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 1
  %1459 = extractvalue { <2 x float>, <2 x float> } %1455, 1
  store <2 x float> %1459, ptr %1458, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #12
  %1460 = load ptr, ptr %9, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.ImGuiStyle, ptr %1460, i32 0, i32 39
  %1462 = load ptr, ptr %9, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.ImGuiStyle, ptr %1462, i32 0, i32 40
  %1464 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1461, ptr noundef nonnull align 4 dereferenceable(8) %1463)
  store <2 x float> %1464, 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
  %1465 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 0
  %1466 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1465, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1466, ptr %52, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #12
  %1467 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 1
  %1468 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1467, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1468, 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
  %1469 = load i8, ptr %20, align 1, !tbaa !97, !range !93, !noundef !94
  %1470 = trunc i8 %1469 to i1
  br i1 %1470, label %1484, label %1471

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

1475:                                             ; preds = %1471
  %1476 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1477 = fcmp ogt float %1476, 0.000000e+00
  br i1 %1477, label %1478, label %1483

1478:                                             ; preds = %1475
  %1479 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1480 = fcmp ogt float %1479, 0.000000e+00
  br i1 %1480, label %1481, label %1483

1481:                                             ; preds = %1478
  %1482 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1482, ptr noundef nonnull align 4 dereferenceable(16) %51)
  br label %1483

1483:                                             ; preds = %1481, %1478, %1475
  br label %1484

1484:                                             ; preds = %1483, %1471, %1447
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #12
  %1485 = load ptr, ptr %10, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ImGuiWindow, ptr %1485, i32 0, i32 7
  %1487 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1486)
  store <2 x float> %1487, ptr %54, align 4
  %1488 = load ptr, ptr %10, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.ImGuiWindow, ptr %1488, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1489, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #12
  %1490 = load i32, ptr %7, align 4, !tbaa !9
  %1491 = and i32 %1490, 16777216
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1497

1493:                                             ; preds = %1484
  %1494 = load ptr, ptr %9, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiStyle, ptr %1494, i32 0, i32 8
  %1496 = load float, ptr %1495, align 4, !tbaa !217
  br label %1515

1497:                                             ; preds = %1484
  %1498 = load i32, ptr %7, align 4, !tbaa !9
  %1499 = and i32 %1498, 67108864
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1509

1501:                                             ; preds = %1497
  %1502 = load i32, ptr %7, align 4, !tbaa !9
  %1503 = and i32 %1502, 134217728
  %1504 = icmp ne i32 %1503, 0
  br i1 %1504, label %1509, label %1505

1505:                                             ; preds = %1501
  %1506 = load ptr, ptr %9, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiStyle, ptr %1506, i32 0, i32 10
  %1508 = load float, ptr %1507, align 4, !tbaa !218
  br label %1513

1509:                                             ; preds = %1501, %1497
  %1510 = load ptr, ptr %9, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct.ImGuiStyle, ptr %1510, i32 0, i32 3
  %1512 = load float, ptr %1511, align 4, !tbaa !219
  br label %1513

1513:                                             ; preds = %1509, %1505
  %1514 = phi float [ %1508, %1505 ], [ %1512, %1509 ]
  br label %1515

1515:                                             ; preds = %1513, %1493
  %1516 = phi float [ %1496, %1493 ], [ %1514, %1513 ]
  %1517 = load ptr, ptr %10, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.ImGuiWindow, ptr %1517, i32 0, i32 14
  store float %1516, ptr %1518, align 8, !tbaa !220
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #12
  store i8 0, ptr %55, align 1, !tbaa !97
  %1519 = load i8, ptr %14, align 1, !tbaa !97, !range !93, !noundef !94
  %1520 = trunc i8 %1519 to i1
  br i1 %1520, label %1521, label %1537

1521:                                             ; preds = %1515
  %1522 = load i32, ptr %7, align 4, !tbaa !9
  %1523 = and i32 %1522, 4096
  %1524 = icmp ne i32 %1523, 0
  br i1 %1524, label %1537, label %1525

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

1529:                                             ; preds = %1525
  store i8 1, ptr %55, align 1, !tbaa !97
  br label %1536

1530:                                             ; preds = %1525
  %1531 = load i32, ptr %7, align 4, !tbaa !9
  %1532 = and i32 %1531, 50331648
  %1533 = icmp eq i32 %1532, 0
  br i1 %1533, label %1534, label %1535

1534:                                             ; preds = %1530
  store i8 1, ptr %55, align 1, !tbaa !97
  br label %1535

1535:                                             ; preds = %1534, %1530
  br label %1536

1536:                                             ; preds = %1535, %1529
  br label %1537

1537:                                             ; preds = %1536, %1521, %1515
  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
  %1538 = load i32, ptr %7, align 4, !tbaa !9
  %1539 = and i32 %1538, 16777216
  %1540 = icmp ne i32 %1539, 0
  br i1 %1540, label %1541, label %1546

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

1545:                                             ; preds = %1541
  br label %1554

1546:                                             ; preds = %1541, %1537
  %1547 = load ptr, ptr %8, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.ImGuiContext, ptr %1547, i32 0, i32 3
  %1549 = getelementptr inbounds %struct.ImGuiIO, ptr %1548, i32 0, i32 21
  %1550 = load i8, ptr %1549, align 1, !tbaa !221, !range !93, !noundef !94
  %1551 = trunc i8 %1550 to i1
  %1552 = zext i1 %1551 to i64
  %1553 = select i1 %1551, i32 2, i32 1
  br label %1554

1554:                                             ; preds = %1546, %1545
  %1555 = phi i32 [ 0, %1545 ], [ %1553, %1546 ]
  store i32 %1555, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  %1556 = load ptr, ptr %8, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.ImGuiContext, ptr %1556, i32 0, i32 6
  %1558 = load float, ptr %1557, align 8, !tbaa !193
  %1559 = fmul float %1558, 0x3FF19999A0000000
  %1560 = load ptr, ptr %10, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.ImGuiWindow, ptr %1560, i32 0, i32 14
  %1562 = load float, ptr %1561, align 8, !tbaa !220
  %1563 = fadd float %1562, 1.000000e+00
  %1564 = load ptr, ptr %8, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.ImGuiContext, ptr %1564, i32 0, i32 6
  %1566 = load float, ptr %1565, align 8, !tbaa !193
  %1567 = call float @llvm.fmuladd.f32(float %1566, float 0x3FC99999A0000000, float %1563)
  %1568 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1559, float noundef %1567)
  %1569 = fptosi float %1568 to i32
  %1570 = sitofp i32 %1569 to float
  store float %1570, ptr %60, align 4, !tbaa !139
  %1571 = load ptr, ptr %10, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.ImGuiWindow, ptr %1571, i32 0, i32 39
  %1573 = load i8, ptr %1572, align 1, !tbaa !204, !range !93, !noundef !94
  %1574 = trunc i8 %1573 to i1
  br i1 %1574, label %1594, label %1575

1575:                                             ; preds = %1554
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #12
  %1576 = load ptr, ptr %10, align 8, !tbaa !5
  %1577 = load i32, ptr %59, align 4, !tbaa !9
  %1578 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %1579 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef %1576, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef %56, ptr noundef %57, i32 noundef %1577, ptr noundef %1578, ptr noundef nonnull align 4 dereferenceable(16) %51)
  store i32 %1579, ptr %61, align 4, !tbaa !9
  %1580 = load i32, ptr %61, align 4, !tbaa !9
  %1581 = icmp ne i32 %1580, 0
  br i1 %1581, label %1582, label %1593

1582:                                             ; preds = %1575
  %1583 = load i32, ptr %61, align 4, !tbaa !9
  %1584 = and i32 %1583, 1
  %1585 = icmp ne i32 %1584, 0
  br i1 %1585, label %1586, label %1587

1586:                                             ; preds = %1582
  store i8 1, ptr %33, align 1, !tbaa !97
  br label %1587

1587:                                             ; preds = %1586, %1582
  %1588 = load i32, ptr %61, align 4, !tbaa !9
  %1589 = and i32 %1588, 2
  %1590 = icmp ne i32 %1589, 0
  br i1 %1590, label %1591, label %1592

1591:                                             ; preds = %1587
  store i8 1, ptr %34, align 1, !tbaa !97
  br label %1592

1592:                                             ; preds = %1591, %1587
  br label %1593

1593:                                             ; preds = %1592, %1575
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #12
  br label %1594

1594:                                             ; preds = %1593, %1554
  %1595 = load i32, ptr %56, align 4, !tbaa !9
  %1596 = trunc i32 %1595 to i8
  %1597 = load ptr, ptr %10, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiWindow, ptr %1597, i32 0, i32 48
  store i8 %1596, ptr %1598, align 2, !tbaa !222
  %1599 = load i32, ptr %57, align 4, !tbaa !9
  %1600 = trunc i32 %1599 to i8
  %1601 = load ptr, ptr %10, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.ImGuiWindow, ptr %1601, i32 0, i32 49
  store i8 %1600, ptr %1602, align 1, !tbaa !223
  %1603 = load ptr, ptr %10, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.ImGuiWindow, ptr %1603, i32 0, i32 39
  %1605 = load i8, ptr %1604, align 1, !tbaa !204, !range !93, !noundef !94
  %1606 = trunc i8 %1605 to i1
  br i1 %1606, label %1783, label %1607

1607:                                             ; preds = %1594
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %1608 = load ptr, ptr %10, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.ImGuiWindow, ptr %1608, i32 0, i32 9
  %1610 = getelementptr inbounds %struct.ImVec2, ptr %1609, i32 0, i32 0
  %1611 = load float, ptr %1610, align 8, !tbaa !154
  %1612 = load ptr, ptr %10, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.ImGuiWindow, ptr %1612, i32 0, i32 9
  %1614 = getelementptr inbounds %struct.ImVec2, ptr %1613, i32 0, i32 1
  %1615 = load float, ptr %1614, align 4, !tbaa !155
  %1616 = load ptr, ptr %10, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.ImGuiWindow, ptr %1616, i32 0, i32 19
  %1618 = load float, ptr %1617, align 4, !tbaa !207
  %1619 = load ptr, ptr %10, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.ImGuiWindow, ptr %1619, i32 0, i32 21
  %1621 = load float, ptr %1620, align 4, !tbaa !208
  %1622 = fadd float %1618, %1621
  %1623 = fsub float %1615, %1622
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1611, float noundef %1623)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  %1624 = load ptr, ptr %10, align 8, !tbaa !5
  %1625 = getelementptr inbounds %struct.ImGuiWindow, ptr %1624, i32 0, i32 71
  %1626 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1625)
  store <2 x float> %1626, ptr %64, align 4
  %1627 = 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> %1627, 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
  %1628 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %1629 = trunc i8 %1628 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  br i1 %1629, label %1630, label %1631

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

1631:                                             ; preds = %1607
  %1632 = load ptr, ptr %10, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiWindow, ptr %1632, i32 0, i32 10
  %1634 = load ptr, ptr %10, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.ImGuiWindow, ptr %1634, i32 0, i32 13
  %1636 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1635, float noundef 2.000000e+00)
  store <2 x float> %1636, ptr %66, align 4
  %1637 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1633, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1637, ptr %65, align 4
  br label %1638

1638:                                             ; preds = %1631, %1630
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  %1639 = load i8, ptr %33, align 1, !tbaa !97, !range !93, !noundef !94
  %1640 = trunc i8 %1639 to i1
  br i1 %1640, label %1641, label %1644

1641:                                             ; preds = %1638
  %1642 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 0
  %1643 = load float, ptr %1642, align 4, !tbaa !209
  br label %1647

1644:                                             ; preds = %1638
  %1645 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 0
  %1646 = load float, ptr %1645, align 4, !tbaa !209
  br label %1647

1647:                                             ; preds = %1644, %1641
  %1648 = phi float [ %1643, %1641 ], [ %1646, %1644 ]
  store float %1648, ptr %67, align 4, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #12
  %1649 = load i8, ptr %34, align 1, !tbaa !97, !range !93, !noundef !94
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1651, label %1654

1651:                                             ; preds = %1647
  %1652 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 1
  %1653 = load float, ptr %1652, align 4, !tbaa !210
  br label %1657

1654:                                             ; preds = %1647
  %1655 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 1
  %1656 = load float, ptr %1655, align 4, !tbaa !210
  br label %1657

1657:                                             ; preds = %1654, %1651
  %1658 = phi float [ %1653, %1651 ], [ %1656, %1654 ]
  store float %1658, ptr %68, align 4, !tbaa !139
  %1659 = load i32, ptr %7, align 4, !tbaa !9
  %1660 = and i32 %1659, 16384
  %1661 = icmp ne i32 %1660, 0
  br i1 %1661, label %1674, label %1662

1662:                                             ; preds = %1657
  %1663 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1664 = load float, ptr %1663, align 4, !tbaa !210
  %1665 = load float, ptr %68, align 4, !tbaa !139
  %1666 = fcmp ogt float %1664, %1665
  br i1 %1666, label %1667, label %1672

1667:                                             ; preds = %1662
  %1668 = load i32, ptr %7, align 4, !tbaa !9
  %1669 = and i32 %1668, 8
  %1670 = icmp ne i32 %1669, 0
  %1671 = xor i1 %1670, true
  br label %1672

1672:                                             ; preds = %1667, %1662
  %1673 = phi i1 [ false, %1662 ], [ %1671, %1667 ]
  br label %1674

1674:                                             ; preds = %1672, %1657
  %1675 = phi i1 [ true, %1657 ], [ %1673, %1672 ]
  %1676 = load ptr, ptr %10, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.ImGuiWindow, ptr %1676, i32 0, i32 35
  %1678 = zext i1 %1675 to i8
  store i8 %1678, ptr %1677, align 1, !tbaa !224
  %1679 = load i32, ptr %7, align 4, !tbaa !9
  %1680 = and i32 %1679, 32768
  %1681 = icmp ne i32 %1680, 0
  br i1 %1681, label %1709, label %1682

1682:                                             ; preds = %1674
  %1683 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 0
  %1684 = load float, ptr %1683, align 4, !tbaa !209
  %1685 = load float, ptr %67, align 4, !tbaa !139
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.ImGuiWindow, ptr %1686, i32 0, i32 35
  %1688 = load i8, ptr %1687, align 1, !tbaa !224, !range !93, !noundef !94
  %1689 = trunc i8 %1688 to i1
  br i1 %1689, label %1690, label %1694

1690:                                             ; preds = %1682
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiStyle, ptr %1691, i32 0, i32 21
  %1693 = load float, ptr %1692, align 4, !tbaa !225
  br label %1695

1694:                                             ; preds = %1682
  br label %1695

1695:                                             ; preds = %1694, %1690
  %1696 = phi float [ %1693, %1690 ], [ 0.000000e+00, %1694 ]
  %1697 = fsub float %1685, %1696
  %1698 = fcmp ogt float %1684, %1697
  br i1 %1698, label %1699, label %1707

1699:                                             ; preds = %1695
  %1700 = load i32, ptr %7, align 4, !tbaa !9
  %1701 = and i32 %1700, 8
  %1702 = icmp ne i32 %1701, 0
  br i1 %1702, label %1707, label %1703

1703:                                             ; preds = %1699
  %1704 = load i32, ptr %7, align 4, !tbaa !9
  %1705 = and i32 %1704, 2048
  %1706 = icmp ne i32 %1705, 0
  br label %1707

1707:                                             ; preds = %1703, %1699, %1695
  %1708 = phi i1 [ false, %1699 ], [ false, %1695 ], [ %1706, %1703 ]
  br label %1709

1709:                                             ; preds = %1707, %1674
  %1710 = phi i1 [ true, %1674 ], [ %1708, %1707 ]
  %1711 = load ptr, ptr %10, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.ImGuiWindow, ptr %1711, i32 0, i32 34
  %1713 = zext i1 %1710 to i8
  store i8 %1713, ptr %1712, align 8, !tbaa !226
  %1714 = load ptr, ptr %10, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.ImGuiWindow, ptr %1714, i32 0, i32 34
  %1716 = load i8, ptr %1715, align 8, !tbaa !226, !range !93, !noundef !94
  %1717 = trunc i8 %1716 to i1
  br i1 %1717, label %1718, label %1742

1718:                                             ; preds = %1709
  %1719 = load ptr, ptr %10, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.ImGuiWindow, ptr %1719, i32 0, i32 35
  %1721 = load i8, ptr %1720, align 1, !tbaa !224, !range !93, !noundef !94
  %1722 = trunc i8 %1721 to i1
  br i1 %1722, label %1742, label %1723

1723:                                             ; preds = %1718
  %1724 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1725 = load float, ptr %1724, align 4, !tbaa !210
  %1726 = load float, ptr %68, align 4, !tbaa !139
  %1727 = load ptr, ptr %9, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.ImGuiStyle, ptr %1727, i32 0, i32 21
  %1729 = load float, ptr %1728, align 4, !tbaa !225
  %1730 = fsub float %1726, %1729
  %1731 = fcmp ogt float %1725, %1730
  br i1 %1731, label %1732, label %1737

1732:                                             ; preds = %1723
  %1733 = load i32, ptr %7, align 4, !tbaa !9
  %1734 = and i32 %1733, 8
  %1735 = icmp ne i32 %1734, 0
  %1736 = xor i1 %1735, true
  br label %1737

1737:                                             ; preds = %1732, %1723
  %1738 = phi i1 [ false, %1723 ], [ %1736, %1732 ]
  %1739 = load ptr, ptr %10, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.ImGuiWindow, ptr %1739, i32 0, i32 35
  %1741 = zext i1 %1738 to i8
  store i8 %1741, ptr %1740, align 1, !tbaa !224
  br label %1742

1742:                                             ; preds = %1737, %1718, %1709
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #12
  %1743 = load ptr, ptr %10, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiWindow, ptr %1743, i32 0, i32 35
  %1745 = load i8, ptr %1744, align 1, !tbaa !224, !range !93, !noundef !94
  %1746 = trunc i8 %1745 to i1
  br i1 %1746, label %1747, label %1751

1747:                                             ; preds = %1742
  %1748 = load ptr, ptr %9, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.ImGuiStyle, ptr %1748, i32 0, i32 21
  %1750 = load float, ptr %1749, align 4, !tbaa !225
  br label %1752

1751:                                             ; preds = %1742
  br label %1752

1752:                                             ; preds = %1751, %1747
  %1753 = phi float [ %1750, %1747 ], [ 0.000000e+00, %1751 ]
  %1754 = load ptr, ptr %10, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ImGuiWindow, ptr %1754, i32 0, i32 34
  %1756 = load i8, ptr %1755, align 8, !tbaa !226, !range !93, !noundef !94
  %1757 = trunc i8 %1756 to i1
  br i1 %1757, label %1758, label %1762

1758:                                             ; preds = %1752
  %1759 = load ptr, ptr %9, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.ImGuiStyle, ptr %1759, i32 0, i32 21
  %1761 = load float, ptr %1760, align 4, !tbaa !225
  br label %1763

1762:                                             ; preds = %1752
  br label %1763

1763:                                             ; preds = %1762, %1758
  %1764 = phi float [ %1761, %1758 ], [ 0.000000e+00, %1762 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %69, float noundef %1753, float noundef %1764)
  %1765 = load ptr, ptr %10, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.ImGuiWindow, ptr %1765, i32 0, i32 33
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1766, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #12
  %1767 = load ptr, ptr %10, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.ImGuiWindow, ptr %1767, i32 0, i32 33
  %1769 = getelementptr inbounds %struct.ImVec2, ptr %1768, i32 0, i32 0
  %1770 = load float, ptr %1769, align 8, !tbaa !227
  %1771 = load ptr, ptr %10, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ImGuiWindow, ptr %1771, i32 0, i32 20
  %1773 = load float, ptr %1772, align 8, !tbaa !206
  %1774 = fadd float %1773, %1770
  store float %1774, ptr %1772, align 8, !tbaa !206
  %1775 = load ptr, ptr %10, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.ImGuiWindow, ptr %1775, i32 0, i32 33
  %1777 = getelementptr inbounds %struct.ImVec2, ptr %1776, i32 0, i32 1
  %1778 = load float, ptr %1777, align 4, !tbaa !228
  %1779 = load ptr, ptr %10, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.ImGuiWindow, ptr %1779, i32 0, i32 21
  %1781 = load float, ptr %1780, align 4, !tbaa !208
  %1782 = fadd float %1781, %1778
  store float %1782, ptr %1780, align 4, !tbaa !208
  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 %1783

1783:                                             ; preds = %1763, %1594
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #12
  %1784 = load i32, ptr %7, align 4, !tbaa !9
  %1785 = and i32 %1784, 16777216
  %1786 = icmp ne i32 %1785, 0
  br i1 %1786, label %1787, label %1797

1787:                                             ; preds = %1783
  %1788 = load i32, ptr %7, align 4, !tbaa !9
  %1789 = and i32 %1788, 67108864
  %1790 = icmp ne i32 %1789, 0
  br i1 %1790, label %1797, label %1791

1791:                                             ; preds = %1787
  %1792 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %1793 = trunc i8 %1792 to i1
  br i1 %1793, label %1797, label %1794

1794:                                             ; preds = %1791
  %1795 = load ptr, ptr %17, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.ImGuiWindow, ptr %1795, i32 0, i32 75
  br label %1798

1797:                                             ; preds = %1791, %1787, %1783
  br label %1798

1798:                                             ; preds = %1797, %1794
  %1799 = phi ptr [ %1796, %1794 ], [ %48, %1797 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %1799, i64 16, i1 false), !tbaa.struct !169
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #12
  %1800 = load ptr, ptr %10, align 8, !tbaa !5
  %1801 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1800)
  %1802 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1803 = extractvalue { <2 x float>, <2 x float> } %1801, 0
  store <2 x float> %1803, ptr %1802, align 4
  %1804 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1805 = extractvalue { <2 x float>, <2 x float> } %1801, 1
  store <2 x float> %1805, ptr %1804, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #12
  %1806 = load ptr, ptr %10, align 8, !tbaa !5
  %1807 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1806)
  %1808 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 0
  %1809 = extractvalue { <2 x float>, <2 x float> } %1807, 0
  store <2 x float> %1809, ptr %1808, align 4
  %1810 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 1
  %1811 = extractvalue { <2 x float>, <2 x float> } %1807, 1
  store <2 x float> %1811, ptr %1810, align 4
  %1812 = load ptr, ptr %10, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.ImGuiWindow, ptr %1812, i32 0, i32 70
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1813, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !169
  %1814 = load ptr, ptr %10, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.ImGuiWindow, ptr %1814, i32 0, i32 70
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1815, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1816 = load ptr, ptr %10, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiWindow, ptr %1816, i32 0, i32 7
  %1818 = getelementptr inbounds %struct.ImVec2, ptr %1817, i32 0, i32 0
  %1819 = load float, ptr %1818, align 8, !tbaa !229
  %1820 = load ptr, ptr %10, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.ImGuiWindow, ptr %1820, i32 0, i32 18
  %1822 = load float, ptr %1821, align 8, !tbaa !205
  %1823 = fadd float %1819, %1822
  %1824 = load ptr, ptr %10, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiWindow, ptr %1824, i32 0, i32 71
  %1826 = getelementptr inbounds %struct.ImRect, ptr %1825, i32 0, i32 0
  %1827 = getelementptr inbounds %struct.ImVec2, ptr %1826, i32 0, i32 0
  store float %1823, ptr %1827, align 8, !tbaa !230
  %1828 = load ptr, ptr %10, align 8, !tbaa !5
  %1829 = getelementptr inbounds %struct.ImGuiWindow, ptr %1828, i32 0, i32 7
  %1830 = getelementptr inbounds %struct.ImVec2, ptr %1829, i32 0, i32 1
  %1831 = load float, ptr %1830, align 4, !tbaa !231
  %1832 = load ptr, ptr %10, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.ImGuiWindow, ptr %1832, i32 0, i32 19
  %1834 = load float, ptr %1833, align 4, !tbaa !207
  %1835 = fadd float %1831, %1834
  %1836 = load ptr, ptr %10, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.ImGuiWindow, ptr %1836, i32 0, i32 71
  %1838 = getelementptr inbounds %struct.ImRect, ptr %1837, i32 0, i32 0
  %1839 = getelementptr inbounds %struct.ImVec2, ptr %1838, i32 0, i32 1
  store float %1835, ptr %1839, align 4, !tbaa !232
  %1840 = load ptr, ptr %10, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.ImGuiWindow, ptr %1840, i32 0, i32 7
  %1842 = getelementptr inbounds %struct.ImVec2, ptr %1841, i32 0, i32 0
  %1843 = load float, ptr %1842, align 8, !tbaa !229
  %1844 = load ptr, ptr %10, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct.ImGuiWindow, ptr %1844, i32 0, i32 8
  %1846 = getelementptr inbounds %struct.ImVec2, ptr %1845, i32 0, i32 0
  %1847 = load float, ptr %1846, align 8, !tbaa !180
  %1848 = fadd float %1843, %1847
  %1849 = load ptr, ptr %10, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiWindow, ptr %1849, i32 0, i32 20
  %1851 = load float, ptr %1850, align 8, !tbaa !206
  %1852 = fsub float %1848, %1851
  %1853 = load ptr, ptr %10, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.ImGuiWindow, ptr %1853, i32 0, i32 71
  %1855 = getelementptr inbounds %struct.ImRect, ptr %1854, i32 0, i32 1
  %1856 = getelementptr inbounds %struct.ImVec2, ptr %1855, i32 0, i32 0
  store float %1852, ptr %1856, align 8, !tbaa !233
  %1857 = load ptr, ptr %10, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiWindow, ptr %1857, i32 0, i32 7
  %1859 = getelementptr inbounds %struct.ImVec2, ptr %1858, i32 0, i32 1
  %1860 = load float, ptr %1859, align 4, !tbaa !231
  %1861 = load ptr, ptr %10, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.ImGuiWindow, ptr %1861, i32 0, i32 8
  %1863 = getelementptr inbounds %struct.ImVec2, ptr %1862, i32 0, i32 1
  %1864 = load float, ptr %1863, align 4, !tbaa !181
  %1865 = fadd float %1860, %1864
  %1866 = load ptr, ptr %10, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.ImGuiWindow, ptr %1866, i32 0, i32 21
  %1868 = load float, ptr %1867, align 4, !tbaa !208
  %1869 = fsub float %1865, %1868
  %1870 = load ptr, ptr %10, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.ImGuiWindow, ptr %1870, i32 0, i32 71
  %1872 = getelementptr inbounds %struct.ImRect, ptr %1871, i32 0, i32 1
  %1873 = getelementptr inbounds %struct.ImVec2, ptr %1872, i32 0, i32 1
  store float %1869, ptr %1873, align 4, !tbaa !234
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  %1874 = load i32, ptr %7, align 4, !tbaa !9
  %1875 = and i32 %1874, 1024
  %1876 = icmp ne i32 %1875, 0
  br i1 %1876, label %1881, label %1877

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

1881:                                             ; preds = %1877, %1798
  %1882 = load ptr, ptr %9, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.ImGuiStyle, ptr %1882, i32 0, i32 14
  %1884 = load float, ptr %1883, align 4, !tbaa !235
  br label %1889

1885:                                             ; preds = %1877
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.ImGuiWindow, ptr %1886, i32 0, i32 15
  %1888 = load float, ptr %1887, align 4, !tbaa !183
  br label %1889

1889:                                             ; preds = %1885, %1881
  %1890 = phi float [ %1884, %1881 ], [ %1888, %1885 ]
  store float %1890, ptr %73, align 4, !tbaa !139
  %1891 = load ptr, ptr %10, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.ImGuiWindow, ptr %1891, i32 0, i32 71
  %1893 = getelementptr inbounds %struct.ImRect, ptr %1892, i32 0, i32 0
  %1894 = getelementptr inbounds %struct.ImVec2, ptr %1893, i32 0, i32 0
  %1895 = load float, ptr %1894, align 8, !tbaa !230
  %1896 = fadd float 5.000000e-01, %1895
  %1897 = load ptr, ptr %10, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiWindow, ptr %1897, i32 0, i32 15
  %1899 = load float, ptr %1898, align 4, !tbaa !183
  %1900 = fadd float %1896, %1899
  %1901 = call noundef float @_ZL7ImFloorf(float noundef %1900)
  %1902 = load ptr, ptr %10, align 8, !tbaa !5
  %1903 = getelementptr inbounds %struct.ImGuiWindow, ptr %1902, i32 0, i32 72
  %1904 = getelementptr inbounds %struct.ImRect, ptr %1903, i32 0, i32 0
  %1905 = getelementptr inbounds %struct.ImVec2, ptr %1904, i32 0, i32 0
  store float %1901, ptr %1905, align 8, !tbaa !236
  %1906 = load ptr, ptr %10, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.ImGuiWindow, ptr %1906, i32 0, i32 71
  %1908 = getelementptr inbounds %struct.ImRect, ptr %1907, i32 0, i32 0
  %1909 = getelementptr inbounds %struct.ImVec2, ptr %1908, i32 0, i32 1
  %1910 = load float, ptr %1909, align 4, !tbaa !232
  %1911 = fadd float 5.000000e-01, %1910
  %1912 = load float, ptr %73, align 4, !tbaa !139
  %1913 = fadd float %1911, %1912
  %1914 = call noundef float @_ZL7ImFloorf(float noundef %1913)
  %1915 = load ptr, ptr %10, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.ImGuiWindow, ptr %1915, i32 0, i32 72
  %1917 = getelementptr inbounds %struct.ImRect, ptr %1916, i32 0, i32 0
  %1918 = getelementptr inbounds %struct.ImVec2, ptr %1917, i32 0, i32 1
  store float %1914, ptr %1918, align 4, !tbaa !237
  %1919 = load ptr, ptr %10, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.ImGuiWindow, ptr %1919, i32 0, i32 71
  %1921 = getelementptr inbounds %struct.ImRect, ptr %1920, i32 0, i32 1
  %1922 = getelementptr inbounds %struct.ImVec2, ptr %1921, i32 0, i32 0
  %1923 = load float, ptr %1922, align 8, !tbaa !233
  %1924 = fadd float 5.000000e-01, %1923
  %1925 = load ptr, ptr %10, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.ImGuiWindow, ptr %1925, i32 0, i32 15
  %1927 = load float, ptr %1926, align 4, !tbaa !183
  %1928 = fsub float %1924, %1927
  %1929 = call noundef float @_ZL7ImFloorf(float noundef %1928)
  %1930 = load ptr, ptr %10, align 8, !tbaa !5
  %1931 = getelementptr inbounds %struct.ImGuiWindow, ptr %1930, i32 0, i32 72
  %1932 = getelementptr inbounds %struct.ImRect, ptr %1931, i32 0, i32 1
  %1933 = getelementptr inbounds %struct.ImVec2, ptr %1932, i32 0, i32 0
  store float %1929, ptr %1933, align 8, !tbaa !238
  %1934 = load ptr, ptr %10, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.ImGuiWindow, ptr %1934, i32 0, i32 71
  %1936 = getelementptr inbounds %struct.ImRect, ptr %1935, i32 0, i32 1
  %1937 = getelementptr inbounds %struct.ImVec2, ptr %1936, i32 0, i32 1
  %1938 = load float, ptr %1937, align 4, !tbaa !234
  %1939 = fadd float 5.000000e-01, %1938
  %1940 = load ptr, ptr %10, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.ImGuiWindow, ptr %1940, i32 0, i32 15
  %1942 = load float, ptr %1941, align 4, !tbaa !183
  %1943 = fsub float %1939, %1942
  %1944 = call noundef float @_ZL7ImFloorf(float noundef %1943)
  %1945 = load ptr, ptr %10, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiWindow, ptr %1945, i32 0, i32 72
  %1947 = getelementptr inbounds %struct.ImRect, ptr %1946, i32 0, i32 1
  %1948 = getelementptr inbounds %struct.ImVec2, ptr %1947, i32 0, i32 1
  store float %1944, ptr %1948, align 4, !tbaa !239
  %1949 = load ptr, ptr %10, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.ImGuiWindow, ptr %1949, i32 0, i32 72
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1950, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1951 = load ptr, ptr %10, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ImGuiWindow, ptr %1951, i32 0, i32 8
  %1953 = getelementptr inbounds %struct.ImVec2, ptr %1952, i32 0, i32 0
  %1954 = load float, ptr %1953, align 8, !tbaa !180
  %1955 = fcmp ogt float %1954, 0.000000e+00
  br i1 %1955, label %1956, label %1973

1956:                                             ; preds = %1889
  %1957 = load i32, ptr %7, align 4, !tbaa !9
  %1958 = and i32 %1957, 33554432
  %1959 = icmp ne i32 %1958, 0
  br i1 %1959, label %1973, label %1960

1960:                                             ; preds = %1956
  %1961 = load i32, ptr %7, align 4, !tbaa !9
  %1962 = and i32 %1961, 64
  %1963 = icmp ne i32 %1962, 0
  br i1 %1963, label %1973, label %1964

1964:                                             ; preds = %1960
  %1965 = load ptr, ptr %10, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.ImGuiWindow, ptr %1965, i32 0, i32 8
  %1967 = getelementptr inbounds %struct.ImVec2, ptr %1966, i32 0, i32 0
  %1968 = load float, ptr %1967, align 8, !tbaa !180
  %1969 = fmul float %1968, 0x3FE4CCCCC0000000
  %1970 = call noundef float @_ZL7ImTruncf(float noundef %1969)
  %1971 = load ptr, ptr %10, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.ImGuiWindow, ptr %1971, i32 0, i32 81
  store float %1970, ptr %1972, align 8, !tbaa !240
  br label %1981

1973:                                             ; preds = %1960, %1956, %1889
  %1974 = load ptr, ptr %8, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.ImGuiContext, ptr %1974, i32 0, i32 6
  %1976 = load float, ptr %1975, align 8, !tbaa !193
  %1977 = fmul float %1976, 1.600000e+01
  %1978 = call noundef float @_ZL7ImTruncf(float noundef %1977)
  %1979 = load ptr, ptr %10, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.ImGuiWindow, ptr %1979, i32 0, i32 81
  store float %1978, ptr %1980, align 8, !tbaa !240
  br label %1981

1981:                                             ; preds = %1973, %1964
  %1982 = load ptr, ptr %10, align 8, !tbaa !5
  %1983 = getelementptr inbounds %struct.ImGuiWindow, ptr %1982, i32 0, i32 10
  %1984 = getelementptr inbounds %struct.ImVec2, ptr %1983, i32 0, i32 0
  %1985 = load float, ptr %1984, align 8, !tbaa !241
  %1986 = load ptr, ptr %10, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiWindow, ptr %1986, i32 0, i32 13
  %1988 = getelementptr inbounds %struct.ImVec2, ptr %1987, i32 0, i32 0
  %1989 = load float, ptr %1988, align 8, !tbaa !187
  %1990 = call float @llvm.fmuladd.f32(float %1989, float 2.000000e+00, float %1985)
  %1991 = load ptr, ptr %10, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.ImGuiWindow, ptr %1991, i32 0, i32 71
  %1993 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1992)
  %1994 = fsub float %1990, %1993
  %1995 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1994)
  %1996 = load ptr, ptr %10, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.ImGuiWindow, ptr %1996, i32 0, i32 29
  %1998 = getelementptr inbounds %struct.ImVec2, ptr %1997, i32 0, i32 0
  store float %1995, ptr %1998, align 8, !tbaa !242
  %1999 = load ptr, ptr %10, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.ImGuiWindow, ptr %1999, i32 0, i32 10
  %2001 = getelementptr inbounds %struct.ImVec2, ptr %2000, i32 0, i32 1
  %2002 = load float, ptr %2001, align 4, !tbaa !243
  %2003 = load ptr, ptr %10, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiWindow, ptr %2003, i32 0, i32 13
  %2005 = getelementptr inbounds %struct.ImVec2, ptr %2004, i32 0, i32 1
  %2006 = load float, ptr %2005, align 4, !tbaa !244
  %2007 = call float @llvm.fmuladd.f32(float %2006, float 2.000000e+00, float %2002)
  %2008 = load ptr, ptr %10, align 8, !tbaa !5
  %2009 = getelementptr inbounds %struct.ImGuiWindow, ptr %2008, i32 0, i32 71
  %2010 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %2009)
  %2011 = fsub float %2007, %2010
  %2012 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2011)
  %2013 = load ptr, ptr %10, align 8, !tbaa !5
  %2014 = getelementptr inbounds %struct.ImGuiWindow, ptr %2013, i32 0, i32 29
  %2015 = getelementptr inbounds %struct.ImVec2, ptr %2014, i32 0, i32 1
  store float %2012, ptr %2015, align 4, !tbaa !245
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #12
  %2016 = load ptr, ptr %10, align 8, !tbaa !5
  %2017 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %2016)
  store <2 x float> %2017, ptr %74, align 4
  %2018 = load ptr, ptr %10, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.ImGuiWindow, ptr %2018, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2019, ptr align 4 %74, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %2020 = load ptr, ptr %10, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiWindow, ptr %2020, i32 0, i32 30
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2021, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !150
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  %2022 = load ptr, ptr %10, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiWindow, ptr %2022, i32 0, i32 23
  store float 0.000000e+00, ptr %2023, align 4, !tbaa !246
  %2024 = load ptr, ptr %10, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.ImGuiWindow, ptr %2024, i32 0, i32 22
  store float 0.000000e+00, ptr %2025, align 8, !tbaa !247
  %2026 = load ptr, ptr %10, align 8, !tbaa !5
  %2027 = getelementptr inbounds %struct.ImGuiWindow, ptr %2026, i32 0, i32 87
  %2028 = load ptr, ptr %2027, align 8, !tbaa !170
  %2029 = getelementptr inbounds %struct.ImDrawList, ptr %2028, i32 0, i32 0
  %2030 = getelementptr inbounds %struct.ImVector.38, ptr %2029, i32 0, i32 0
  %2031 = load i32, ptr %2030, align 8, !tbaa !248
  %2032 = icmp eq i32 %2031, 1
  br i1 %2032, label %2033, label %2042

2033:                                             ; preds = %1981
  %2034 = load ptr, ptr %10, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.ImGuiWindow, ptr %2034, i32 0, i32 87
  %2036 = load ptr, ptr %2035, align 8, !tbaa !170
  %2037 = getelementptr inbounds %struct.ImDrawList, ptr %2036, i32 0, i32 0
  %2038 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2037, i32 noundef 0)
  %2039 = getelementptr inbounds %struct.ImDrawCmd, ptr %2038, i32 0, i32 4
  %2040 = load i32, ptr %2039, align 8, !tbaa !249
  %2041 = icmp eq i32 %2040, 0
  br label %2042

2042:                                             ; preds = %2033, %1981
  %2043 = phi i1 [ false, %1981 ], [ %2041, %2033 ]
  br i1 %2043, label %2044, label %2045

2044:                                             ; preds = %2042
  br label %2047

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

2046:                                             ; No predecessors!
  br label %2047

2047:                                             ; preds = %2046, %2044
  %2048 = load ptr, ptr %10, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.ImGuiWindow, ptr %2048, i32 0, i32 87
  %2050 = load ptr, ptr %2049, align 8, !tbaa !170
  %2051 = load ptr, ptr %8, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiContext, ptr %2051, i32 0, i32 5
  %2053 = load ptr, ptr %2052, align 8, !tbaa !251
  %2054 = getelementptr inbounds %struct.ImFont, ptr %2053, i32 0, i32 6
  %2055 = load ptr, ptr %2054, align 8, !tbaa !252
  %2056 = getelementptr inbounds %struct.ImFontAtlas, ptr %2055, i32 0, i32 2
  %2057 = load ptr, ptr %2056, align 8, !tbaa !253
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(200) %2050, ptr noundef %2057)
  %2058 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 0
  %2059 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2058, ptr noundef nonnull align 4 dereferenceable(8) %2059, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #12
  store i8 0, ptr %76, align 1, !tbaa !97
  %2060 = load i32, ptr %7, align 4, !tbaa !9
  %2061 = and i32 %2060, 16777216
  %2062 = icmp ne i32 %2061, 0
  br i1 %2062, label %2063, label %2136

2063:                                             ; preds = %2047
  %2064 = load i32, ptr %7, align 4, !tbaa !9
  %2065 = and i32 %2064, 67108864
  %2066 = icmp ne i32 %2065, 0
  br i1 %2066, label %2136, label %2067

2067:                                             ; preds = %2063
  %2068 = load i8, ptr %24, align 1, !tbaa !97, !range !93, !noundef !94
  %2069 = trunc i8 %2068 to i1
  br i1 %2069, label %2136, label %2070

2070:                                             ; preds = %2067
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  %2071 = load ptr, ptr %17, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.ImGuiWindow, ptr %2071, i32 0, i32 69
  %2073 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2072, i32 0, i32 26
  %2074 = getelementptr inbounds %struct.ImVector.2, ptr %2073, i32 0, i32 0
  %2075 = load i32, ptr %2074, align 8, !tbaa !215
  %2076 = icmp sge i32 %2075, 2
  br i1 %2076, label %2077, label %2089

2077:                                             ; preds = %2070
  %2078 = load ptr, ptr %17, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.ImGuiWindow, ptr %2078, i32 0, i32 69
  %2080 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2079, i32 0, i32 26
  %2081 = load ptr, ptr %17, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.ImGuiWindow, ptr %2081, i32 0, i32 69
  %2083 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2082, i32 0, i32 26
  %2084 = getelementptr inbounds %struct.ImVector.2, ptr %2083, i32 0, i32 0
  %2085 = load i32, ptr %2084, align 8, !tbaa !215
  %2086 = sub nsw i32 %2085, 2
  %2087 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %2080, i32 noundef %2086)
  %2088 = load ptr, ptr %2087, align 8, !tbaa !5
  br label %2090

2089:                                             ; preds = %2070
  br label %2090

2090:                                             ; preds = %2089, %2077
  %2091 = phi ptr [ %2088, %2077 ], [ null, %2089 ]
  store ptr %2091, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #12
  %2092 = load ptr, ptr %77, align 8, !tbaa !5
  %2093 = icmp ne ptr %2092, 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 %2093, label %2094, label %2108

2094:                                             ; preds = %2090
  %2095 = load ptr, ptr %77, align 8, !tbaa !5
  %2096 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %2095)
  %2097 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %2098 = extractvalue { <2 x float>, <2 x float> } %2096, 0
  store <2 x float> %2098, ptr %2097, align 4
  %2099 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %2100 = extractvalue { <2 x float>, <2 x float> } %2096, 1
  store <2 x float> %2100, ptr %2099, align 4
  %2101 = load ptr, ptr %10, align 8, !tbaa !5
  %2102 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %2101)
  %2103 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 0
  %2104 = extractvalue { <2 x float>, <2 x float> } %2102, 0
  store <2 x float> %2104, ptr %2103, align 4
  %2105 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 1
  %2106 = extractvalue { <2 x float>, <2 x float> } %2102, 1
  store <2 x float> %2106, ptr %2105, align 4
  %2107 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull align 4 dereferenceable(16) %80)
  br label %2109

2108:                                             ; preds = %2090
  br label %2109

2109:                                             ; preds = %2108, %2094
  %2110 = phi i1 [ %2107, %2094 ], [ false, %2108 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #12
  %2111 = zext i1 %2110 to i8
  store i8 %2111, ptr %78, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #12
  %2112 = load ptr, ptr %17, align 8, !tbaa !5
  %2113 = getelementptr inbounds %struct.ImGuiWindow, ptr %2112, i32 0, i32 87
  %2114 = load ptr, ptr %2113, align 8, !tbaa !170
  %2115 = getelementptr inbounds %struct.ImDrawList, ptr %2114, i32 0, i32 2
  %2116 = getelementptr inbounds %struct.ImVector.39, ptr %2115, i32 0, i32 0
  %2117 = load i32, ptr %2116, align 8, !tbaa !257
  %2118 = icmp eq i32 %2117, 0
  %2119 = zext i1 %2118 to i8
  store i8 %2119, ptr %81, align 1, !tbaa !97
  %2120 = load ptr, ptr %10, align 8, !tbaa !5
  %2121 = getelementptr inbounds %struct.ImGuiWindow, ptr %2120, i32 0, i32 87
  %2122 = load ptr, ptr %2121, align 8, !tbaa !170
  %2123 = getelementptr inbounds %struct.ImDrawList, ptr %2122, i32 0, i32 0
  %2124 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %2123)
  %2125 = getelementptr inbounds %struct.ImDrawCmd, ptr %2124, i32 0, i32 4
  %2126 = load i32, ptr %2125, align 8, !tbaa !249
  %2127 = icmp eq i32 %2126, 0
  br i1 %2127, label %2128, label %2135

2128:                                             ; preds = %2109
  %2129 = load i8, ptr %81, align 1, !tbaa !97, !range !93, !noundef !94
  %2130 = trunc i8 %2129 to i1
  br i1 %2130, label %2135, label %2131

2131:                                             ; preds = %2128
  %2132 = load i8, ptr %78, align 1, !tbaa !97, !range !93, !noundef !94
  %2133 = trunc i8 %2132 to i1
  br i1 %2133, label %2135, label %2134

2134:                                             ; preds = %2131
  store i8 1, ptr %76, align 1, !tbaa !97
  br label %2135

2135:                                             ; preds = %2134, %2131, %2128, %2109
  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 %2136

2136:                                             ; preds = %2135, %2067, %2063, %2047
  %2137 = load i8, ptr %76, align 1, !tbaa !97, !range !93, !noundef !94
  %2138 = trunc i8 %2137 to i1
  br i1 %2138, label %2139, label %2145

2139:                                             ; preds = %2136
  %2140 = load ptr, ptr %17, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ImGuiWindow, ptr %2140, i32 0, i32 87
  %2142 = load ptr, ptr %2141, align 8, !tbaa !170
  %2143 = load ptr, ptr %10, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiWindow, ptr %2143, i32 0, i32 87
  store ptr %2142, ptr %2144, align 8, !tbaa !170
  br label %2145

2145:                                             ; preds = %2139, %2136
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #12
  %2146 = load ptr, ptr %8, align 8, !tbaa !5
  %2147 = getelementptr inbounds %struct.ImGuiContext, ptr %2146, i32 0, i32 150
  %2148 = load ptr, ptr %2147, align 8, !tbaa !258
  %2149 = icmp ne ptr %2148, null
  br i1 %2149, label %2150, label %2154

2150:                                             ; preds = %2145
  %2151 = load ptr, ptr %8, align 8, !tbaa !5
  %2152 = getelementptr inbounds %struct.ImGuiContext, ptr %2151, i32 0, i32 150
  %2153 = load ptr, ptr %2152, align 8, !tbaa !258
  br label %2158

2154:                                             ; preds = %2145
  %2155 = load ptr, ptr %8, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiContext, ptr %2155, i32 0, i32 101
  %2157 = load ptr, ptr %2156, align 8, !tbaa !259
  br label %2158

2158:                                             ; preds = %2154, %2150
  %2159 = phi ptr [ %2153, %2150 ], [ %2157, %2154 ]
  store ptr %2159, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #12
  %2160 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2161 = trunc i8 %2160 to i1
  br i1 %2161, label %2175, label %2162

2162:                                             ; preds = %2158
  %2163 = load ptr, ptr %82, align 8, !tbaa !5
  %2164 = icmp ne ptr %2163, null
  br i1 %2164, label %2165, label %2173

2165:                                             ; preds = %2162
  %2166 = load ptr, ptr %10, align 8, !tbaa !5
  %2167 = getelementptr inbounds %struct.ImGuiWindow, ptr %2166, i32 0, i32 93
  %2168 = load ptr, ptr %2167, align 8, !tbaa !260
  %2169 = load ptr, ptr %82, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 93
  %2171 = load ptr, ptr %2170, align 8, !tbaa !260
  %2172 = icmp eq ptr %2168, %2171
  br label %2173

2173:                                             ; preds = %2165, %2162
  %2174 = phi i1 [ false, %2162 ], [ %2172, %2165 ]
  br label %2175

2175:                                             ; preds = %2173, %2158
  %2176 = phi i1 [ true, %2158 ], [ %2174, %2173 ]
  %2177 = zext i1 %2176 to i8
  store i8 %2177, ptr %83, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #12
  store i8 1, ptr %84, align 1, !tbaa !97
  %2178 = load ptr, ptr %10, align 8, !tbaa !5
  %2179 = load i8, ptr %83, align 1, !tbaa !97, !range !93, !noundef !94
  %2180 = trunc i8 %2179 to i1
  %2181 = load i32, ptr %59, align 4, !tbaa !9
  %2182 = getelementptr inbounds [4 x i32], ptr %58, i64 0, i64 0
  %2183 = load float, ptr %60, align 4, !tbaa !139
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2178, ptr noundef nonnull align 4 dereferenceable(16) %72, i1 noundef zeroext %2180, i1 noundef zeroext true, i32 noundef %2181, ptr noundef %2182, float noundef %2183)
  %2184 = load i8, ptr %76, align 1, !tbaa !97, !range !93, !noundef !94
  %2185 = trunc i8 %2184 to i1
  br i1 %2185, label %2186, label %2191

2186:                                             ; preds = %2175
  %2187 = load ptr, ptr %10, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiWindow, ptr %2187, i32 0, i32 88
  %2189 = load ptr, ptr %10, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.ImGuiWindow, ptr %2189, i32 0, i32 87
  store ptr %2188, ptr %2190, align 8, !tbaa !170
  br label %2191

2191:                                             ; preds = %2186, %2175
  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
  %2192 = load i32, ptr %7, align 4, !tbaa !9
  %2193 = and i32 %2192, 8
  %2194 = icmp ne i32 %2193, 0
  br i1 %2194, label %2199, label %2195

2195:                                             ; preds = %2191
  %2196 = load i32, ptr %7, align 4, !tbaa !9
  %2197 = and i32 %2196, 2048
  %2198 = icmp ne i32 %2197, 0
  br label %2199

2199:                                             ; preds = %2195, %2191
  %2200 = phi i1 [ false, %2191 ], [ %2198, %2195 ]
  %2201 = zext i1 %2200 to i8
  store i8 %2201, ptr %85, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #12
  %2202 = load i32, ptr %7, align 4, !tbaa !9
  %2203 = and i32 %2202, 8
  %2204 = icmp ne i32 %2203, 0
  %2205 = xor i1 %2204, true
  %2206 = zext i1 %2205 to i8
  store i8 %2206, ptr %86, align 1, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  %2207 = load ptr, ptr %10, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct.ImGuiWindow, ptr %2207, i32 0, i32 12
  %2209 = getelementptr inbounds %struct.ImVec2, ptr %2208, i32 0, i32 0
  %2210 = load float, ptr %2209, align 8, !tbaa !197
  %2211 = fcmp une float %2210, 0.000000e+00
  br i1 %2211, label %2212, label %2217

2212:                                             ; preds = %2199
  %2213 = load ptr, ptr %10, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiWindow, ptr %2213, i32 0, i32 12
  %2215 = getelementptr inbounds %struct.ImVec2, ptr %2214, i32 0, i32 0
  %2216 = load float, ptr %2215, align 8, !tbaa !197
  br label %2247

2217:                                             ; preds = %2199
  %2218 = load i8, ptr %85, align 1, !tbaa !97, !range !93, !noundef !94
  %2219 = trunc i8 %2218 to i1
  br i1 %2219, label %2220, label %2225

2220:                                             ; preds = %2217
  %2221 = load ptr, ptr %10, align 8, !tbaa !5
  %2222 = getelementptr inbounds %struct.ImGuiWindow, ptr %2221, i32 0, i32 10
  %2223 = getelementptr inbounds %struct.ImVec2, ptr %2222, i32 0, i32 0
  %2224 = load float, ptr %2223, align 8, !tbaa !241
  br label %2226

2225:                                             ; preds = %2217
  br label %2226

2226:                                             ; preds = %2225, %2220
  %2227 = phi float [ %2224, %2220 ], [ 0.000000e+00, %2225 ]
  %2228 = load ptr, ptr %10, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 8
  %2230 = getelementptr inbounds %struct.ImVec2, ptr %2229, i32 0, i32 0
  %2231 = load float, ptr %2230, align 8, !tbaa !180
  %2232 = load ptr, ptr %10, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 13
  %2234 = getelementptr inbounds %struct.ImVec2, ptr %2233, i32 0, i32 0
  %2235 = load float, ptr %2234, align 8, !tbaa !187
  %2236 = fneg float %2235
  %2237 = call float @llvm.fmuladd.f32(float %2236, float 2.000000e+00, float %2231)
  %2238 = load ptr, ptr %10, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.ImGuiWindow, ptr %2238, i32 0, i32 18
  %2240 = load float, ptr %2239, align 8, !tbaa !205
  %2241 = load ptr, ptr %10, align 8, !tbaa !5
  %2242 = getelementptr inbounds %struct.ImGuiWindow, ptr %2241, i32 0, i32 20
  %2243 = load float, ptr %2242, align 8, !tbaa !206
  %2244 = fadd float %2240, %2243
  %2245 = fsub float %2237, %2244
  %2246 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2227, float noundef %2245)
  br label %2247

2247:                                             ; preds = %2226, %2212
  %2248 = phi float [ %2216, %2212 ], [ %2246, %2226 ]
  store float %2248, ptr %87, align 4, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #12
  %2249 = load ptr, ptr %10, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiWindow, ptr %2249, i32 0, i32 12
  %2251 = getelementptr inbounds %struct.ImVec2, ptr %2250, i32 0, i32 1
  %2252 = load float, ptr %2251, align 4, !tbaa !198
  %2253 = fcmp une float %2252, 0.000000e+00
  br i1 %2253, label %2254, label %2259

2254:                                             ; preds = %2247
  %2255 = load ptr, ptr %10, align 8, !tbaa !5
  %2256 = getelementptr inbounds %struct.ImGuiWindow, ptr %2255, i32 0, i32 12
  %2257 = getelementptr inbounds %struct.ImVec2, ptr %2256, i32 0, i32 1
  %2258 = load float, ptr %2257, align 4, !tbaa !198
  br label %2289

2259:                                             ; preds = %2247
  %2260 = load i8, ptr %86, align 1, !tbaa !97, !range !93, !noundef !94
  %2261 = trunc i8 %2260 to i1
  br i1 %2261, label %2262, label %2267

2262:                                             ; preds = %2259
  %2263 = load ptr, ptr %10, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiWindow, ptr %2263, i32 0, i32 10
  %2265 = getelementptr inbounds %struct.ImVec2, ptr %2264, i32 0, i32 1
  %2266 = load float, ptr %2265, align 4, !tbaa !243
  br label %2268

2267:                                             ; preds = %2259
  br label %2268

2268:                                             ; preds = %2267, %2262
  %2269 = phi float [ %2266, %2262 ], [ 0.000000e+00, %2267 ]
  %2270 = load ptr, ptr %10, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.ImGuiWindow, ptr %2270, i32 0, i32 8
  %2272 = getelementptr inbounds %struct.ImVec2, ptr %2271, i32 0, i32 1
  %2273 = load float, ptr %2272, align 4, !tbaa !181
  %2274 = load ptr, ptr %10, align 8, !tbaa !5
  %2275 = getelementptr inbounds %struct.ImGuiWindow, ptr %2274, i32 0, i32 13
  %2276 = getelementptr inbounds %struct.ImVec2, ptr %2275, i32 0, i32 1
  %2277 = load float, ptr %2276, align 4, !tbaa !244
  %2278 = fneg float %2277
  %2279 = call float @llvm.fmuladd.f32(float %2278, float 2.000000e+00, float %2273)
  %2280 = load ptr, ptr %10, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.ImGuiWindow, ptr %2280, i32 0, i32 19
  %2282 = load float, ptr %2281, align 4, !tbaa !207
  %2283 = load ptr, ptr %10, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.ImGuiWindow, ptr %2283, i32 0, i32 21
  %2285 = load float, ptr %2284, align 4, !tbaa !208
  %2286 = fadd float %2282, %2285
  %2287 = fsub float %2279, %2286
  %2288 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2269, float noundef %2287)
  br label %2289

2289:                                             ; preds = %2268, %2254
  %2290 = phi float [ %2258, %2254 ], [ %2288, %2268 ]
  store float %2290, ptr %88, align 4, !tbaa !139
  %2291 = load ptr, ptr %10, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiWindow, ptr %2291, i32 0, i32 71
  %2293 = getelementptr inbounds %struct.ImRect, ptr %2292, i32 0, i32 0
  %2294 = getelementptr inbounds %struct.ImVec2, ptr %2293, i32 0, i32 0
  %2295 = load float, ptr %2294, align 8, !tbaa !230
  %2296 = load ptr, ptr %10, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct.ImGuiWindow, ptr %2296, i32 0, i32 28
  %2298 = getelementptr inbounds %struct.ImVec2, ptr %2297, i32 0, i32 0
  %2299 = load float, ptr %2298, align 8, !tbaa !261
  %2300 = fsub float %2295, %2299
  %2301 = load ptr, ptr %10, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.ImGuiWindow, ptr %2301, i32 0, i32 13
  %2303 = getelementptr inbounds %struct.ImVec2, ptr %2302, i32 0, i32 0
  %2304 = load float, ptr %2303, align 8, !tbaa !187
  %2305 = load ptr, ptr %10, align 8, !tbaa !5
  %2306 = getelementptr inbounds %struct.ImGuiWindow, ptr %2305, i32 0, i32 15
  %2307 = load float, ptr %2306, align 4, !tbaa !183
  %2308 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2304, float noundef %2307)
  %2309 = fadd float %2300, %2308
  %2310 = call noundef float @_ZL7ImTruncf(float noundef %2309)
  %2311 = load ptr, ptr %10, align 8, !tbaa !5
  %2312 = getelementptr inbounds %struct.ImGuiWindow, ptr %2311, i32 0, i32 73
  %2313 = getelementptr inbounds %struct.ImRect, ptr %2312, i32 0, i32 0
  %2314 = getelementptr inbounds %struct.ImVec2, ptr %2313, i32 0, i32 0
  store float %2310, ptr %2314, align 8, !tbaa !262
  %2315 = load ptr, ptr %10, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiWindow, ptr %2315, i32 0, i32 71
  %2317 = getelementptr inbounds %struct.ImRect, ptr %2316, i32 0, i32 0
  %2318 = getelementptr inbounds %struct.ImVec2, ptr %2317, i32 0, i32 1
  %2319 = load float, ptr %2318, align 4, !tbaa !232
  %2320 = load ptr, ptr %10, align 8, !tbaa !5
  %2321 = getelementptr inbounds %struct.ImGuiWindow, ptr %2320, i32 0, i32 28
  %2322 = getelementptr inbounds %struct.ImVec2, ptr %2321, i32 0, i32 1
  %2323 = load float, ptr %2322, align 4, !tbaa !263
  %2324 = fsub float %2319, %2323
  %2325 = load ptr, ptr %10, align 8, !tbaa !5
  %2326 = getelementptr inbounds %struct.ImGuiWindow, ptr %2325, i32 0, i32 13
  %2327 = getelementptr inbounds %struct.ImVec2, ptr %2326, i32 0, i32 1
  %2328 = load float, ptr %2327, align 4, !tbaa !244
  %2329 = load ptr, ptr %10, align 8, !tbaa !5
  %2330 = getelementptr inbounds %struct.ImGuiWindow, ptr %2329, i32 0, i32 15
  %2331 = load float, ptr %2330, align 4, !tbaa !183
  %2332 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2328, float noundef %2331)
  %2333 = fadd float %2324, %2332
  %2334 = call noundef float @_ZL7ImTruncf(float noundef %2333)
  %2335 = load ptr, ptr %10, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.ImGuiWindow, ptr %2335, i32 0, i32 73
  %2337 = getelementptr inbounds %struct.ImRect, ptr %2336, i32 0, i32 0
  %2338 = getelementptr inbounds %struct.ImVec2, ptr %2337, i32 0, i32 1
  store float %2334, ptr %2338, align 4, !tbaa !264
  %2339 = load ptr, ptr %10, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 73
  %2341 = getelementptr inbounds %struct.ImRect, ptr %2340, i32 0, i32 0
  %2342 = getelementptr inbounds %struct.ImVec2, ptr %2341, i32 0, i32 0
  %2343 = load float, ptr %2342, align 8, !tbaa !262
  %2344 = load float, ptr %87, align 4, !tbaa !139
  %2345 = fadd float %2343, %2344
  %2346 = load ptr, ptr %10, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiWindow, ptr %2346, i32 0, i32 73
  %2348 = getelementptr inbounds %struct.ImRect, ptr %2347, i32 0, i32 1
  %2349 = getelementptr inbounds %struct.ImVec2, ptr %2348, i32 0, i32 0
  store float %2345, ptr %2349, align 8, !tbaa !265
  %2350 = load ptr, ptr %10, align 8, !tbaa !5
  %2351 = getelementptr inbounds %struct.ImGuiWindow, ptr %2350, i32 0, i32 73
  %2352 = getelementptr inbounds %struct.ImRect, ptr %2351, i32 0, i32 0
  %2353 = getelementptr inbounds %struct.ImVec2, ptr %2352, i32 0, i32 1
  %2354 = load float, ptr %2353, align 4, !tbaa !264
  %2355 = load float, ptr %88, align 4, !tbaa !139
  %2356 = fadd float %2354, %2355
  %2357 = load ptr, ptr %10, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiWindow, ptr %2357, i32 0, i32 73
  %2359 = getelementptr inbounds %struct.ImRect, ptr %2358, i32 0, i32 1
  %2360 = getelementptr inbounds %struct.ImVec2, ptr %2359, i32 0, i32 1
  store float %2356, ptr %2360, align 4, !tbaa !266
  %2361 = load ptr, ptr %10, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ImGuiWindow, ptr %2361, i32 0, i32 73
  %2363 = load ptr, ptr %10, align 8, !tbaa !5
  %2364 = getelementptr inbounds %struct.ImGuiWindow, ptr %2363, i32 0, i32 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2364, ptr align 8 %2362, i64 16, i1 false), !tbaa.struct !169
  %2365 = load ptr, ptr %10, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiWindow, ptr %2365, i32 0, i32 7
  %2367 = getelementptr inbounds %struct.ImVec2, ptr %2366, i32 0, i32 0
  %2368 = load float, ptr %2367, align 8, !tbaa !229
  %2369 = load ptr, ptr %10, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct.ImGuiWindow, ptr %2369, i32 0, i32 28
  %2371 = getelementptr inbounds %struct.ImVec2, ptr %2370, i32 0, i32 0
  %2372 = load float, ptr %2371, align 8, !tbaa !261
  %2373 = fsub float %2368, %2372
  %2374 = load ptr, ptr %10, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiWindow, ptr %2374, i32 0, i32 13
  %2376 = getelementptr inbounds %struct.ImVec2, ptr %2375, i32 0, i32 0
  %2377 = load float, ptr %2376, align 8, !tbaa !187
  %2378 = fadd float %2373, %2377
  %2379 = load ptr, ptr %10, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 18
  %2381 = load float, ptr %2380, align 8, !tbaa !205
  %2382 = fadd float %2378, %2381
  %2383 = load ptr, ptr %10, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.ImGuiWindow, ptr %2383, i32 0, i32 76
  %2385 = getelementptr inbounds %struct.ImRect, ptr %2384, i32 0, i32 0
  %2386 = getelementptr inbounds %struct.ImVec2, ptr %2385, i32 0, i32 0
  store float %2382, ptr %2386, align 8, !tbaa !267
  %2387 = load ptr, ptr %10, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.ImGuiWindow, ptr %2387, i32 0, i32 7
  %2389 = getelementptr inbounds %struct.ImVec2, ptr %2388, i32 0, i32 1
  %2390 = load float, ptr %2389, align 4, !tbaa !231
  %2391 = load ptr, ptr %10, align 8, !tbaa !5
  %2392 = getelementptr inbounds %struct.ImGuiWindow, ptr %2391, i32 0, i32 28
  %2393 = getelementptr inbounds %struct.ImVec2, ptr %2392, i32 0, i32 1
  %2394 = load float, ptr %2393, align 4, !tbaa !263
  %2395 = fsub float %2390, %2394
  %2396 = load ptr, ptr %10, align 8, !tbaa !5
  %2397 = getelementptr inbounds %struct.ImGuiWindow, ptr %2396, i32 0, i32 13
  %2398 = getelementptr inbounds %struct.ImVec2, ptr %2397, i32 0, i32 1
  %2399 = load float, ptr %2398, align 4, !tbaa !244
  %2400 = fadd float %2395, %2399
  %2401 = load ptr, ptr %10, align 8, !tbaa !5
  %2402 = getelementptr inbounds %struct.ImGuiWindow, ptr %2401, i32 0, i32 19
  %2403 = load float, ptr %2402, align 4, !tbaa !207
  %2404 = fadd float %2400, %2403
  %2405 = load ptr, ptr %10, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ImGuiWindow, ptr %2405, i32 0, i32 76
  %2407 = getelementptr inbounds %struct.ImRect, ptr %2406, i32 0, i32 0
  %2408 = getelementptr inbounds %struct.ImVec2, ptr %2407, i32 0, i32 1
  store float %2404, ptr %2408, align 4, !tbaa !268
  %2409 = load ptr, ptr %10, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.ImGuiWindow, ptr %2409, i32 0, i32 76
  %2411 = getelementptr inbounds %struct.ImRect, ptr %2410, i32 0, i32 0
  %2412 = getelementptr inbounds %struct.ImVec2, ptr %2411, i32 0, i32 0
  %2413 = load float, ptr %2412, align 8, !tbaa !267
  %2414 = load ptr, ptr %10, align 8, !tbaa !5
  %2415 = getelementptr inbounds %struct.ImGuiWindow, ptr %2414, i32 0, i32 12
  %2416 = getelementptr inbounds %struct.ImVec2, ptr %2415, i32 0, i32 0
  %2417 = load float, ptr %2416, align 8, !tbaa !197
  %2418 = fcmp une float %2417, 0.000000e+00
  br i1 %2418, label %2419, label %2424

2419:                                             ; preds = %2289
  %2420 = load ptr, ptr %10, align 8, !tbaa !5
  %2421 = getelementptr inbounds %struct.ImGuiWindow, ptr %2420, i32 0, i32 12
  %2422 = getelementptr inbounds %struct.ImVec2, ptr %2421, i32 0, i32 0
  %2423 = load float, ptr %2422, align 8, !tbaa !197
  br label %2443

2424:                                             ; preds = %2289
  %2425 = load ptr, ptr %10, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.ImGuiWindow, ptr %2425, i32 0, i32 8
  %2427 = getelementptr inbounds %struct.ImVec2, ptr %2426, i32 0, i32 0
  %2428 = load float, ptr %2427, align 8, !tbaa !180
  %2429 = load ptr, ptr %10, align 8, !tbaa !5
  %2430 = getelementptr inbounds %struct.ImGuiWindow, ptr %2429, i32 0, i32 13
  %2431 = getelementptr inbounds %struct.ImVec2, ptr %2430, i32 0, i32 0
  %2432 = load float, ptr %2431, align 8, !tbaa !187
  %2433 = fneg float %2432
  %2434 = call float @llvm.fmuladd.f32(float %2433, float 2.000000e+00, float %2428)
  %2435 = load ptr, ptr %10, align 8, !tbaa !5
  %2436 = getelementptr inbounds %struct.ImGuiWindow, ptr %2435, i32 0, i32 18
  %2437 = load float, ptr %2436, align 8, !tbaa !205
  %2438 = load ptr, ptr %10, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.ImGuiWindow, ptr %2438, i32 0, i32 20
  %2440 = load float, ptr %2439, align 8, !tbaa !206
  %2441 = fadd float %2437, %2440
  %2442 = fsub float %2434, %2441
  br label %2443

2443:                                             ; preds = %2424, %2419
  %2444 = phi float [ %2423, %2419 ], [ %2442, %2424 ]
  %2445 = fadd float %2413, %2444
  %2446 = load ptr, ptr %10, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiWindow, ptr %2446, i32 0, i32 76
  %2448 = getelementptr inbounds %struct.ImRect, ptr %2447, i32 0, i32 1
  %2449 = getelementptr inbounds %struct.ImVec2, ptr %2448, i32 0, i32 0
  store float %2445, ptr %2449, align 8, !tbaa !269
  %2450 = load ptr, ptr %10, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ImGuiWindow, ptr %2450, i32 0, i32 76
  %2452 = getelementptr inbounds %struct.ImRect, ptr %2451, i32 0, i32 0
  %2453 = getelementptr inbounds %struct.ImVec2, ptr %2452, i32 0, i32 1
  %2454 = load float, ptr %2453, align 4, !tbaa !268
  %2455 = load ptr, ptr %10, align 8, !tbaa !5
  %2456 = getelementptr inbounds %struct.ImGuiWindow, ptr %2455, i32 0, i32 12
  %2457 = getelementptr inbounds %struct.ImVec2, ptr %2456, i32 0, i32 1
  %2458 = load float, ptr %2457, align 4, !tbaa !198
  %2459 = fcmp une float %2458, 0.000000e+00
  br i1 %2459, label %2460, label %2465

2460:                                             ; preds = %2443
  %2461 = load ptr, ptr %10, align 8, !tbaa !5
  %2462 = getelementptr inbounds %struct.ImGuiWindow, ptr %2461, i32 0, i32 12
  %2463 = getelementptr inbounds %struct.ImVec2, ptr %2462, i32 0, i32 1
  %2464 = load float, ptr %2463, align 4, !tbaa !198
  br label %2484

2465:                                             ; preds = %2443
  %2466 = load ptr, ptr %10, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.ImGuiWindow, ptr %2466, i32 0, i32 8
  %2468 = getelementptr inbounds %struct.ImVec2, ptr %2467, i32 0, i32 1
  %2469 = load float, ptr %2468, align 4, !tbaa !181
  %2470 = load ptr, ptr %10, align 8, !tbaa !5
  %2471 = getelementptr inbounds %struct.ImGuiWindow, ptr %2470, i32 0, i32 13
  %2472 = getelementptr inbounds %struct.ImVec2, ptr %2471, i32 0, i32 1
  %2473 = load float, ptr %2472, align 4, !tbaa !244
  %2474 = fneg float %2473
  %2475 = call float @llvm.fmuladd.f32(float %2474, float 2.000000e+00, float %2469)
  %2476 = load ptr, ptr %10, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 19
  %2478 = load float, ptr %2477, align 4, !tbaa !207
  %2479 = load ptr, ptr %10, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiWindow, ptr %2479, i32 0, i32 21
  %2481 = load float, ptr %2480, align 4, !tbaa !208
  %2482 = fadd float %2478, %2481
  %2483 = fsub float %2475, %2482
  br label %2484

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

2699:                                             ; preds = %2484
  %2700 = load ptr, ptr %17, align 8, !tbaa !5
  %2701 = getelementptr inbounds %struct.ImGuiWindow, ptr %2700, i32 0, i32 69
  %2702 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2701, i32 0, i32 30
  %2703 = load i32, ptr %2702, align 4, !tbaa !291
  br label %2705

2704:                                             ; preds = %2484
  br label %2705

2705:                                             ; preds = %2704, %2699
  %2706 = phi i32 [ %2703, %2699 ], [ 1, %2704 ]
  %2707 = load ptr, ptr %10, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.ImGuiWindow, ptr %2707, i32 0, i32 69
  %2709 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2708, i32 0, i32 31
  store i32 %2706, ptr %2709, align 8, !tbaa !292
  %2710 = load ptr, ptr %10, align 8, !tbaa !5
  %2711 = getelementptr inbounds %struct.ImGuiWindow, ptr %2710, i32 0, i32 81
  %2712 = load float, ptr %2711, align 8, !tbaa !240
  %2713 = load ptr, ptr %10, align 8, !tbaa !5
  %2714 = getelementptr inbounds %struct.ImGuiWindow, ptr %2713, i32 0, i32 69
  %2715 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2714, i32 0, i32 33
  store float %2712, ptr %2715, align 8, !tbaa !293
  %2716 = load ptr, ptr %10, align 8, !tbaa !5
  %2717 = getelementptr inbounds %struct.ImGuiWindow, ptr %2716, i32 0, i32 69
  %2718 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2717, i32 0, i32 34
  store float -1.000000e+00, ptr %2718, align 4, !tbaa !294
  %2719 = load ptr, ptr %10, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.ImGuiWindow, ptr %2719, i32 0, i32 69
  %2721 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2720, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2721, i32 noundef 0)
  %2722 = load ptr, ptr %10, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiWindow, ptr %2722, i32 0, i32 69
  %2724 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2723, i32 0, i32 36
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2724, i32 noundef 0)
  %2725 = load i32, ptr %7, align 4, !tbaa !9
  %2726 = and i32 %2725, 134217728
  %2727 = icmp ne i32 %2726, 0
  br i1 %2727, label %2728, label %2734

2728:                                             ; preds = %2705
  %2729 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 55)
  %2730 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %2729)
  %2731 = load ptr, ptr %10, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiWindow, ptr %2731, i32 0, i32 69
  %2733 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2732, i32 0, i32 32
  store i32 %2730, ptr %2733, align 4, !tbaa !295
  br label %2734

2734:                                             ; preds = %2728, %2705
  %2735 = load ptr, ptr %10, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiWindow, ptr %2735, i32 0, i32 55
  %2737 = load i8, ptr %2736, align 2, !tbaa !211
  %2738 = sext i8 %2737 to i32
  %2739 = icmp sgt i32 %2738, 0
  br i1 %2739, label %2740, label %2745

2740:                                             ; preds = %2734
  %2741 = load ptr, ptr %10, align 8, !tbaa !5
  %2742 = getelementptr inbounds %struct.ImGuiWindow, ptr %2741, i32 0, i32 55
  %2743 = load i8, ptr %2742, align 2, !tbaa !211
  %2744 = add i8 %2743, -1
  store i8 %2744, ptr %2742, align 2, !tbaa !211
  br label %2745

2745:                                             ; preds = %2740, %2734
  %2746 = load ptr, ptr %10, align 8, !tbaa !5
  %2747 = getelementptr inbounds %struct.ImGuiWindow, ptr %2746, i32 0, i32 56
  %2748 = load i8, ptr %2747, align 1, !tbaa !212
  %2749 = sext i8 %2748 to i32
  %2750 = icmp sgt i32 %2749, 0
  br i1 %2750, label %2751, label %2756

2751:                                             ; preds = %2745
  %2752 = load ptr, ptr %10, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.ImGuiWindow, ptr %2752, i32 0, i32 56
  %2754 = load i8, ptr %2753, align 1, !tbaa !212
  %2755 = add i8 %2754, -1
  store i8 %2755, ptr %2753, align 1, !tbaa !212
  br label %2756

2756:                                             ; preds = %2751, %2745
  %2757 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2758 = trunc i8 %2757 to i1
  br i1 %2758, label %2759, label %2761

2759:                                             ; preds = %2756
  %2760 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %2760, i32 noundef 2)
  br label %2761

2761:                                             ; preds = %2759, %2756
  %2762 = load i8, ptr %55, align 1, !tbaa !97, !range !93, !noundef !94
  %2763 = trunc i8 %2762 to i1
  br i1 %2763, label %2764, label %2772

2764:                                             ; preds = %2761
  %2765 = load ptr, ptr %10, align 8, !tbaa !5
  %2766 = load ptr, ptr %8, align 8, !tbaa !5
  %2767 = getelementptr inbounds %struct.ImGuiContext, ptr %2766, i32 0, i32 101
  %2768 = load ptr, ptr %2767, align 8, !tbaa !259
  %2769 = icmp eq ptr %2765, %2768
  br i1 %2769, label %2770, label %2772

2770:                                             ; preds = %2764
  %2771 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2771, i1 noundef zeroext false)
  br label %2772

2772:                                             ; preds = %2770, %2764, %2761
  %2773 = load i32, ptr %7, align 4, !tbaa !9
  %2774 = and i32 %2773, 1
  %2775 = icmp ne i32 %2774, 0
  br i1 %2775, label %2800, label %2776

2776:                                             ; preds = %2772
  %2777 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #12
  %2778 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2779 = getelementptr inbounds %struct.ImVec2, ptr %2778, i32 0, i32 0
  %2780 = load float, ptr %2779, align 4, !tbaa !296
  %2781 = load ptr, ptr %10, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.ImGuiWindow, ptr %2781, i32 0, i32 15
  %2783 = load float, ptr %2782, align 4, !tbaa !183
  %2784 = fadd float %2780, %2783
  %2785 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2786 = getelementptr inbounds %struct.ImVec2, ptr %2785, i32 0, i32 1
  %2787 = load float, ptr %2786, align 4, !tbaa !297
  %2788 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2789 = getelementptr inbounds %struct.ImVec2, ptr %2788, i32 0, i32 0
  %2790 = load float, ptr %2789, align 4, !tbaa !298
  %2791 = load ptr, ptr %10, align 8, !tbaa !5
  %2792 = getelementptr inbounds %struct.ImGuiWindow, ptr %2791, i32 0, i32 15
  %2793 = load float, ptr %2792, align 4, !tbaa !183
  %2794 = fsub float %2790, %2793
  %2795 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2796 = getelementptr inbounds %struct.ImVec2, ptr %2795, i32 0, i32 1
  %2797 = load float, ptr %2796, align 4, !tbaa !299
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %94, float noundef %2784, float noundef %2787, float noundef %2794, float noundef %2797)
  %2798 = load ptr, ptr %5, align 8, !tbaa !5
  %2799 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2777, ptr noundef nonnull align 4 dereferenceable(16) %94, ptr noundef %2798, ptr noundef %2799)
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #12
  br label %2800

2800:                                             ; preds = %2776, %2772
  %2801 = load ptr, ptr %10, align 8, !tbaa !5
  %2802 = getelementptr inbounds %struct.ImGuiWindow, ptr %2801, i32 0, i32 77
  %2803 = getelementptr inbounds %struct.ImVec2ih, ptr %2802, i32 0, i32 1
  store i16 0, ptr %2803, align 2, !tbaa !300
  %2804 = load ptr, ptr %10, align 8, !tbaa !5
  %2805 = getelementptr inbounds %struct.ImGuiWindow, ptr %2804, i32 0, i32 77
  %2806 = getelementptr inbounds %struct.ImVec2ih, ptr %2805, i32 0, i32 0
  store i16 0, ptr %2806, align 8, !tbaa !301
  %2807 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %2807, ptr noundef nonnull align 4 dereferenceable(16) %72)
  %2808 = load ptr, ptr %8, align 8, !tbaa !5
  %2809 = getelementptr inbounds %struct.ImGuiContext, ptr %2808, i32 0, i32 85
  %2810 = load i32, ptr %2809, align 4, !tbaa !302
  %2811 = icmp ne i32 %2810, 0
  br i1 %2811, label %2812, label %2829

2812:                                             ; preds = %2800
  %2813 = load ptr, ptr %10, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.ImGuiWindow, ptr %2813, i32 0, i32 2
  %2815 = load i32, ptr %2814, align 8, !tbaa !99
  %2816 = load ptr, ptr %8, align 8, !tbaa !5
  %2817 = getelementptr inbounds %struct.ImGuiContext, ptr %2816, i32 0, i32 85
  %2818 = load i32, ptr %2817, align 4, !tbaa !302
  %2819 = icmp eq i32 %2815, %2818
  br i1 %2819, label %2828, label %2820

2820:                                             ; preds = %2812
  %2821 = load ptr, ptr %10, align 8, !tbaa !5
  %2822 = getelementptr inbounds %struct.ImGuiWindow, ptr %2821, i32 0, i32 25
  %2823 = load i32, ptr %2822, align 4, !tbaa !303
  %2824 = load ptr, ptr %8, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiContext, ptr %2824, i32 0, i32 85
  %2826 = load i32, ptr %2825, align 4, !tbaa !302
  %2827 = icmp eq i32 %2823, %2826
  br i1 %2827, label %2828, label %2829

2828:                                             ; preds = %2820, %2812
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %2829

2829:                                             ; preds = %2828, %2820, %2800
  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 %2847

2830:                                             ; preds = %731, %726
  %2831 = load ptr, ptr %10, align 8, !tbaa !5
  %2832 = getelementptr inbounds %struct.ImGuiWindow, ptr %2831, i32 0, i32 42
  %2833 = load i8, ptr %2832, align 8, !tbaa !165, !range !93, !noundef !94
  %2834 = trunc i8 %2833 to i1
  br i1 %2834, label %2835, label %2838

2835:                                             ; preds = %2830
  %2836 = load ptr, ptr %10, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.ImGuiWindow, ptr %2836, i32 0, i32 36
  store i8 1, ptr %2837, align 2, !tbaa !167
  br label %2838

2838:                                             ; preds = %2835, %2830
  %2839 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2839)
  %2840 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %95) #12
  %2841 = load ptr, ptr %10, align 8, !tbaa !5
  %2842 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %2841)
  %2843 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 0
  %2844 = extractvalue { <2 x float>, <2 x float> } %2842, 0
  store <2 x float> %2844, ptr %2843, align 4
  %2845 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %95, i32 0, i32 1
  %2846 = extractvalue { <2 x float>, <2 x float> } %2842, 1
  store <2 x float> %2846, ptr %2845, align 4
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %2840, ptr noundef nonnull align 4 dereferenceable(16) %95)
  call void @llvm.lifetime.end.p0(i64 16, ptr %95) #12
  br label %2847

2847:                                             ; preds = %2838, %2829
  %2848 = load ptr, ptr %10, align 8, !tbaa !5
  %2849 = getelementptr inbounds %struct.ImGuiWindow, ptr %2848, i32 0, i32 42
  %2850 = load i8, ptr %2849, align 8, !tbaa !165, !range !93, !noundef !94
  %2851 = trunc i8 %2850 to i1
  br i1 %2851, label %2859, label %2852

2852:                                             ; preds = %2847
  %2853 = load ptr, ptr %10, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiWindow, ptr %2853, i32 0, i32 72
  %2855 = getelementptr inbounds %struct.ImRect, ptr %2854, i32 0, i32 0
  %2856 = load ptr, ptr %10, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.ImGuiWindow, ptr %2856, i32 0, i32 72
  %2858 = getelementptr inbounds %struct.ImRect, ptr %2857, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2855, ptr noundef nonnull align 4 dereferenceable(8) %2858, i1 noundef zeroext true)
  br label %2859

2859:                                             ; preds = %2852, %2847
  %2860 = load ptr, ptr %10, align 8, !tbaa !5
  %2861 = getelementptr inbounds %struct.ImGuiWindow, ptr %2860, i32 0, i32 38
  store i8 0, ptr %2861, align 4, !tbaa !304
  %2862 = load ptr, ptr %10, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiWindow, ptr %2862, i32 0, i32 50
  %2864 = load i16, ptr %2863, align 8, !tbaa !305
  %2865 = add i16 %2864, 1
  store i16 %2865, ptr %2863, align 8, !tbaa !305
  %2866 = load ptr, ptr %8, align 8, !tbaa !5
  %2867 = getelementptr inbounds %struct.ImGuiContext, ptr %2866, i32 0, i32 88
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112) %2867)
  %2868 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %2869 = trunc i8 %2868 to i1
  br i1 %2869, label %2870, label %3096

2870:                                             ; preds = %2859
  %2871 = load ptr, ptr %10, align 8, !tbaa !5
  %2872 = getelementptr inbounds %struct.ImGuiWindow, ptr %2871, i32 0, i32 42
  %2873 = load i8, ptr %2872, align 8, !tbaa !165, !range !93, !noundef !94
  %2874 = trunc i8 %2873 to i1
  br i1 %2874, label %3096, label %2875

2875:                                             ; preds = %2870
  %2876 = load i32, ptr %7, align 4, !tbaa !9
  %2877 = and i32 %2876, 16777216
  %2878 = icmp ne i32 %2877, 0
  br i1 %2878, label %2879, label %3007

2879:                                             ; preds = %2875
  %2880 = load i32, ptr %7, align 4, !tbaa !9
  %2881 = and i32 %2880, 268435456
  %2882 = icmp ne i32 %2881, 0
  br i1 %2882, label %3007, label %2883

2883:                                             ; preds = %2879
  %2884 = load i32, ptr %7, align 4, !tbaa !9
  %2885 = and i32 %2884, 1
  %2886 = icmp ne i32 %2885, 0
  br i1 %2886, label %2887, label %2888

2887:                                             ; preds = %2883
  br label %2890

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

2889:                                             ; No predecessors!
  br label %2890

2890:                                             ; preds = %2889, %2887
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #12
  %2891 = load ptr, ptr %10, align 8, !tbaa !5
  %2892 = getelementptr inbounds %struct.ImGuiWindow, ptr %2891, i32 0, i32 4
  %2893 = load i32, ptr %2892, align 8, !tbaa !126
  %2894 = and i32 %2893, 256
  %2895 = icmp ne i32 %2894, 0
  br i1 %2895, label %2896, label %2918

2896:                                             ; preds = %2890
  %2897 = load ptr, ptr %8, align 8, !tbaa !5
  %2898 = getelementptr inbounds %struct.ImGuiContext, ptr %2897, i32 0, i32 120
  %2899 = load i8, ptr %2898, align 4, !tbaa !306, !range !93, !noundef !94
  %2900 = trunc i8 %2899 to i1
  br i1 %2900, label %2901, label %2916

2901:                                             ; preds = %2896
  %2902 = load ptr, ptr %8, align 8, !tbaa !5
  %2903 = getelementptr inbounds %struct.ImGuiContext, ptr %2902, i32 0, i32 101
  %2904 = load ptr, ptr %2903, align 8, !tbaa !259
  %2905 = icmp ne ptr %2904, null
  br i1 %2905, label %2906, label %2916

2906:                                             ; preds = %2901
  %2907 = load ptr, ptr %8, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiContext, ptr %2907, i32 0, i32 101
  %2909 = load ptr, ptr %2908, align 8, !tbaa !259
  %2910 = getelementptr inbounds %struct.ImGuiWindow, ptr %2909, i32 0, i32 94
  %2911 = load ptr, ptr %2910, align 8, !tbaa !307
  %2912 = load ptr, ptr %10, align 8, !tbaa !5
  %2913 = getelementptr inbounds %struct.ImGuiWindow, ptr %2912, i32 0, i32 94
  %2914 = load ptr, ptr %2913, align 8, !tbaa !307
  %2915 = icmp eq ptr %2911, %2914
  br label %2916

2916:                                             ; preds = %2906, %2901, %2896
  %2917 = phi i1 [ false, %2901 ], [ false, %2896 ], [ %2915, %2906 ]
  br label %2918

2918:                                             ; preds = %2916, %2890
  %2919 = phi i1 [ false, %2890 ], [ %2917, %2916 ]
  %2920 = zext i1 %2919 to i8
  store i8 %2920, ptr %96, align 1, !tbaa !97
  %2921 = load ptr, ptr %8, align 8, !tbaa !5
  %2922 = getelementptr inbounds %struct.ImGuiContext, ptr %2921, i32 0, i32 249
  %2923 = load i8, ptr %2922, align 8, !tbaa !308, !range !93, !noundef !94
  %2924 = trunc i8 %2923 to i1
  br i1 %2924, label %2972, label %2925

2925:                                             ; preds = %2918
  %2926 = load i8, ptr %96, align 1, !tbaa !97, !range !93, !noundef !94
  %2927 = trunc i8 %2926 to i1
  br i1 %2927, label %2972, label %2928

2928:                                             ; preds = %2925
  %2929 = load ptr, ptr %10, align 8, !tbaa !5
  %2930 = getelementptr inbounds %struct.ImGuiWindow, ptr %2929, i32 0, i32 70
  %2931 = getelementptr inbounds %struct.ImRect, ptr %2930, i32 0, i32 0
  %2932 = getelementptr inbounds %struct.ImVec2, ptr %2931, i32 0, i32 0
  %2933 = load float, ptr %2932, align 8, !tbaa !309
  %2934 = load ptr, ptr %10, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.ImGuiWindow, ptr %2934, i32 0, i32 70
  %2936 = getelementptr inbounds %struct.ImRect, ptr %2935, i32 0, i32 1
  %2937 = getelementptr inbounds %struct.ImVec2, ptr %2936, i32 0, i32 0
  %2938 = load float, ptr %2937, align 8, !tbaa !310
  %2939 = fcmp oge float %2933, %2938
  br i1 %2939, label %2952, label %2940

2940:                                             ; preds = %2928
  %2941 = load ptr, ptr %10, align 8, !tbaa !5
  %2942 = getelementptr inbounds %struct.ImGuiWindow, ptr %2941, i32 0, i32 70
  %2943 = getelementptr inbounds %struct.ImRect, ptr %2942, i32 0, i32 0
  %2944 = getelementptr inbounds %struct.ImVec2, ptr %2943, i32 0, i32 1
  %2945 = load float, ptr %2944, align 4, !tbaa !311
  %2946 = load ptr, ptr %10, align 8, !tbaa !5
  %2947 = getelementptr inbounds %struct.ImGuiWindow, ptr %2946, i32 0, i32 70
  %2948 = getelementptr inbounds %struct.ImRect, ptr %2947, i32 0, i32 1
  %2949 = getelementptr inbounds %struct.ImVec2, ptr %2948, i32 0, i32 1
  %2950 = load float, ptr %2949, align 4, !tbaa !312
  %2951 = fcmp oge float %2945, %2950
  br i1 %2951, label %2952, label %2971

2952:                                             ; preds = %2940, %2928
  %2953 = load ptr, ptr %10, align 8, !tbaa !5
  %2954 = getelementptr inbounds %struct.ImGuiWindow, ptr %2953, i32 0, i32 55
  %2955 = load i8, ptr %2954, align 2, !tbaa !211
  %2956 = sext i8 %2955 to i32
  %2957 = icmp sgt i32 %2956, 0
  br i1 %2957, label %2964, label %2958

2958:                                             ; preds = %2952
  %2959 = load ptr, ptr %10, align 8, !tbaa !5
  %2960 = getelementptr inbounds %struct.ImGuiWindow, ptr %2959, i32 0, i32 56
  %2961 = load i8, ptr %2960, align 1, !tbaa !212
  %2962 = sext i8 %2961 to i32
  %2963 = icmp sgt i32 %2962, 0
  br i1 %2963, label %2964, label %2967

2964:                                             ; preds = %2958, %2952
  %2965 = load ptr, ptr %10, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.ImGuiWindow, ptr %2965, i32 0, i32 61
  store i8 1, ptr %2966, align 1, !tbaa !166
  br label %2970

2967:                                             ; preds = %2958
  %2968 = load ptr, ptr %10, align 8, !tbaa !5
  %2969 = getelementptr inbounds %struct.ImGuiWindow, ptr %2968, i32 0, i32 60
  store i8 1, ptr %2969, align 4, !tbaa !178
  br label %2970

2970:                                             ; preds = %2967, %2964
  br label %2971

2971:                                             ; preds = %2970, %2940
  br label %2972

2972:                                             ; preds = %2971, %2925, %2918
  %2973 = load ptr, ptr %17, align 8, !tbaa !5
  %2974 = icmp ne ptr %2973, null
  br i1 %2974, label %2975, label %2989

2975:                                             ; preds = %2972
  %2976 = load ptr, ptr %17, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.ImGuiWindow, ptr %2976, i32 0, i32 39
  %2978 = load i8, ptr %2977, align 1, !tbaa !204, !range !93, !noundef !94
  %2979 = trunc i8 %2978 to i1
  br i1 %2979, label %2986, label %2980

2980:                                             ; preds = %2975
  %2981 = load ptr, ptr %17, align 8, !tbaa !5
  %2982 = getelementptr inbounds %struct.ImGuiWindow, ptr %2981, i32 0, i32 60
  %2983 = load i8, ptr %2982, align 4, !tbaa !178
  %2984 = sext i8 %2983 to i32
  %2985 = icmp sgt i32 %2984, 0
  br i1 %2985, label %2986, label %2989

2986:                                             ; preds = %2980, %2975
  %2987 = load ptr, ptr %10, align 8, !tbaa !5
  %2988 = getelementptr inbounds %struct.ImGuiWindow, ptr %2987, i32 0, i32 60
  store i8 1, ptr %2988, align 4, !tbaa !178
  br label %2989

2989:                                             ; preds = %2986, %2980, %2972
  %2990 = load ptr, ptr %17, align 8, !tbaa !5
  %2991 = icmp ne ptr %2990, null
  br i1 %2991, label %2992, label %3006

2992:                                             ; preds = %2989
  %2993 = load ptr, ptr %17, align 8, !tbaa !5
  %2994 = getelementptr inbounds %struct.ImGuiWindow, ptr %2993, i32 0, i32 39
  %2995 = load i8, ptr %2994, align 1, !tbaa !204, !range !93, !noundef !94
  %2996 = trunc i8 %2995 to i1
  br i1 %2996, label %3003, label %2997

2997:                                             ; preds = %2992
  %2998 = load ptr, ptr %17, align 8, !tbaa !5
  %2999 = getelementptr inbounds %struct.ImGuiWindow, ptr %2998, i32 0, i32 61
  %3000 = load i8, ptr %2999, align 1, !tbaa !166
  %3001 = sext i8 %3000 to i32
  %3002 = icmp sgt i32 %3001, 0
  br i1 %3002, label %3003, label %3006

3003:                                             ; preds = %2997, %2992
  %3004 = load ptr, ptr %10, align 8, !tbaa !5
  %3005 = getelementptr inbounds %struct.ImGuiWindow, ptr %3004, i32 0, i32 61
  store i8 1, ptr %3005, align 1, !tbaa !166
  br label %3006

3006:                                             ; preds = %3003, %2997, %2989
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #12
  br label %3007

3007:                                             ; preds = %3006, %2879, %2875
  %3008 = load ptr, ptr %9, align 8, !tbaa !5
  %3009 = getelementptr inbounds %struct.ImGuiStyle, ptr %3008, i32 0, i32 0
  %3010 = load float, ptr %3009, align 4, !tbaa !313
  %3011 = fcmp ole float %3010, 0.000000e+00
  br i1 %3011, label %3012, label %3015

3012:                                             ; preds = %3007
  %3013 = load ptr, ptr %10, align 8, !tbaa !5
  %3014 = getelementptr inbounds %struct.ImGuiWindow, ptr %3013, i32 0, i32 60
  store i8 1, ptr %3014, align 4, !tbaa !178
  br label %3015

3015:                                             ; preds = %3012, %3007
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #12
  %3016 = load ptr, ptr %10, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiWindow, ptr %3016, i32 0, i32 60
  %3018 = load i8, ptr %3017, align 4, !tbaa !178
  %3019 = sext i8 %3018 to i32
  %3020 = icmp sgt i32 %3019, 0
  br i1 %3020, label %3027, label %3021

3021:                                             ; preds = %3015
  %3022 = load ptr, ptr %10, align 8, !tbaa !5
  %3023 = getelementptr inbounds %struct.ImGuiWindow, ptr %3022, i32 0, i32 61
  %3024 = load i8, ptr %3023, align 1, !tbaa !166
  %3025 = sext i8 %3024 to i32
  %3026 = icmp sgt i32 %3025, 0
  br label %3027

3027:                                             ; preds = %3021, %3015
  %3028 = phi i1 [ true, %3015 ], [ %3026, %3021 ]
  %3029 = zext i1 %3028 to i8
  store i8 %3029, ptr %97, align 1, !tbaa !97
  %3030 = load i8, ptr %97, align 1, !tbaa !97, !range !93, !noundef !94
  %3031 = trunc i8 %3030 to i1
  br i1 %3031, label %3038, label %3032

3032:                                             ; preds = %3027
  %3033 = load ptr, ptr %10, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.ImGuiWindow, ptr %3033, i32 0, i32 62
  %3035 = load i8, ptr %3034, align 2, !tbaa !179
  %3036 = sext i8 %3035 to i32
  %3037 = icmp sgt i32 %3036, 0
  br label %3038

3038:                                             ; preds = %3032, %3027
  %3039 = phi i1 [ true, %3027 ], [ %3037, %3032 ]
  %3040 = load ptr, ptr %10, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiWindow, ptr %3040, i32 0, i32 44
  %3042 = zext i1 %3039 to i8
  store i8 %3042, ptr %3041, align 2, !tbaa !314
  %3043 = load ptr, ptr %10, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiWindow, ptr %3043, i32 0, i32 63
  %3045 = load i8, ptr %3044, align 1, !tbaa !315
  %3046 = sext i8 %3045 to i32
  %3047 = icmp sgt i32 %3046, 0
  br i1 %3047, label %3048, label %3057

3048:                                             ; preds = %3038
  %3049 = load ptr, ptr %10, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiWindow, ptr %3049, i32 0, i32 63
  %3051 = load i8, ptr %3050, align 1, !tbaa !315
  %3052 = add i8 %3051, -1
  store i8 %3052, ptr %3050, align 1, !tbaa !315
  %3053 = load ptr, ptr %10, align 8, !tbaa !5
  %3054 = getelementptr inbounds %struct.ImGuiWindow, ptr %3053, i32 0, i32 3
  %3055 = load i32, ptr %3054, align 4, !tbaa !123
  %3056 = or i32 %3055, 197120
  store i32 %3056, ptr %3054, align 4, !tbaa !123
  br label %3057

3057:                                             ; preds = %3048, %3038
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #12
  store i8 0, ptr %98, align 1, !tbaa !97
  %3058 = load ptr, ptr %10, align 8, !tbaa !5
  %3059 = getelementptr inbounds %struct.ImGuiWindow, ptr %3058, i32 0, i32 39
  %3060 = load i8, ptr %3059, align 1, !tbaa !204, !range !93, !noundef !94
  %3061 = trunc i8 %3060 to i1
  br i1 %3061, label %3070, label %3062

3062:                                             ; preds = %3057
  %3063 = load ptr, ptr %10, align 8, !tbaa !5
  %3064 = getelementptr inbounds %struct.ImGuiWindow, ptr %3063, i32 0, i32 36
  %3065 = load i8, ptr %3064, align 2, !tbaa !167, !range !93, !noundef !94
  %3066 = trunc i8 %3065 to i1
  br i1 %3066, label %3067, label %3070

3067:                                             ; preds = %3062
  %3068 = load i8, ptr %97, align 1, !tbaa !97, !range !93, !noundef !94
  %3069 = trunc i8 %3068 to i1
  br i1 %3069, label %3070, label %3090

3070:                                             ; preds = %3067, %3062, %3057
  %3071 = load ptr, ptr %10, align 8, !tbaa !5
  %3072 = getelementptr inbounds %struct.ImGuiWindow, ptr %3071, i32 0, i32 55
  %3073 = load i8, ptr %3072, align 2, !tbaa !211
  %3074 = sext i8 %3073 to i32
  %3075 = icmp sle i32 %3074, 0
  br i1 %3075, label %3076, label %3089

3076:                                             ; preds = %3070
  %3077 = load ptr, ptr %10, align 8, !tbaa !5
  %3078 = getelementptr inbounds %struct.ImGuiWindow, ptr %3077, i32 0, i32 56
  %3079 = load i8, ptr %3078, align 1, !tbaa !212
  %3080 = sext i8 %3079 to i32
  %3081 = icmp sle i32 %3080, 0
  br i1 %3081, label %3082, label %3089

3082:                                             ; preds = %3076
  %3083 = load ptr, ptr %10, align 8, !tbaa !5
  %3084 = getelementptr inbounds %struct.ImGuiWindow, ptr %3083, i32 0, i32 61
  %3085 = load i8, ptr %3084, align 1, !tbaa !166
  %3086 = sext i8 %3085 to i32
  %3087 = icmp sle i32 %3086, 0
  br i1 %3087, label %3088, label %3089

3088:                                             ; preds = %3082
  store i8 1, ptr %98, align 1, !tbaa !97
  br label %3089

3089:                                             ; preds = %3088, %3082, %3076, %3070
  br label %3090

3090:                                             ; preds = %3089, %3067
  %3091 = load i8, ptr %98, align 1, !tbaa !97, !range !93, !noundef !94
  %3092 = trunc i8 %3091 to i1
  %3093 = load ptr, ptr %10, align 8, !tbaa !5
  %3094 = getelementptr inbounds %struct.ImGuiWindow, ptr %3093, i32 0, i32 41
  %3095 = zext i1 %3092 to i8
  store i8 %3095, ptr %3094, align 1, !tbaa !316
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #12
  br label %3103

3096:                                             ; preds = %2870, %2859
  %3097 = load i8, ptr %13, align 1, !tbaa !97, !range !93, !noundef !94
  %3098 = trunc i8 %3097 to i1
  br i1 %3098, label %3099, label %3102

3099:                                             ; preds = %3096
  %3100 = load ptr, ptr %10, align 8, !tbaa !5
  %3101 = getelementptr inbounds %struct.ImGuiWindow, ptr %3100, i32 0, i32 41
  store i8 1, ptr %3101, align 1, !tbaa !316
  br label %3102

3102:                                             ; preds = %3099, %3096
  br label %3103

3103:                                             ; preds = %3102, %3090
  %3104 = load ptr, ptr %10, align 8, !tbaa !5
  %3105 = getelementptr inbounds %struct.ImGuiWindow, ptr %3104, i32 0, i32 45
  %3106 = load i8, ptr %3105, align 1, !tbaa !116, !range !93, !noundef !94
  %3107 = trunc i8 %3106 to i1
  br i1 %3107, label %3157, label %3108

3108:                                             ; preds = %3103
  %3109 = load ptr, ptr %8, align 8, !tbaa !5
  %3110 = getelementptr inbounds %struct.ImGuiContext, ptr %3109, i32 0, i32 3
  %3111 = getelementptr inbounds %struct.ImGuiIO, ptr %3110, i32 0, i32 31
  %3112 = load i8, ptr %3111, align 1, !tbaa !317, !range !93, !noundef !94
  %3113 = trunc i8 %3112 to i1
  br i1 %3113, label %3114, label %3117

3114:                                             ; preds = %3108
  %3115 = load i8, ptr %11, align 1, !tbaa !97, !range !93, !noundef !94
  %3116 = trunc i8 %3115 to i1
  br i1 %3116, label %3133, label %3117

3117:                                             ; preds = %3114, %3108
  %3118 = load ptr, ptr %8, align 8, !tbaa !5
  %3119 = getelementptr inbounds %struct.ImGuiContext, ptr %3118, i32 0, i32 3
  %3120 = getelementptr inbounds %struct.ImGuiIO, ptr %3119, i32 0, i32 32
  %3121 = load i8, ptr %3120, align 2, !tbaa !318, !range !93, !noundef !94
  %3122 = trunc i8 %3121 to i1
  br i1 %3122, label %3123, label %3156

3123:                                             ; preds = %3117
  %3124 = load ptr, ptr %8, align 8, !tbaa !5
  %3125 = getelementptr inbounds %struct.ImGuiContext, ptr %3124, i32 0, i32 268
  %3126 = load i8, ptr %3125, align 4, !tbaa !319
  %3127 = sext i8 %3126 to i32
  %3128 = load ptr, ptr %8, align 8, !tbaa !5
  %3129 = getelementptr inbounds %struct.ImGuiContext, ptr %3128, i32 0, i32 29
  %3130 = getelementptr inbounds %struct.ImVector.3, ptr %3129, i32 0, i32 0
  %3131 = load i32, ptr %3130, align 8, !tbaa !114
  %3132 = icmp eq i32 %3127, %3131
  br i1 %3132, label %3133, label %3156

3133:                                             ; preds = %3123, %3114
  %3134 = load ptr, ptr %10, align 8, !tbaa !5
  %3135 = getelementptr inbounds %struct.ImGuiWindow, ptr %3134, i32 0, i32 55
  %3136 = load i8, ptr %3135, align 2, !tbaa !211
  %3137 = sext i8 %3136 to i32
  %3138 = icmp sgt i32 %3137, 0
  br i1 %3138, label %3139, label %3144

3139:                                             ; preds = %3133
  %3140 = load ptr, ptr %10, align 8, !tbaa !5
  %3141 = getelementptr inbounds %struct.ImGuiWindow, ptr %3140, i32 0, i32 55
  %3142 = load i8, ptr %3141, align 2, !tbaa !211
  %3143 = add i8 %3142, 1
  store i8 %3143, ptr %3141, align 2, !tbaa !211
  br label %3144

3144:                                             ; preds = %3139, %3133
  %3145 = load ptr, ptr %10, align 8, !tbaa !5
  %3146 = getelementptr inbounds %struct.ImGuiWindow, ptr %3145, i32 0, i32 56
  %3147 = load i8, ptr %3146, align 1, !tbaa !212
  %3148 = sext i8 %3147 to i32
  %3149 = icmp sgt i32 %3148, 0
  br i1 %3149, label %3150, label %3155

3150:                                             ; preds = %3144
  %3151 = load ptr, ptr %10, align 8, !tbaa !5
  %3152 = getelementptr inbounds %struct.ImGuiWindow, ptr %3151, i32 0, i32 56
  %3153 = load i8, ptr %3152, align 1, !tbaa !212
  %3154 = add i8 %3153, 1
  store i8 %3154, ptr %3152, align 1, !tbaa !212
  br label %3155

3155:                                             ; preds = %3150, %3144
  store i1 false, ptr %4, align 1
  store i32 1, ptr %99, align 4
  br label %3163

3156:                                             ; preds = %3123, %3117
  br label %3157

3157:                                             ; preds = %3156, %3103
  %3158 = load ptr, ptr %10, align 8, !tbaa !5
  %3159 = getelementptr inbounds %struct.ImGuiWindow, ptr %3158, i32 0, i32 41
  %3160 = load i8, ptr %3159, align 1, !tbaa !316, !range !93, !noundef !94
  %3161 = trunc i8 %3160 to i1
  %3162 = xor i1 %3161, true
  store i1 %3162, ptr %4, align 1
  store i32 1, ptr %99, align 4
  br label %3163

3163:                                             ; preds = %3157, %3155
  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 112, 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
  %3164 = load i1, ptr %4, align 1
  ret i1 %3164
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(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(107) 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(107)) 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(107)) #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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 16332}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14592, !6, i64 15752, !17, i64 15760, !17, i64 15764, !17, i64 15768, !17, i64 15772, !23, i64 15776, !26, i64 16312, !10, i64 16320, !10, i64 16324, !10, i64 16328, !14, i64 16332, !14, i64 16333, !14, i64 16334, !14, i64 16335, !14, i64 16336, !6, i64 16344, !7, i64 16352, !27, i64 16368, !27, i64 16384, !19, i64 16400, !10, i64 16404, !28, i64 16408, !28, i64 16424, !28, i64 16440, !29, i64 16456, !30, i64 16472, !10, i64 16488, !16, i64 16492, !10, i64 16500, !6, i64 16504, !6, i64 16512, !6, i64 16520, !6, i64 16528, !6, i64 16536, !6, i64 16544, !16, i64 16552, !10, i64 16560, !10, i64 16564, !17, i64 16568, !16, i64 16572, !16, i64 16580, !10, i64 16588, !10, i64 16592, !10, i64 16596, !17, i64 16600, !17, i64 16604, !14, i64 16608, !14, i64 16609, !14, i64 16610, !10, i64 16612, !10, i64 16616, !17, i64 16620, !14, i64 16624, !14, i64 16625, !14, i64 16626, !14, i64 16627, !14, i64 16628, !14, i64 16629, !14, i64 16630, !10, i64 16631, !16, i64 16632, !6, i64 16640, !32, i64 16648, !10, i64 16652, !14, i64 16656, !14, i64 16657, !6, i64 16664, !10, i64 16672, !17, i64 16676, !26, i64 16680, !26, i64 16688, !26, i64 16696, !33, i64 16704, !7, i64 16724, !34, i64 18576, !10, i64 18920, !14, i64 18924, !10, i64 18928, !10, i64 18932, !10, i64 18936, !10, i64 18940, !36, i64 18944, !39, i64 19000, !41, i64 19080, !14, i64 19192, !10, i64 19196, !42, i64 19200, !43, i64 19216, !44, i64 19232, !45, i64 19248, !46, i64 19264, !47, i64 19280, !48, i64 19296, !48, i64 19312, !49, i64 19328, !50, i64 19344, !6, i64 19360, !10, i64 19368, !10, i64 19372, !51, i64 19376, !10, i64 19380, !10, i64 19384, !10, i64 19388, !10, i64 19392, !45, i64 19400, !10, i64 19416, !17, i64 19420, !10, i64 19424, !10, i64 19428, !32, i64 19432, !37, i64 19440, !14, i64 19448, !14, i64 19449, !14, i64 19450, !14, i64 19451, !14, i64 19452, !14, i64 19453, !14, i64 19454, !52, i64 19456, !14, i64 19512, !14, i64 19513, !14, i64 19514, !10, i64 19516, !10, i64 19520, !10, i64 19524, !22, i64 19528, !22, i64 19532, !22, i64 19536, !40, i64 19540, !40, i64 19556, !10, i64 19572, !10, i64 19576, !10, i64 19580, !52, i64 19584, !52, i64 19640, !52, i64 19696, !52, i64 19752, !10, i64 19808, !10, i64 19812, !10, i64 19816, !10, i64 19820, !14, i64 19824, !14, i64 19825, !10, i64 19828, !10, i64 19832, !6, i64 19840, !6, i64 19848, !6, i64 19856, !17, i64 19864, !17, i64 19868, !14, i64 19872, !53, i64 19876, !16, i64 19880, !16, i64 19888, !17, i64 19896, !14, i64 19900, !14, i64 19901, !14, i64 19902, !10, i64 19904, !10, i64 19908, !10, i64 19912, !54, i64 19920, !40, i64 19984, !40, i64 20000, !10, i64 20016, !10, i64 20020, !17, i64 20024, !10, i64 20028, !10, i64 20032, !10, i64 20036, !10, i64 20040, !55, i64 20048, !7, i64 20064, !10, i64 20080, !56, i64 20088, !6, i64 20104, !10, i64 20112, !10, i64 20116, !57, i64 20120, !58, i64 20136, !60, i64 20176, !61, i64 20192, !6, i64 20208, !62, i64 20216, !64, i64 20256, !65, i64 20272, !66, i64 20288, !6, i64 20392, !10, i64 20400, !67, i64 20408, !68, i64 20424, !10, i64 20464, !10, i64 20468, !17, i64 20472, !17, i64 20476, !10, i64 20480, !10, i64 20484, !10, i64 20488, !17, i64 20492, !16, i64 20496, !70, i64 20504, !74, i64 24240, !75, i64 24264, !10, i64 24384, !38, i64 24388, !10, i64 24396, !10, i64 24400, !10, i64 24404, !10, i64 24408, !10, i64 24412, !17, i64 24416, !17, i64 24420, !10, i64 24424, !24, i64 24428, !77, i64 24444, !40, i64 24492, !14, i64 24508, !18, i64 24510, !17, i64 24512, !17, i64 24516, !17, i64 24520, !14, i64 24524, !14, i64 24525, !17, i64 24528, !17, i64 24532, !17, i64 24536, !18, i64 24540, !18, i64 24542, !18, i64 24544, !71, i64 24552, !78, i64 24568, !79, i64 24584, !81, i64 24688, !81, i64 24704, !14, i64 24720, !17, i64 24724, !82, i64 24728, !83, i64 24744, !84, i64 24760, !85, i64 24776, !86, i64 24792, !10, i64 24808, !7, i64 24816, !14, i64 24888, !87, i64 24892, !6, i64 24896, !82, i64 24904, !6, i64 24920, !6, i64 24928, !17, i64 24936, !14, i64 24940, !10, i64 24944, !10, i64 24948, !10, i64 24952, !10, i64 24956, !82, i64 24960, !88, i64 24976, !10, i64 25000, !7, i64 25004, !7, i64 25005, !14, i64 25006, !10, i64 25008, !7, i64 25012, !14, i64 25013, !7, i64 25014, !10, i64 25016, !17, i64 25020, !24, i64 25024, !89, i64 25040, !90, i64 25072, !92, i64 25112, !7, i64 25172, !10, i64 25412, !10, i64 25416, !17, i64 25420, !10, i64 25424, !10, i64 25428, !10, i64 25432, !71, i64 25440, !7, i64 25456}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !17, i64 56, !14, i64 60, !6, i64 64, !16, i64 72, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !14, i64 116, !14, i64 117, !14, i64 118, !14, i64 119, !14, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !18, i64 216, !14, i64 218, !14, i64 219, !14, i64 220, !14, i64 221, !14, i64 222, !14, i64 223, !14, i64 224, !17, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !16, i64 248, !6, i64 256, !16, i64 264, !7, i64 272, !17, i64 280, !17, i64 284, !19, i64 288, !14, i64 292, !14, i64 293, !14, i64 294, !14, i64 295, !10, i64 296, !7, i64 300, !14, i64 10956, !16, i64 10960, !7, i64 10968, !7, i64 11008, !7, i64 11048, !7, i64 11053, !7, i64 11058, !7, i64 11068, !7, i64 11078, !7, i64 11083, !7, i64 11088, !14, i64 11093, !14, i64 11094, !7, i64 11096, !7, i64 11116, !7, i64 11136, !17, i64 11156, !14, i64 11160, !14, i64 11161, !7, i64 11162, !14, i64 11163, !18, i64 11164, !20, i64 11168, !7, i64 11184, !7, i64 13848, !7, i64 14516}
!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, !22, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !16, i64 160, !22, i64 168, !16, i64 172, !16, i64 180, !17, i64 188, !16, i64 192, !16, i64 200, !16, i64 208, !16, i64 216, !17, i64 224, !14, i64 228, !14, i64 229, !14, i64 230, !17, i64 232, !17, i64 236, !7, i64 240, !17, i64 1136, !17, i64 1140, !17, i64 1144, !10, i64 1148, !10, i64 1152}
!22 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!23 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !24, i64 32, !10, i64 48, !25, i64 56, !7, i64 72, !17, i64 456, !7, i64 460, !6, i64 528}
!24 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!25 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"double", !7, i64 0}
!27 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS12ImGuiStorage", !31, i64 0}
!31 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!33 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!34 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !35, i64 312, !35, i64 328}
!35 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !37, i64 16, !17, i64 24, !10, i64 28, !10, i64 32, !14, i64 36, !7, i64 37, !38, i64 38, !10, i64 48}
!37 = !{!"long long", !7, i64 0}
!38 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!39 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !40, i64 12, !40, i64 28, !40, i64 44, !40, i64 60, !10, i64 76}
!40 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!41 = !{!"_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, !40, i64 64, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100, !10, i64 108}
!42 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!52 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !40, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !37, i64 48}
!53 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!54 = !{!"_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}
!55 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS6ImPoolI10ImGuiTableE", !59, i64 0, !30, i64 16, !10, i64 32, !10, i64 36}
!59 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !63, i64 0, !30, i64 16, !10, i64 32, !10, i64 36}
!63 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 9, !16, i64 12, !16, i64 20, !16, i64 28, !6, i64 40, !14, i64 48, !40, i64 52, !40, i64 68, !40, i64 84}
!67 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !69, i64 0, !30, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !71, i64 40, !71, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !72, 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}
!71 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_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, !73, i64 32}
!73 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!74 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !71, i64 8}
!75 = !{!"_ZTS6ImFont", !60, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !76, 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}
!76 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS21ImGuiComboPreviewData", !40, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!78 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS22ImGuiTypingSelectState", !80, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !17, i64 96, !14, i64 100}
!80 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!81 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!82 = !{!"_ZTS15ImGuiTextBuffer", !71, i64 0}
!83 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !71, i64 0}
!85 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !71, i64 0}
!86 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!88 = !{!"_ZTS14ImGuiTextIndex", !46, i64 0, !10, i64 16}
!89 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!90 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !91, i64 16, !14, i64 32, !17, i64 36}
!91 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!92 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !18, i64 8, !7, i64 12}
!93 = !{i8 0, i8 2}
!94 = !{}
!95 = !{!13, !10, i64 16324}
!96 = !{!13, !10, i64 16320}
!97 = !{!14, !14, i64 0}
!98 = !{!13, !10, i64 16500}
!99 = !{!100, !10, i64 16}
!100 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !14, i64 205, !14, i64 206, !14, i64 207, !14, i64 208, !14, i64 209, !14, i64 210, !14, i64 211, !14, i64 212, !14, i64 213, !7, i64 214, !7, i64 215, !18, i64 216, !18, i64 218, !18, i64 220, !18, i64 222, !18, i64 224, !7, i64 226, !7, i64 227, !14, i64 228, !22, i64 232, !7, i64 236, !7, i64 237, !7, i64 238, !7, i64 239, !10, i64 240, !10, i64 241, !10, i64 242, !16, i64 244, !16, i64 252, !78, i64 264, !101, i64 280, !40, i64 512, !40, i64 528, !40, i64 544, !40, i64 560, !40, i64 576, !40, i64 592, !40, i64 608, !104, i64 624, !104, i64 628, !10, i64 632, !17, i64 636, !17, i64 640, !30, i64 648, !105, i64 664, !17, i64 680, !10, i64 684, !6, i64 688, !106, i64 696, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !7, i64 960, !7, i64 968, !7, i64 1000, !10, i64 1016, !10, i64 1020, !10, i64 1024, !14, i64 1028}
!101 = !{!"_ZTS19ImGuiWindowTempData", !16, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !17, i64 56, !17, i64 60, !14, i64 64, !14, i64 65, !102, i64 68, !102, i64 72, !102, i64 76, !16, i64 80, !51, i64 88, !18, i64 92, !18, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !103, i64 108, !10, i64 136, !10, i64 140, !28, 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, !60, i64 200, !60, i64 216}
!102 = !{!"_ZTS6ImVec1", !17, i64 0}
!103 = !{!"_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}
!104 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!105 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!106 = !{!"_ZTS10ImDrawList", !107, i64 0, !20, i64 16, !108, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !25, i64 80, !109, i64 96, !110, i64 128, !111, i64 152, !112, i64 168, !17, i64 184, !6, i64 192}
!107 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!108 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!109 = !{!"_ZTS15ImDrawCmdHeader", !24, i64 0, !6, i64 16, !10, i64 24}
!110 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !61, i64 8}
!111 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!112 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!113 = !{!100, !10, i64 632}
!114 = !{!13, !10, i64 16456}
!115 = !{!13, !14, i64 16333}
!116 = !{!100, !14, i64 211}
!117 = !{!13, !10, i64 19312}
!118 = !{!100, !10, i64 148}
!119 = !{!120, !10, i64 0}
!120 = !{!"_ZTS14ImGuiPopupData", !10, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !16, i64 36, !16, i64 44}
!121 = !{!120, !6, i64 8}
!122 = !{!100, !14, i64 209}
!123 = !{!100, !10, i64 20}
!124 = !{!13, !10, i64 19080}
!125 = !{!13, !10, i64 19136}
!126 = !{!100, !10, i64 24}
!127 = !{!13, !26, i64 16312}
!128 = !{!100, !17, i64 636}
!129 = !{!100, !18, i64 220}
!130 = !{!13, !10, i64 16488}
!131 = !{!100, !18, i64 222}
!132 = !{!133, !6, i64 0}
!133 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !39, i64 8, !134, i64 88, !14, i64 106}
!134 = !{!"_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}
!135 = !{!100, !6, i64 896}
!136 = !{!100, !10, i64 264}
!137 = !{!13, !6, i64 16504}
!138 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !139, i64 16, i64 4, !139, i64 20, i64 4, !139, i64 24, i64 4, !139, i64 28, i64 4, !139, i64 32, i64 4, !139, i64 36, i64 4, !139, i64 40, i64 4, !139, i64 44, i64 4, !139, i64 48, i64 4, !139, i64 52, i64 4, !139, i64 56, i64 4, !139, i64 60, i64 4, !139, i64 64, i64 4, !139, i64 68, i64 4, !139, i64 72, i64 4, !139, i64 76, i64 4, !9}
!139 = !{!17, !17, i64 0}
!140 = !{!13, !10, i64 18936}
!141 = !{!133, !14, i64 106}
!142 = !{!13, !10, i64 24396}
!143 = !{!100, !6, i64 904}
!144 = !{!100, !6, i64 944}
!145 = !{!13, !10, i64 18932}
!146 = !{!100, !10, i64 1016}
!147 = !{!100, !51, i64 368}
!148 = !{!120, !10, i64 24}
!149 = !{!13, !10, i64 19084}
!150 = !{i64 0, i64 4, !139, i64 4, i64 4, !139}
!151 = !{!13, !10, i64 19088}
!152 = !{!13, !17, i64 19112}
!153 = !{!13, !17, i64 19116}
!154 = !{!100, !17, i64 56}
!155 = !{!100, !17, i64 60}
!156 = !{!13, !17, i64 19128}
!157 = !{!100, !17, i64 168}
!158 = !{!100, !17, i64 176}
!159 = !{!13, !17, i64 19132}
!160 = !{!100, !17, i64 172}
!161 = !{!100, !17, i64 180}
!162 = !{!13, !14, i64 19140}
!163 = !{!13, !10, i64 19092}
!164 = !{!100, !6, i64 912}
!165 = !{!100, !14, i64 208}
!166 = !{!100, !7, i64 237}
!167 = !{!100, !14, i64 202}
!168 = !{!100, !14, i64 213}
!169 = !{i64 0, i64 4, !139, i64 4, i64 4, !139, i64 8, i64 4, !139, i64 12, i64 4, !139}
!170 = !{!100, !6, i64 688}
!171 = !{!100, !10, i64 456}
!172 = !{!100, !14, i64 1028}
!173 = !{!13, !6, i64 19856}
!174 = !{!100, !6, i64 8}
!175 = !{!100, !10, i64 136}
!176 = !{!177, !177, i64 0}
!177 = !{!"long", !7, i64 0}
!178 = !{!100, !7, i64 236}
!179 = !{!100, !7, i64 238}
!180 = !{!100, !17, i64 48}
!181 = !{!100, !17, i64 52}
!182 = !{!21, !17, i64 48}
!183 = !{!100, !17, i64 100}
!184 = !{!21, !17, i64 56}
!185 = !{!21, !17, i64 20}
!186 = !{!21, !17, i64 12}
!187 = !{!100, !17, i64 88}
!188 = !{!21, !17, i64 76}
!189 = !{!13, !17, i64 19180}
!190 = !{!100, !17, i64 380}
!191 = !{!13, !17, i64 19184}
!192 = !{!100, !17, i64 384}
!193 = !{!13, !17, i64 15760}
!194 = !{!13, !17, i64 14656}
!195 = !{!100, !17, i64 104}
!196 = !{!100, !17, i64 108}
!197 = !{!100, !17, i64 80}
!198 = !{!100, !17, i64 84}
!199 = !{!13, !6, i64 16512}
!200 = !{!13, !10, i64 16592}
!201 = !{!13, !10, i64 16596}
!202 = !{!18, !18, i64 0}
!203 = !{!100, !14, i64 206}
!204 = !{!100, !14, i64 205}
!205 = !{!100, !17, i64 112}
!206 = !{!100, !17, i64 120}
!207 = !{!100, !17, i64 116}
!208 = !{!100, !17, i64 124}
!209 = !{!16, !17, i64 0}
!210 = !{!16, !17, i64 4}
!211 = !{!100, !7, i64 226}
!212 = !{!100, !7, i64 227}
!213 = !{!100, !14, i64 228}
!214 = !{!100, !22, i64 232}
!215 = !{!100, !10, i64 424}
!216 = !{!100, !17, i64 244}
!217 = !{!21, !17, i64 44}
!218 = !{!21, !17, i64 52}
!219 = !{!21, !17, i64 16}
!220 = !{!100, !17, i64 96}
!221 = !{!13, !14, i64 95}
!222 = !{!100, !7, i64 214}
!223 = !{!100, !7, i64 215}
!224 = !{!100, !14, i64 201}
!225 = !{!21, !17, i64 116}
!226 = !{!100, !14, i64 200}
!227 = !{!100, !17, i64 192}
!228 = !{!100, !17, i64 196}
!229 = !{!100, !17, i64 40}
!230 = !{!100, !17, i64 528}
!231 = !{!100, !17, i64 44}
!232 = !{!100, !17, i64 532}
!233 = !{!100, !17, i64 536}
!234 = !{!100, !17, i64 540}
!235 = !{!21, !17, i64 72}
!236 = !{!100, !17, i64 544}
!237 = !{!100, !17, i64 548}
!238 = !{!100, !17, i64 552}
!239 = !{!100, !17, i64 556}
!240 = !{!100, !17, i64 640}
!241 = !{!100, !17, i64 64}
!242 = !{!100, !17, i64 160}
!243 = !{!100, !17, i64 68}
!244 = !{!100, !17, i64 92}
!245 = !{!100, !17, i64 164}
!246 = !{!100, !17, i64 132}
!247 = !{!100, !17, i64 128}
!248 = !{!106, !10, i64 0}
!249 = !{!250, !10, i64 32}
!250 = !{!"_ZTS9ImDrawCmd", !24, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!251 = !{!13, !6, i64 15752}
!252 = !{!75, !6, i64 64}
!253 = !{!254, !6, i64 8}
!254 = !{!"_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, !44, i64 88, !255, i64 104, !256, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!255 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!256 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!257 = !{!106, !10, i64 32}
!258 = !{!13, !6, i64 19840}
!259 = !{!13, !6, i64 19360}
!260 = !{!100, !6, i64 928}
!261 = !{!100, !17, i64 152}
!262 = !{!100, !17, i64 560}
!263 = !{!100, !17, i64 156}
!264 = !{!100, !17, i64 564}
!265 = !{!100, !17, i64 568}
!266 = !{!100, !17, i64 572}
!267 = !{!100, !17, i64 608}
!268 = !{!100, !17, i64 612}
!269 = !{!100, !17, i64 616}
!270 = !{!100, !17, i64 620}
!271 = !{!100, !17, i64 348}
!272 = !{!100, !17, i64 356}
!273 = !{!100, !17, i64 352}
!274 = !{!26, !26, i64 0}
!275 = !{!100, !17, i64 296}
!276 = !{!100, !17, i64 300}
!277 = !{!100, !17, i64 340}
!278 = !{!100, !17, i64 336}
!279 = !{!100, !14, i64 345}
!280 = !{!100, !14, i64 344}
!281 = !{!100, !18, i64 374}
!282 = !{!100, !18, i64 372}
!283 = !{!100, !14, i64 376}
!284 = !{!100, !14, i64 377}
!285 = !{!100, !14, i64 378}
!286 = !{!100, !14, i64 379}
!287 = !{!100, !10, i64 416}
!288 = !{!100, !10, i64 420}
!289 = !{!100, !6, i64 440}
!290 = !{!100, !6, i64 448}
!291 = !{!100, !10, i64 460}
!292 = !{!100, !10, i64 464}
!293 = !{!100, !17, i64 472}
!294 = !{!100, !17, i64 476}
!295 = !{!100, !10, i64 468}
!296 = !{!40, !17, i64 0}
!297 = !{!40, !17, i64 4}
!298 = !{!40, !17, i64 8}
!299 = !{!40, !17, i64 12}
!300 = !{!100, !18, i64 626}
!301 = !{!100, !18, i64 624}
!302 = !{!13, !10, i64 18940}
!303 = !{!100, !10, i64 140}
!304 = !{!100, !14, i64 204}
!305 = !{!100, !18, i64 216}
!306 = !{!13, !14, i64 19452}
!307 = !{!100, !6, i64 936}
!308 = !{!13, !14, i64 24888}
!309 = !{!100, !17, i64 512}
!310 = !{!100, !17, i64 520}
!311 = !{!100, !17, i64 516}
!312 = !{!100, !17, i64 524}
!313 = !{!21, !17, i64 0}
!314 = !{!100, !14, i64 210}
!315 = !{!100, !7, i64 239}
!316 = !{!100, !14, i64 207}
!317 = !{!13, !14, i64 125}
!318 = !{!13, !14, i64 126}
!319 = !{!13, !7, i64 25012}


; 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, i8, [5 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32 }
%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 [68 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(200), 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 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(1029)) 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
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 = alloca %struct.ImRect, align 8
  %43 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %43, i64 14592
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %45

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

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

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %43, i64 16332
  %49 = load i8, ptr %48, align 4, !tbaa !10, !range !92, !noundef !93
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %52, label %51

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

52:                                               ; preds = %47
  %53 = getelementptr inbounds i8, ptr %43, i64 16324
  %54 = load i32, ptr %53, align 4, !tbaa !94
  %55 = getelementptr inbounds i8, ptr %43, i64 16320
  %56 = load i32, ptr %55, align 8, !tbaa !95
  %.not354 = icmp eq i32 %54, %56
  br i1 %.not354, label %57, label %58

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

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

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

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

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

71:                                               ; preds = %70, %63
  %72 = and i32 %2, 197120
  %73 = icmp eq i32 %72, 197120
  %74 = or i32 %2, 6
  %spec.select = select i1 %73, i32 %74, i32 %2
  %75 = load i32, ptr %55, align 8, !tbaa !95
  %76 = getelementptr inbounds i8, ptr %64, i64 632
  %77 = load i32, ptr %76, align 8, !tbaa !111
  %.not355 = icmp eq i32 %77, %75
  %78 = getelementptr inbounds i8, ptr %43, i64 16456
  %79 = load i32, ptr %78, align 8, !tbaa !112
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %71
  %82 = getelementptr inbounds i8, ptr %43, i64 16333
  %83 = load i8, ptr %82, align 1, !tbaa !113, !range !92, !noundef !93
  br label %84

84:                                               ; preds = %81, %71
  %85 = phi i8 [ 0, %71 ], [ %83, %81 ]
  %86 = getelementptr inbounds i8, ptr %64, i64 211
  store i8 %85, ptr %86, align 1, !tbaa !114
  %87 = add nsw i32 %75, -1
  %88 = icmp slt i32 %77, %87
  %89 = and i32 %spec.select, 67108864
  %.not356 = icmp eq i32 %89, 0
  br i1 %.not356, label %106, label %90

90:                                               ; preds = %84
  %91 = getelementptr inbounds i8, ptr %43, i64 19296
  %92 = getelementptr inbounds i8, ptr %43, i64 19312
  %93 = load i32, ptr %92, align 8, !tbaa !115
  %94 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %91, i32 noundef %93)
  %95 = getelementptr inbounds i8, ptr %64, i64 148
  %96 = load i32, ptr %95, align 4, !tbaa !116
  %97 = load i32, ptr %94, align 8, !tbaa !117
  %98 = icmp ne i32 %96, %97
  %99 = getelementptr inbounds i8, ptr %94, i64 8
  %100 = load ptr, ptr %99, align 8, !tbaa !119
  %101 = icmp ne ptr %64, %100
  %102 = or i1 %98, %101
  %103 = or i1 %88, %102
  %104 = getelementptr inbounds i8, ptr %64, i64 209
  %105 = zext i1 %103 to i8
  store i8 %105, ptr %104, align 1, !tbaa !120
  br i1 %103, label %109, label %110

106:                                              ; preds = %84
  %107 = getelementptr inbounds i8, ptr %64, i64 209
  %108 = zext i1 %88 to i8
  store i8 %108, ptr %107, align 1, !tbaa !120
  br i1 %88, label %109, label %110

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

110:                                              ; preds = %90, %109, %106
  %.0315.in476 = phi i1 [ false, %90 ], [ true, %109 ], [ false, %106 ]
  br i1 %.not355, label %132, label %111

111:                                              ; preds = %110
  tail call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef nonnull %64, i1 noundef zeroext %60, i32 noundef %spec.select)
  %112 = getelementptr inbounds i8, ptr %64, i64 20
  store i32 %spec.select, ptr %112, align 4, !tbaa !121
  %113 = getelementptr inbounds i8, ptr %43, i64 19080
  %114 = load i32, ptr %113, align 8, !tbaa !122
  %115 = and i32 %114, 256
  %.not357 = icmp eq i32 %115, 0
  br i1 %.not357, label %119, label %116

116:                                              ; preds = %111
  %117 = getelementptr inbounds i8, ptr %43, i64 19136
  %118 = load i32, ptr %117, align 8, !tbaa !123
  br label %119

119:                                              ; preds = %111, %116
  %120 = phi i32 [ %118, %116 ], [ 0, %111 ]
  %121 = getelementptr inbounds i8, ptr %64, i64 24
  store i32 %120, ptr %121, align 8, !tbaa !124
  store i32 %75, ptr %76, align 8, !tbaa !111
  %122 = getelementptr inbounds i8, ptr %43, i64 16312
  %123 = load double, ptr %122, align 8, !tbaa !125
  %124 = fptrunc double %123 to float
  %125 = getelementptr inbounds i8, ptr %64, i64 636
  store float %124, ptr %125, align 4, !tbaa !126
  %126 = getelementptr inbounds i8, ptr %64, i64 220
  store i16 0, ptr %126, align 4, !tbaa !127
  %127 = getelementptr inbounds i8, ptr %43, i64 16488
  %128 = load i32, ptr %127, align 8, !tbaa !128
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %127, align 8, !tbaa !128
  %130 = trunc i32 %128 to i16
  %131 = getelementptr inbounds i8, ptr %64, i64 222
  store i16 %130, ptr %131, align 2, !tbaa !129
  br label %135

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

135:                                              ; preds = %132, %119
  %.1 = phi i32 [ %spec.select, %119 ], [ %134, %132 ]
  %136 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  br i1 %136, label %140, label %137

137:                                              ; preds = %135
  %138 = tail call noundef nonnull align 8 dereferenceable(107) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %139 = load ptr, ptr %138, align 8, !tbaa !130
  br label %140

140:                                              ; preds = %135, %137
  %141 = phi ptr [ %139, %137 ], [ null, %135 ]
  br i1 %.not355, label %145, label %142

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

145:                                              ; preds = %140
  %146 = getelementptr inbounds i8, ptr %64, i64 896
  %147 = load ptr, ptr %146, align 8, !tbaa !133
  br label %148

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

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

154:                                              ; preds = %148
  %155 = getelementptr inbounds i8, ptr %64, i64 264
  %156 = load i32, ptr %155, align 8, !tbaa !134
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %159

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

159:                                              ; preds = %158, %154
  %160 = getelementptr inbounds i8, ptr %43, i64 16504
  store ptr %64, ptr %160, align 8, !tbaa !135
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %5) #12
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(107) %5)
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %161, ptr %5, align 8, !tbaa !130
  %162 = getelementptr inbounds i8, ptr %43, i64 19000
  %163 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %163, ptr noundef nonnull align 8 dereferenceable(80) %162, i64 80, i1 false), !tbaa.struct !136
  %164 = getelementptr inbounds i8, ptr %5, i64 88
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %164, ptr noundef nonnull %43)
  %165 = and i32 %.1, 33554432
  %.not374 = icmp eq i32 %165, 0
  br i1 %.not374, label %171, label %166

166:                                              ; preds = %159
  %167 = getelementptr inbounds i8, ptr %43, i64 18936
  %168 = load i32, ptr %167, align 8, !tbaa !139
  %169 = and i32 %168, 1024
  %170 = icmp ne i32 %169, 0
  br label %171

171:                                              ; preds = %166, %159
  %172 = phi i1 [ false, %159 ], [ %170, %166 ]
  %173 = getelementptr inbounds i8, ptr %5, i64 106
  %174 = zext i1 %172 to i8
  store i8 %174, ptr %173, align 2, !tbaa !140
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(107) %5)
  %175 = and i32 %.1, 268435456
  %.not361 = icmp eq i32 %175, 0
  br i1 %.not361, label %180, label %176

176:                                              ; preds = %171
  %177 = getelementptr inbounds i8, ptr %43, i64 24396
  %178 = load i32, ptr %177, align 4, !tbaa !141
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %177, align 4, !tbaa !141
  br label %180

180:                                              ; preds = %176, %171
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not355, label %186, label %181

181:                                              ; preds = %180
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre, i32 noundef %.1, ptr noundef %149)
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds i8, ptr %182, i64 904
  store ptr %141, ptr %183, align 8, !tbaa !142
  %184 = select i1 %152, ptr %141, ptr null
  %185 = getelementptr inbounds i8, ptr %182, i64 944
  store ptr %184, ptr %185, align 8, !tbaa !143
  br label %186

186:                                              ; preds = %181, %180
  %187 = phi ptr [ %182, %181 ], [ %.pre, %180 ]
  %188 = getelementptr inbounds i8, ptr %187, i64 24
  %189 = load i32, ptr %188, align 8, !tbaa !124
  %190 = and i32 %189, 256
  %.not362 = icmp eq i32 %190, 0
  %191 = getelementptr inbounds i8, ptr %43, i64 18932
  %192 = getelementptr inbounds i8, ptr %187, i64 16
  %.in = select i1 %.not362, ptr %192, ptr %191
  %193 = load i32, ptr %.in, align 4, !tbaa !137
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %193)
  %194 = load i32, ptr %191, align 4, !tbaa !144
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i64 1016
  store i32 %194, ptr %196, align 8, !tbaa !145
  %197 = and i32 %.1, 67108864
  %.not363 = icmp eq i32 %197, 0
  br i1 %.not363, label %211, label %198

198:                                              ; preds = %186
  %199 = getelementptr inbounds i8, ptr %43, i64 19296
  %200 = getelementptr inbounds i8, ptr %43, i64 19312
  %201 = load i32, ptr %200, align 8, !tbaa !115
  %202 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %199, i32 noundef %201)
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds i8, ptr %202, i64 8
  store ptr %203, ptr %204, align 8, !tbaa !119
  %205 = getelementptr inbounds i8, ptr %141, i64 368
  %206 = load i32, ptr %205, align 8, !tbaa !146
  %207 = getelementptr inbounds i8, ptr %202, i64 24
  store i32 %206, ptr %207, align 8, !tbaa !147
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %200, ptr noundef nonnull align 8 dereferenceable(52) %202)
  %208 = load i32, ptr %202, align 8, !tbaa !117
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds i8, ptr %209, i64 148
  store i32 %208, ptr %210, align 4, !tbaa !116
  br label %211

211:                                              ; preds = %198, %186
  %212 = phi ptr [ %209, %198 ], [ %195, %186 ]
  %213 = getelementptr inbounds i8, ptr %43, i64 19080
  %214 = load i32, ptr %213, align 8, !tbaa !122
  %215 = and i32 %214, 1
  %.not364 = icmp eq i32 %215, 0
  br i1 %.not364, label %242, label %216

216:                                              ; preds = %211
  %217 = getelementptr inbounds i8, ptr %212, i64 240
  %218 = load i32, ptr %217, align 8
  %219 = shl i32 %218, 24
  %220 = ashr exact i32 %219, 24
  %221 = getelementptr inbounds i8, ptr %43, i64 19084
  %222 = load i32, ptr %221, align 4, !tbaa !148
  %223 = and i32 %220, %222
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %238

225:                                              ; preds = %216
  %226 = getelementptr inbounds i8, ptr %43, i64 19104
  %227 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %226)
  %228 = fcmp ogt float %227, 0x3EE4F8B580000000
  %.pre523 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %228, label %229, label %._crit_edge

._crit_edge:                                      ; preds = %225
  %.pre524 = load i32, ptr %221, align 4, !tbaa !148
  br label %238

229:                                              ; preds = %225
  %230 = getelementptr inbounds i8, ptr %43, i64 19096
  %231 = getelementptr inbounds i8, ptr %.pre523, i64 244
  %232 = load i64, ptr %230, align 8
  store i64 %232, ptr %231, align 4
  %233 = getelementptr inbounds i8, ptr %.pre523, i64 252
  %234 = load i64, ptr %226, align 8
  store i64 %234, ptr %233, align 4
  %235 = getelementptr inbounds i8, ptr %.pre523, i64 240
  %236 = load i32, ptr %235, align 8
  %237 = and i32 %236, -15
  store i32 %237, ptr %235, align 8
  br label %242

238:                                              ; preds = %._crit_edge, %216
  %239 = phi i32 [ %.pre524, %._crit_edge ], [ %222, %216 ]
  %240 = phi ptr [ %.pre523, %._crit_edge ], [ %212, %216 ]
  %241 = getelementptr inbounds i8, ptr %43, i64 19096
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %240, ptr noundef nonnull align 4 dereferenceable(8) %241, i32 noundef %239)
  br label %242

242:                                              ; preds = %229, %238, %211
  %.0316.shrunk = phi i1 [ true, %229 ], [ %224, %238 ], [ false, %211 ]
  %243 = load i32, ptr %213, align 8, !tbaa !122
  %244 = and i32 %243, 2
  %.not365 = icmp eq i32 %244, 0
  br i1 %.not365, label %284, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 240
  %248 = load i32, ptr %247, align 8
  %249 = shl i32 %248, 16
  %250 = ashr i32 %249, 24
  %251 = getelementptr inbounds i8, ptr %43, i64 19088
  %252 = load i32, ptr %251, align 8, !tbaa !149
  %253 = and i32 %250, %252
  %.not366 = icmp eq i32 %253, 0
  br i1 %.not366, label %.thread, label %254

254:                                              ; preds = %245
  %255 = getelementptr inbounds i8, ptr %43, i64 19112
  %256 = load float, ptr %255, align 8, !tbaa !150
  %257 = fcmp ogt float %256, 0.000000e+00
  %258 = getelementptr inbounds i8, ptr %43, i64 19116
  %259 = load float, ptr %258, align 4, !tbaa !151
  %260 = fcmp ogt float %259, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %245, %254
  %261 = phi i1 [ %257, %254 ], [ false, %245 ]
  %262 = phi i1 [ %260, %254 ], [ false, %245 ]
  %263 = getelementptr inbounds i8, ptr %246, i64 24
  %264 = load i32, ptr %263, align 8, !tbaa !124
  %265 = and i32 %264, 4
  %.not368 = icmp ne i32 %265, 0
  %266 = and i32 %248, 1024
  %267 = icmp eq i32 %266, 0
  %or.cond506 = and i1 %267, %.not368
  br i1 %or.cond506, label %268, label %272

268:                                              ; preds = %.thread
  %269 = getelementptr inbounds i8, ptr %246, i64 56
  %270 = load float, ptr %269, align 8, !tbaa !152
  %271 = getelementptr inbounds i8, ptr %43, i64 19112
  store float %270, ptr %271, align 8, !tbaa !150
  br label %272

272:                                              ; preds = %268, %.thread
  %273 = and i32 %264, 8
  %.not369 = icmp eq i32 %273, 0
  br i1 %.not369, label %282, label %274

274:                                              ; preds = %272
  %275 = load i32, ptr %247, align 8
  %276 = and i32 %275, 1024
  %277 = icmp eq i32 %276, 0
  br i1 %277, label %278, label %282

278:                                              ; preds = %274
  %279 = getelementptr inbounds i8, ptr %246, i64 60
  %280 = load float, ptr %279, align 4, !tbaa !153
  %281 = getelementptr inbounds i8, ptr %43, i64 19116
  store float %280, ptr %281, align 4, !tbaa !151
  br label %282

282:                                              ; preds = %278, %274, %272
  %283 = getelementptr inbounds i8, ptr %43, i64 19112
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %246, ptr noundef nonnull align 4 dereferenceable(8) %283, i32 noundef %252)
  %.pre525 = load i32, ptr %213, align 8, !tbaa !122
  br label %284

284:                                              ; preds = %282, %242
  %285 = phi i32 [ %.pre525, %282 ], [ %243, %242 ]
  %.0318 = phi i1 [ %262, %282 ], [ false, %242 ]
  %.0317 = phi i1 [ %261, %282 ], [ false, %242 ]
  %286 = and i32 %285, 128
  %.not370 = icmp eq i32 %286, 0
  br i1 %.not370, label %303, label %287

287:                                              ; preds = %284
  %288 = getelementptr inbounds i8, ptr %43, i64 19128
  %289 = load float, ptr %288, align 8, !tbaa !154
  %290 = fcmp ult float %289, 0.000000e+00
  br i1 %290, label %295, label %291

291:                                              ; preds = %287
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds i8, ptr %292, i64 168
  store float %289, ptr %293, align 8, !tbaa !155
  %294 = getelementptr inbounds i8, ptr %292, i64 176
  store float 0.000000e+00, ptr %294, align 8, !tbaa !156
  br label %295

295:                                              ; preds = %291, %287
  %296 = getelementptr inbounds i8, ptr %43, i64 19132
  %297 = load float, ptr %296, align 4, !tbaa !157
  %298 = fcmp ult float %297, 0.000000e+00
  br i1 %298, label %303, label %299

299:                                              ; preds = %295
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 172
  store float %297, ptr %301, align 4, !tbaa !158
  %302 = getelementptr inbounds i8, ptr %300, i64 180
  store float 0.000000e+00, ptr %302, align 4, !tbaa !159
  br label %303

303:                                              ; preds = %295, %299, %284
  %304 = and i32 %285, 4
  %.not371 = icmp eq i32 %304, 0
  br i1 %.not371, label %310, label %305

305:                                              ; preds = %303
  %306 = getelementptr inbounds i8, ptr %43, i64 19120
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i64 80
  %309 = load i64, ptr %306, align 8
  store i64 %309, ptr %308, align 8
  br label %315

310:                                              ; preds = %303
  br i1 %.not355, label %._crit_edge569, label %311

._crit_edge569:                                   ; preds = %310
  %.pre528.pre562.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %315

311:                                              ; preds = %310
  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)
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds i8, ptr %312, i64 80
  %314 = load i64, ptr %6, align 8
  store i64 %314, ptr %313, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  br label %315

315:                                              ; preds = %._crit_edge569, %311, %305
  %.pre528.pre562 = phi ptr [ %.pre528.pre562.pre, %._crit_edge569 ], [ %312, %311 ], [ %307, %305 ]
  %316 = load i32, ptr %213, align 8, !tbaa !122
  %317 = and i32 %316, 8
  %.not372 = icmp eq i32 %317, 0
  br i1 %.not372, label %324, label %318

318:                                              ; preds = %315
  %319 = getelementptr inbounds i8, ptr %43, i64 19140
  %320 = load i8, ptr %319, align 4, !tbaa !160, !range !92, !noundef !93
  %321 = trunc nuw i8 %320 to i1
  %322 = getelementptr inbounds i8, ptr %43, i64 19092
  %323 = load i32, ptr %322, align 4, !tbaa !161
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre528.pre562, i1 noundef zeroext %321, i32 noundef %323)
  %.pre526 = load i32, ptr %213, align 8, !tbaa !122
  %.pre528.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %324

324:                                              ; preds = %318, %315
  %.pre528 = phi ptr [ %.pre528.pre, %318 ], [ %.pre528.pre562, %315 ]
  %325 = phi i32 [ %.pre526, %318 ], [ %316, %315 ]
  %326 = and i32 %325, 32
  %.not373 = icmp eq i32 %326, 0
  br i1 %.not373, label %328, label %327

327:                                              ; preds = %324
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %.pre528, i32 noundef 0)
  %.pre527 = load ptr, ptr %4, align 8, !tbaa !5
  br label %328

328:                                              ; preds = %327, %324
  %329 = phi ptr [ %.pre527, %327 ], [ %.pre528, %324 ]
  %330 = getelementptr inbounds i8, ptr %329, i64 209
  %331 = load i8, ptr %330, align 1, !tbaa !120, !range !92, !noundef !93
  %332 = trunc nuw i8 %331 to i1
  br i1 %332, label %333, label %334

333:                                              ; preds = %328
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %329, i32 noundef 8, i1 noundef zeroext false)
  %.pre529 = load ptr, ptr %4, align 8, !tbaa !5
  br label %334

334:                                              ; preds = %333, %328
  %335 = phi ptr [ %.pre529, %333 ], [ %329, %328 ]
  call void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(ptr noundef %335)
  %336 = load i8, ptr %173, align 2, !tbaa !140, !range !92, !noundef !93
  %337 = trunc nuw i8 %336 to i1
  %.pre554.pre564 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %337, label %338, label %343

338:                                              ; preds = %334
  %339 = getelementptr inbounds i8, ptr %.pre554.pre564, i64 912
  %340 = load ptr, ptr %339, align 8, !tbaa !162
  %341 = icmp eq ptr %340, %.pre554.pre564
  br i1 %341, label %342, label %343

342:                                              ; preds = %338
  call void @_ZN5ImGui29BeginDisabledOverrideReenableEv()
  %.pre554.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %343

343:                                              ; preds = %342, %338, %334
  %.pre554 = phi ptr [ %.pre554.pre, %342 ], [ %.pre554.pre564, %338 ], [ %.pre554.pre564, %334 ]
  store ptr null, ptr %160, align 8, !tbaa !135
  %.phi.trans.insert556 = getelementptr inbounds i8, ptr %.pre554, i64 208
  %.pre557 = load i8, ptr %.phi.trans.insert556, align 8, !tbaa !163, !range !92
  br i1 %.not355, label %._crit_edge555, label %344

344:                                              ; preds = %343
  %345 = trunc nuw i8 %.pre557 to i1
  br i1 %345, label %._crit_edge555, label %346

346:                                              ; preds = %344
  %347 = and i32 %.1, 50331648
  %348 = icmp eq i32 %347, 50331648
  %349 = getelementptr inbounds i8, ptr %.pre554, i64 237
  %350 = load i8, ptr %349, align 1, !tbaa !164
  %351 = icmp slt i8 %350, 1
  %352 = getelementptr inbounds i8, ptr %.pre554, i64 202
  store i8 1, ptr %352, align 2, !tbaa !165
  %353 = icmp ne ptr %1, null
  %354 = getelementptr inbounds i8, ptr %.pre554, i64 213
  %355 = zext i1 %353 to i8
  store i8 %355, ptr %354, align 1, !tbaa !166
  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)
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds i8, ptr %356, i64 592
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !167
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #12
  %358 = getelementptr inbounds i8, ptr %356, i64 264
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %358, i32 noundef 1)
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 688
  %361 = load ptr, ptr %360, align 8, !tbaa !168
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(200) %361)
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  %363 = getelementptr inbounds i8, ptr %362, i64 456
  store i32 -1, ptr %363, align 8, !tbaa !169
  %364 = getelementptr inbounds i8, ptr %362, i64 1028
  %365 = load i8, ptr %364, align 4, !tbaa !170, !range !92, !noundef !93
  %366 = trunc nuw i8 %365 to i1
  br i1 %366, label %367, label %368

367:                                              ; preds = %346
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %362)
  %.pre530.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %368

368:                                              ; preds = %367, %346
  %.pre530 = phi ptr [ %.pre530.pre, %367 ], [ %362, %346 ]
  %369 = getelementptr inbounds i8, ptr %43, i64 19856
  %370 = load ptr, ptr %369, align 8, !tbaa !171
  %.not375 = icmp eq ptr %370, null
  br i1 %.not375, label %.critedge412, label %371

371:                                              ; preds = %368
  %372 = getelementptr inbounds i8, ptr %.pre530, i64 20
  %373 = load i32, ptr %372, align 4, !tbaa !121
  %374 = and i32 %373, 131072
  %375 = icmp ne i32 %374, 0
  %brmerge = or i1 %60, %375
  br i1 %brmerge, label %.critedge412, label %376

376:                                              ; preds = %371
  %377 = getelementptr inbounds i8, ptr %.pre530, i64 8
  %378 = load ptr, ptr %377, align 8, !tbaa !172
  %379 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %378) #15
  %.not376 = icmp eq i32 %379, 0
  br i1 %.not376, label %.critedge412, label %380

380:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %381 = getelementptr inbounds i8, ptr %.pre530, i64 136
  %382 = load i32, ptr %381, align 8, !tbaa !173
  %383 = sext i32 %382 to i64
  store i64 %383, ptr %9, align 8, !tbaa !174
  %384 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %378, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %385 = load ptr, ptr %4, align 8, !tbaa !5
  %386 = getelementptr inbounds i8, ptr %385, i64 8
  store ptr %384, ptr %386, align 8, !tbaa !172
  %387 = load i64, ptr %9, align 8, !tbaa !174
  %388 = trunc i64 %387 to i32
  %389 = getelementptr inbounds i8, ptr %385, i64 136
  store i32 %388, ptr %389, align 8, !tbaa !173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  br label %.critedge412

.critedge412:                                     ; preds = %368, %371, %380, %376
  %390 = phi ptr [ %.pre530, %368 ], [ %.pre530, %371 ], [ %385, %380 ], [ %.pre530, %376 ]
  %391 = getelementptr inbounds i8, ptr %390, i64 64
  %392 = getelementptr inbounds i8, ptr %390, i64 72
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %390, ptr noundef nonnull %391, ptr noundef nonnull %392)
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i64 236
  %395 = load i8, ptr %394, align 4, !tbaa !176
  %396 = icmp sgt i8 %395, 0
  br i1 %396, label %397, label %399

397:                                              ; preds = %.critedge412
  %398 = add nsw i8 %395, -1
  store i8 %398, ptr %394, align 4, !tbaa !176
  br label %399

399:                                              ; preds = %397, %.critedge412
  %400 = getelementptr inbounds i8, ptr %393, i64 237
  %401 = load i8, ptr %400, align 1, !tbaa !164
  %402 = icmp sgt i8 %401, 0
  br i1 %402, label %403, label %405

403:                                              ; preds = %399
  %404 = add nsw i8 %401, -1
  store i8 %404, ptr %400, align 1, !tbaa !164
  br label %405

405:                                              ; preds = %403, %399
  %406 = getelementptr inbounds i8, ptr %393, i64 238
  %407 = load i8, ptr %406, align 2, !tbaa !177
  %408 = icmp sgt i8 %407, 0
  br i1 %408, label %409, label %411

409:                                              ; preds = %405
  %410 = add nsw i8 %407, -1
  store i8 %410, ptr %406, align 2, !tbaa !177
  br label %411

411:                                              ; preds = %409, %405
  %.not522 = xor i1 %60, true
  %412 = select i1 %.0317, i1 %.0318, i1 false
  %or.cond = select i1 %.not522, i1 true, i1 %412
  br i1 %or.cond, label %414, label %413

413:                                              ; preds = %411
  store i8 1, ptr %400, align 1, !tbaa !164
  br label %414

414:                                              ; preds = %413, %411
  %415 = and i32 %.1, 100663296
  %.not377 = icmp ne i32 %415, 0
  %or.cond.not = select i1 %.0315.in476, i1 %.not377, i1 false
  br i1 %or.cond.not, label %416, label %431

416:                                              ; preds = %414
  store i8 1, ptr %400, align 1, !tbaa !164
  %417 = and i32 %.1, 64
  %.not378 = icmp eq i32 %417, 0
  br i1 %.not378, label %431, label %418

418:                                              ; preds = %416
  br i1 %.0317, label %422, label %419

419:                                              ; preds = %418
  %420 = getelementptr inbounds i8, ptr %393, i64 56
  store float 0.000000e+00, ptr %420, align 8, !tbaa !152
  %421 = getelementptr inbounds i8, ptr %393, i64 48
  store float 0.000000e+00, ptr %421, align 8, !tbaa !178
  br label %422

422:                                              ; preds = %419, %418
  br i1 %.0318, label %426, label %423

423:                                              ; preds = %422
  %424 = getelementptr inbounds i8, ptr %393, i64 60
  store float 0.000000e+00, ptr %424, align 4, !tbaa !153
  %425 = getelementptr inbounds i8, ptr %393, i64 52
  store float 0.000000e+00, ptr %425, align 4, !tbaa !179
  br label %426

426:                                              ; preds = %423, %422
  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)
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 72
  %429 = load i64, ptr %10, align 8
  store i64 %429, ptr %428, align 8
  %430 = getelementptr inbounds i8, ptr %427, i64 64
  store i64 %429, ptr %430, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %431

431:                                              ; preds = %416, %426, %414
  %432 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %433 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %433, ptr noundef %432)
  %434 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %434)
  br i1 %152, label %442, label %.thread478

.thread478:                                       ; preds = %431
  %435 = and i32 %.1, 134217728
  %.not380 = icmp eq i32 %435, 0
  %or.cond414 = and i1 %.not377, %.not380
  %.in381.v = select i1 %or.cond414, i64 14648, i64 14612
  %.in381 = getelementptr inbounds i8, ptr %43, i64 %.in381.v
  %436 = load float, ptr %.in381, align 4, !tbaa !138
  %437 = load ptr, ptr %4, align 8, !tbaa !5
  %438 = getelementptr inbounds i8, ptr %437, i64 100
  store float %436, ptr %438, align 4, !tbaa !180
  %439 = getelementptr inbounds i8, ptr %43, i64 14600
  %440 = getelementptr inbounds i8, ptr %437, i64 88
  %441 = load i64, ptr %439, align 4
  store i64 %441, ptr %440, align 8
  br label %466

442:                                              ; preds = %431
  %443 = getelementptr inbounds i8, ptr %43, i64 14640
  %444 = load float, ptr %443, align 4, !tbaa !181
  %445 = load ptr, ptr %4, align 8, !tbaa !5
  %446 = getelementptr inbounds i8, ptr %445, i64 100
  store float %444, ptr %446, align 4, !tbaa !180
  %447 = getelementptr inbounds i8, ptr %43, i64 14600
  %448 = getelementptr inbounds i8, ptr %445, i64 88
  %449 = load i64, ptr %447, align 4
  store i64 %449, ptr %448, align 8
  %450 = and i32 %.1, 83886080
  %brmerge416.not = icmp eq i32 %450, 16777216
  br i1 %brmerge416.not, label %451, label %466

451:                                              ; preds = %442
  %452 = getelementptr inbounds i8, ptr %445, i64 24
  %453 = load i32, ptr %452, align 8, !tbaa !124
  %454 = and i32 %453, 2
  %.not382 = icmp eq i32 %454, 0
  %455 = fcmp oeq float %444, 0.000000e+00
  %or.cond581 = select i1 %.not382, i1 %455, i1 false
  br i1 %or.cond581, label %456, label %466

456:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %457 = and i32 %.1, 1024
  %.not383 = icmp eq i32 %457, 0
  br i1 %.not383, label %461, label %458

458:                                              ; preds = %456
  %459 = getelementptr inbounds i8, ptr %43, i64 14604
  %460 = load float, ptr %459, align 4, !tbaa !182
  br label %461

461:                                              ; preds = %456, %458
  %462 = phi float [ %460, %458 ], [ 0.000000e+00, %456 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %462)
  %463 = load ptr, ptr %4, align 8, !tbaa !5
  %464 = getelementptr inbounds i8, ptr %463, i64 88
  %465 = load i64, ptr %11, align 8
  store i64 %465, ptr %464, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  br label %466

466:                                              ; preds = %.thread478, %442, %461, %451
  %.in574.in = phi i64 [ %441, %.thread478 ], [ %449, %442 ], [ %465, %461 ], [ %449, %451 ]
  %brmerge416483 = phi i1 [ true, %.thread478 ], [ true, %442 ], [ false, %461 ], [ false, %451 ]
  %.in574 = trunc i64 %.in574.in to i32
  %467 = bitcast i32 %.in574 to float
  %.not363.not482 = xor i1 %.not363, true
  %468 = getelementptr inbounds i8, ptr %43, i64 14668
  %469 = load float, ptr %468, align 4, !tbaa !183
  %470 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %467, float noundef %469)
  %471 = getelementptr inbounds i8, ptr %43, i64 19180
  %472 = load float, ptr %471, align 4, !tbaa !184
  %473 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %470, float noundef %472)
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds i8, ptr %474, i64 380
  store float %473, ptr %475, align 4, !tbaa !185
  %476 = getelementptr inbounds i8, ptr %43, i64 19184
  %477 = load float, ptr %476, align 4, !tbaa !186
  %478 = getelementptr inbounds i8, ptr %474, i64 384
  store float %477, ptr %478, align 4, !tbaa !187
  %479 = and i32 %.1, 1
  %.not384 = icmp eq i32 %479, 0
  br i1 %.not384, label %480, label %486

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

486:                                              ; preds = %466, %480
  %487 = phi float [ %485, %480 ], [ 0.000000e+00, %466 ]
  %488 = getelementptr inbounds i8, ptr %474, i64 104
  store float %487, ptr %488, align 8, !tbaa !190
  %489 = and i32 %.1, 1024
  %.not385.not = icmp eq i32 %489, 0
  br i1 %.not385.not, label %497, label %490

490:                                              ; preds = %486
  %491 = getelementptr inbounds i8, ptr %43, i64 15760
  %492 = load float, ptr %491, align 8, !tbaa !188
  %493 = fadd float %477, %492
  %494 = getelementptr inbounds i8, ptr %43, i64 14656
  %495 = load float, ptr %494, align 4, !tbaa !189
  %496 = call float @llvm.fmuladd.f32(float %495, float 2.000000e+00, float %493)
  br label %497

497:                                              ; preds = %486, %490
  %498 = phi float [ %496, %490 ], [ 0.000000e+00, %486 ]
  %499 = getelementptr inbounds i8, ptr %474, i64 108
  store float %498, ptr %499, align 4, !tbaa !191
  br i1 %.0317, label %500, label %505

500:                                              ; preds = %497
  %501 = getelementptr inbounds i8, ptr %474, i64 80
  %502 = load float, ptr %501, align 8, !tbaa !192
  %503 = fcmp une float %502, 0.000000e+00
  br i1 %503, label %504, label %505

504:                                              ; preds = %500
  br label %505

505:                                              ; preds = %504, %500, %497
  %.0320 = phi i1 [ true, %504 ], [ %60, %500 ], [ %60, %497 ]
  br i1 %.0318, label %506, label %511

506:                                              ; preds = %505
  %507 = getelementptr inbounds i8, ptr %474, i64 84
  %508 = load float, ptr %507, align 4, !tbaa !193
  %509 = fcmp une float %508, 0.000000e+00
  br i1 %509, label %510, label %511

510:                                              ; preds = %506
  br label %511

511:                                              ; preds = %510, %506, %505
  %.0322 = phi i1 [ true, %510 ], [ %60, %506 ], [ %60, %505 ]
  %512 = and i32 %.1, 33
  %or.cond417 = icmp eq i32 %512, 0
  br i1 %or.cond417, label %513, label %552

513:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #12
  %514 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %474)
  %515 = extractvalue { <2 x float>, <2 x float> } %514, 0
  store <2 x float> %515, ptr %12, align 8
  %516 = getelementptr inbounds i8, ptr %12, i64 8
  %517 = extractvalue { <2 x float>, <2 x float> } %514, 1
  store <2 x float> %517, ptr %516, align 8
  %518 = getelementptr inbounds i8, ptr %43, i64 16512
  %519 = load ptr, ptr %518, align 8, !tbaa !194
  %520 = load ptr, ptr %4, align 8, !tbaa !5
  %521 = icmp eq ptr %519, %520
  br i1 %521, label %522, label %542

522:                                              ; preds = %513
  %523 = getelementptr inbounds i8, ptr %43, i64 16592
  %524 = load i32, ptr %523, align 8, !tbaa !195
  %525 = icmp eq i32 %524, 0
  br i1 %525, label %526, label %542

526:                                              ; preds = %522
  %527 = getelementptr inbounds i8, ptr %43, i64 16596
  %528 = load i32, ptr %527, align 4, !tbaa !196
  %529 = icmp eq i32 %528, 0
  br i1 %529, label %530, label %542

530:                                              ; preds = %526
  %531 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %516, i1 noundef zeroext true)
  br i1 %531, label %532, label %542

532:                                              ; preds = %530
  %533 = getelementptr inbounds i8, ptr %43, i64 11066
  %534 = load i16, ptr %533, align 2, !tbaa !197
  %535 = icmp eq i16 %534, 2
  br i1 %535, label %536, label %542

536:                                              ; preds = %532
  %537 = call noundef i32 @_ZN5ImGui11GetKeyOwnerE8ImGuiKey(i32 noundef 655)
  %538 = icmp eq i32 %537, -1
  br i1 %538, label %539, label %542

539:                                              ; preds = %536
  %540 = load ptr, ptr %4, align 8, !tbaa !5
  %541 = getelementptr inbounds i8, ptr %540, i64 206
  store i8 1, ptr %541, align 2, !tbaa !198
  br label %542

542:                                              ; preds = %532, %536, %539, %530, %526, %522, %513
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %543, i64 206
  %545 = load i8, ptr %544, align 2, !tbaa !198, !range !92, !noundef !93
  %546 = trunc nuw i8 %545 to i1
  br i1 %546, label %547, label %551

547:                                              ; preds = %542
  %548 = getelementptr inbounds i8, ptr %543, i64 205
  %549 = load i8, ptr %548, align 1, !tbaa !199, !range !92, !noundef !93
  %550 = xor i8 %549, 1
  store i8 %550, ptr %548, align 1, !tbaa !199
  %.not512.not = icmp ne i8 %549, 0
  %spec.select418 = or i1 %.not512.not, %.0322
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %543)
  %.pre531.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %551

551:                                              ; preds = %547, %542
  %.pre531 = phi ptr [ %.pre531.pre, %547 ], [ %543, %542 ]
  %.2324 = phi i1 [ %spec.select418, %547 ], [ %.0322, %542 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre531, i64 104
  %.pre532 = load float, ptr %.phi.trans.insert, align 8, !tbaa !190
  %.phi.trans.insert533 = getelementptr inbounds i8, ptr %.pre531, i64 108
  %.pre534 = load float, ptr %.phi.trans.insert533, align 4, !tbaa !191
  br label %554

552:                                              ; preds = %511
  %553 = getelementptr inbounds i8, ptr %474, i64 205
  store i8 0, ptr %553, align 1, !tbaa !199
  br label %554

554:                                              ; preds = %552, %551
  %555 = phi float [ %498, %552 ], [ %.pre534, %551 ]
  %556 = phi float [ %487, %552 ], [ %.pre532, %551 ]
  %557 = phi ptr [ %474, %552 ], [ %.pre531, %551 ]
  %.3325 = phi i1 [ %.0322, %552 ], [ %.2324, %551 ]
  %558 = getelementptr inbounds i8, ptr %557, i64 206
  store i8 0, ptr %558, align 2, !tbaa !198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %559 = getelementptr inbounds i8, ptr %557, i64 192
  %560 = load i64, ptr %559, align 8
  store i64 %560, ptr %13, align 8
  %561 = getelementptr inbounds i8, ptr %557, i64 112
  store float 0.000000e+00, ptr %561, align 8, !tbaa !200
  %562 = getelementptr inbounds i8, ptr %557, i64 120
  %563 = fadd float %556, %555
  %564 = getelementptr inbounds i8, ptr %557, i64 116
  store float %563, ptr %564, align 4, !tbaa !201
  store <2 x float> zeroinitializer, ptr %562, align 8, !tbaa !138
  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)
  %565 = load ptr, ptr %4, align 8, !tbaa !5
  %566 = getelementptr inbounds i8, ptr %565, i64 192
  %567 = load i64, ptr %14, align 8
  store i64 %567, ptr %566, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %568 = getelementptr inbounds i8, ptr %565, i64 72
  %569 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %565, ptr noundef nonnull align 4 dereferenceable(8) %568)
  store <2 x float> %569, ptr %15, align 8
  %570 = and i32 %.1, 64
  %.not387 = icmp ne i32 %570, 0
  %571 = extractelement <2 x float> %569, i64 0
  %572 = extractelement <2 x float> %569, i64 1
  %.pre535 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not387, label %573, label %583

573:                                              ; preds = %554
  %574 = getelementptr inbounds i8, ptr %.pre535, i64 205
  %575 = load i8, ptr %574, align 1, !tbaa !199, !range !92, !noundef !93
  %576 = trunc nuw i8 %575 to i1
  br i1 %576, label %583, label %577

577:                                              ; preds = %573
  br i1 %.0317, label %580, label %578

578:                                              ; preds = %577
  %579 = getelementptr inbounds i8, ptr %.pre535, i64 56
  store float %571, ptr %579, align 8, !tbaa !152
  br label %580

580:                                              ; preds = %578, %577
  %.1321 = phi i1 [ %.0320, %577 ], [ true, %578 ]
  br i1 %.0318, label %632, label %581

581:                                              ; preds = %580
  %582 = getelementptr inbounds i8, ptr %.pre535, i64 60
  store float %572, ptr %582, align 4, !tbaa !153
  br label %632

583:                                              ; preds = %573, %554
  %584 = getelementptr inbounds i8, ptr %.pre535, i64 226
  %585 = load i8, ptr %584, align 2, !tbaa !202
  %586 = icmp sgt i8 %585, 0
  br i1 %586, label %591, label %587

587:                                              ; preds = %583
  %588 = getelementptr inbounds i8, ptr %.pre535, i64 227
  %589 = load i8, ptr %588, align 1, !tbaa !203
  %590 = icmp sgt i8 %589, 0
  br i1 %590, label %.thread485, label %632

591:                                              ; preds = %583
  br i1 %.0317, label %.thread485, label %592

592:                                              ; preds = %591
  %593 = getelementptr inbounds i8, ptr %.pre535, i64 228
  %594 = load i8, ptr %593, align 4, !tbaa !204, !range !92, !noundef !93
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %596, label %600

596:                                              ; preds = %592
  %597 = getelementptr inbounds i8, ptr %.pre535, i64 56
  %598 = load float, ptr %597, align 8, !tbaa !152
  %599 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %598, float noundef %571)
  %.pre536 = load ptr, ptr %4, align 8, !tbaa !5
  br label %600

600:                                              ; preds = %592, %596
  %601 = phi ptr [ %.pre536, %596 ], [ %.pre535, %592 ]
  %602 = phi float [ %599, %596 ], [ %571, %592 ]
  %603 = getelementptr inbounds i8, ptr %601, i64 56
  store float %602, ptr %603, align 8, !tbaa !152
  br label %.thread485

.thread485:                                       ; preds = %587, %600, %591
  %604 = phi ptr [ %.pre535, %591 ], [ %601, %600 ], [ %.pre535, %587 ]
  %.2 = phi i1 [ %.0320, %591 ], [ true, %600 ], [ %.0320, %587 ]
  br i1 %.0318, label %626, label %605

605:                                              ; preds = %.thread485
  %606 = getelementptr inbounds i8, ptr %604, i64 227
  %607 = load i8, ptr %606, align 1, !tbaa !203
  %608 = icmp sgt i8 %607, 0
  br i1 %608, label %609, label %626

609:                                              ; preds = %605
  %610 = getelementptr inbounds i8, ptr %604, i64 228
  %611 = load i8, ptr %610, align 4, !tbaa !204, !range !92, !noundef !93
  %612 = trunc nuw i8 %611 to i1
  br i1 %612, label %613, label %619

613:                                              ; preds = %609
  %614 = getelementptr inbounds i8, ptr %604, i64 60
  %615 = load float, ptr %614, align 4, !tbaa !153
  %616 = getelementptr inbounds i8, ptr %15, i64 4
  %617 = load float, ptr %616, align 4, !tbaa !205
  %618 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %615, float noundef %617)
  %.pre537 = load ptr, ptr %4, align 8, !tbaa !5
  br label %622

619:                                              ; preds = %609
  %620 = getelementptr inbounds i8, ptr %15, i64 4
  %621 = load float, ptr %620, align 4, !tbaa !205
  br label %622

622:                                              ; preds = %619, %613
  %623 = phi ptr [ %.pre537, %613 ], [ %604, %619 ]
  %624 = phi float [ %618, %613 ], [ %621, %619 ]
  %625 = getelementptr inbounds i8, ptr %623, i64 60
  store float %624, ptr %625, align 4, !tbaa !153
  br label %626

626:                                              ; preds = %622, %605, %.thread485
  %627 = phi ptr [ %604, %.thread485 ], [ %623, %622 ], [ %604, %605 ]
  %.4326 = phi i1 [ %.3325, %.thread485 ], [ true, %622 ], [ %.3325, %605 ]
  %628 = getelementptr inbounds i8, ptr %627, i64 205
  %629 = load i8, ptr %628, align 1, !tbaa !199, !range !92, !noundef !93
  %630 = trunc nuw i8 %629 to i1
  br i1 %630, label %632, label %631

631:                                              ; preds = %626
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %627)
  %.pre538 = load ptr, ptr %4, align 8, !tbaa !5
  br label %632

632:                                              ; preds = %587, %631, %626, %580, %581
  %633 = phi ptr [ %627, %626 ], [ %.pre538, %631 ], [ %.pre535, %587 ], [ %.pre535, %580 ], [ %.pre535, %581 ]
  %.5327 = phi i1 [ %.4326, %626 ], [ %.4326, %631 ], [ %.3325, %587 ], [ %.3325, %580 ], [ true, %581 ]
  %.3 = phi i1 [ %.2, %626 ], [ %.2, %631 ], [ %.0320, %587 ], [ %.1321, %580 ], [ %.1321, %581 ]
  %634 = getelementptr inbounds i8, ptr %633, i64 56
  %635 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %633, ptr noundef nonnull align 4 dereferenceable(8) %634)
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds i8, ptr %636, i64 56
  store <2 x float> %635, ptr %637, align 8
  %638 = getelementptr inbounds i8, ptr %636, i64 205
  %639 = load i8, ptr %638, align 1, !tbaa !199, !range !92, !noundef !93
  %640 = trunc nuw i8 %639 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #12
  %.not419 = xor i1 %640, true
  %brmerge420 = select i1 %.not419, i1 true, i1 %152
  br i1 %brmerge420, label %647, label %641

641:                                              ; preds = %632
  %642 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %636)
  %643 = extractvalue { <2 x float>, <2 x float> } %642, 0
  store <2 x float> %643, ptr %16, align 8
  %644 = getelementptr inbounds i8, ptr %16, i64 8
  %645 = extractvalue { <2 x float>, <2 x float> } %642, 1
  store <2 x float> %645, ptr %644, align 8
  %646 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre539 = load ptr, ptr %4, align 8, !tbaa !5
  br label %647

647:                                              ; preds = %632, %641
  %648 = phi ptr [ %.pre539, %641 ], [ %636, %632 ]
  %.sroa.044.0 = phi <2 x float> [ %646, %641 ], [ %635, %632 ]
  %649 = getelementptr inbounds i8, ptr %648, i64 48
  store <2 x float> %.sroa.044.0, ptr %649, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #12
  br i1 %.0315.in476, label %650, label %660

650:                                              ; preds = %647
  %651 = getelementptr inbounds i8, ptr %648, i64 232
  store i32 -1, ptr %651, align 8, !tbaa !206
  %652 = and i32 %.1, 201326592
  %or.cond422.not513 = icmp ne i32 %652, 67108864
  %brmerge423 = or i1 %or.cond422.not513, %.0316.shrunk
  br i1 %brmerge423, label %660, label %653

653:                                              ; preds = %650
  %654 = getelementptr inbounds i8, ptr %43, i64 19312
  %655 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %654)
  %656 = getelementptr inbounds i8, ptr %655, i64 36
  %657 = load ptr, ptr %4, align 8, !tbaa !5
  %658 = getelementptr inbounds i8, ptr %657, i64 40
  %659 = load i64, ptr %656, align 4
  store i64 %659, ptr %658, align 8
  br label %660

660:                                              ; preds = %650, %653, %647
  %661 = phi ptr [ %648, %650 ], [ %657, %653 ], [ %648, %647 ]
  br i1 %152, label %662, label %676

662:                                              ; preds = %660
  br i1 %150, label %.critedge2, label %663

663:                                              ; preds = %662
  %664 = getelementptr inbounds i8, ptr %149, i64 202
  %665 = load i8, ptr %664, align 2, !tbaa !165, !range !92, !noundef !93
  %666 = trunc nuw i8 %665 to i1
  br i1 %666, label %667, label %.critedge2

.critedge2:                                       ; preds = %662, %663
  call void @__assert_fail(ptr noundef nonnull @.str.153, ptr noundef nonnull @.str.3, i32 noundef 6916, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

667:                                              ; preds = %663
  %668 = getelementptr inbounds i8, ptr %149, i64 424
  %669 = load i32, ptr %668, align 8, !tbaa !207
  %670 = trunc i32 %669 to i16
  %671 = getelementptr inbounds i8, ptr %661, i64 220
  store i16 %670, ptr %671, align 4, !tbaa !127
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %668, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %brmerge425 = or i1 %.0316.shrunk, %.not363.not482
  %brmerge426 = select i1 %brmerge425, i1 true, i1 %348
  %.pre540 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge426, label %676, label %672

672:                                              ; preds = %667
  %673 = getelementptr inbounds i8, ptr %149, i64 280
  %674 = getelementptr inbounds i8, ptr %.pre540, i64 40
  %675 = load i64, ptr %673, align 8
  store i64 %675, ptr %674, align 8
  br label %676

676:                                              ; preds = %667, %672, %660
  %677 = phi ptr [ %.pre540, %667 ], [ %.pre540, %672 ], [ %661, %660 ]
  %678 = getelementptr inbounds i8, ptr %677, i64 244
  %679 = load float, ptr %678, align 4, !tbaa !208
  %680 = fcmp une float %679, 0x47EFFFFFE0000000
  br i1 %680, label %681, label %.critedge428

681:                                              ; preds = %676
  %682 = getelementptr inbounds i8, ptr %677, i64 237
  %683 = load i8, ptr %682, align 1, !tbaa !164
  %684 = icmp eq i8 %683, 0
  br i1 %684, label %685, label %.critedge428

685:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %686 = getelementptr inbounds i8, ptr %677, i64 48
  %687 = getelementptr inbounds i8, ptr %677, i64 252
  %688 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %686, ptr noundef nonnull align 4 dereferenceable(8) %687)
  store <2 x float> %688, ptr %18, align 8
  %689 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %678, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %689, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %677, 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 %704

.critedge428:                                     ; preds = %676, %681
  br i1 %.not361, label %694, label %690

690:                                              ; preds = %.critedge428
  %691 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %677)
  %692 = load ptr, ptr %4, align 8, !tbaa !5
  %693 = getelementptr inbounds i8, ptr %692, i64 40
  store <2 x float> %691, ptr %693, align 8
  br label %704

694:                                              ; preds = %.critedge428
  %brmerge429 = or i1 %.not363, %.0316.shrunk
  %brmerge431 = select i1 %brmerge429, i1 true, i1 %351
  br i1 %brmerge431, label %699, label %695

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

699:                                              ; preds = %694
  %brmerge432 = or i1 %.not374, %.0316.shrunk
  %brmerge433 = select i1 %brmerge432, i1 true, i1 %348
  br i1 %brmerge433, label %704, label %700

700:                                              ; preds = %699
  %701 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %677)
  %702 = load ptr, ptr %4, align 8, !tbaa !5
  %703 = getelementptr inbounds i8, ptr %702, i64 40
  store <2 x float> %701, ptr %703, align 8
  br label %704

704:                                              ; preds = %699, %690, %700, %695, %685
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #12
  %705 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(208) %432)
  %706 = extractvalue { <2 x float>, <2 x float> } %705, 0
  store <2 x float> %706, ptr %19, align 8
  %707 = getelementptr inbounds i8, ptr %19, i64 8
  %708 = extractvalue { <2 x float>, <2 x float> } %705, 1
  store <2 x float> %708, ptr %707, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #12
  %709 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(208) %432)
  %710 = extractvalue { <2 x float>, <2 x float> } %709, 0
  store <2 x float> %710, ptr %20, align 8
  %711 = getelementptr inbounds i8, ptr %20, i64 8
  %712 = extractvalue { <2 x float>, <2 x float> } %709, 1
  store <2 x float> %712, ptr %711, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %713 = getelementptr inbounds i8, ptr %43, i64 14800
  %714 = getelementptr inbounds i8, ptr %43, i64 14808
  %715 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %713, ptr noundef nonnull align 4 dereferenceable(8) %714)
  store <2 x float> %715, 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
  %716 = 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> %716, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %717 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %711, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %717, 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
  %brmerge434 = select i1 %.0316.shrunk, i1 true, i1 %152
  br i1 %brmerge434, label %726, label %718

718:                                              ; preds = %704
  %719 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %720 = fcmp ogt float %719, 0.000000e+00
  br i1 %720, label %721, label %726

721:                                              ; preds = %718
  %722 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %723 = fcmp ogt float %722, 0.000000e+00
  br i1 %723, label %724, label %726

724:                                              ; preds = %721
  %725 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %725, ptr noundef nonnull align 4 dereferenceable(16) %22)
  br label %726

726:                                              ; preds = %704, %718, %721, %724
  %727 = load ptr, ptr %4, align 8, !tbaa !5
  %728 = getelementptr inbounds i8, ptr %727, i64 40
  %729 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %728)
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds i8, ptr %730, i64 40
  store <2 x float> %729, ptr %731, align 8
  %732 = and i32 %.1, 201326592
  %or.cond436.not.not = icmp eq i32 %732, 67108864
  %. = select i1 %or.cond436.not.not, i64 14644, i64 14608
  %.sink = select i1 %152, i64 14636, i64 %.
  %733 = getelementptr inbounds i8, ptr %43, i64 %.sink
  %734 = load float, ptr %733, align 4, !tbaa !138
  %735 = getelementptr inbounds i8, ptr %730, i64 96
  store float %734, ptr %735, align 8, !tbaa !209
  %736 = and i32 %.1, 4096
  %.not391 = icmp eq i32 %736, 0
  %or.cond437.not = select i1 %.0315.in476, i1 %.not391, i1 false
  %brmerge474.not = and i1 %.not363, %or.cond437.not
  %737 = icmp eq i32 %347, 0
  %spec.select507 = select i1 %brmerge474.not, i1 %737, i1 %or.cond437.not
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #12
  store i32 -1, ptr %25, align 4, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #12
  store i32 -1, ptr %26, align 4, !tbaa !137
  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 %brmerge416483, label %738, label %743

738:                                              ; preds = %726
  %739 = getelementptr inbounds i8, ptr %43, i64 95
  %740 = load i8, ptr %739, align 1, !tbaa !210, !range !92, !noundef !93
  %741 = trunc nuw i8 %740 to i1
  %742 = select i1 %741, i32 2, i32 1
  br label %743

743:                                              ; preds = %726, %738
  %744 = phi i32 [ %742, %738 ], [ 0, %726 ]
  %745 = getelementptr inbounds i8, ptr %43, i64 15760
  %746 = load float, ptr %745, align 8, !tbaa !188
  %747 = fmul float %746, 0x3FF19999A0000000
  %748 = fadd float %734, 1.000000e+00
  %749 = call float @llvm.fmuladd.f32(float %746, float 0x3FC99999A0000000, float %748)
  %750 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %747, float noundef %749)
  %751 = fptosi float %750 to i32
  %752 = sitofp i32 %751 to float
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  %754 = getelementptr inbounds i8, ptr %753, i64 205
  %755 = load i8, ptr %754, align 1, !tbaa !199, !range !92, !noundef !93
  %756 = trunc nuw i8 %755 to i1
  br i1 %756, label %762, label %757

757:                                              ; preds = %743
  %758 = call noundef i32 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiS5_iPjRK6ImRect(ptr noundef nonnull %753, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %25, ptr noundef nonnull %26, i32 noundef %744, ptr noundef nonnull %27, ptr noundef nonnull align 4 dereferenceable(16) %22)
  %.not392 = icmp eq i32 %758, 0
  br i1 %.not392, label %762, label %759

759:                                              ; preds = %757
  %760 = and i32 %758, 1
  %.not393 = icmp ne i32 %760, 0
  %spec.select442 = or i1 %.not393, %.3
  %761 = and i32 %758, 2
  %.not394 = icmp ne i32 %761, 0
  %spec.select475 = or i1 %.not394, %.5327
  br label %762

762:                                              ; preds = %759, %757, %743
  %.7 = phi i1 [ %.5327, %743 ], [ %.5327, %757 ], [ %spec.select475, %759 ]
  %.6 = phi i1 [ %.3, %743 ], [ %.3, %757 ], [ %spec.select442, %759 ]
  %763 = load i32, ptr %25, align 4, !tbaa !137
  %764 = trunc i32 %763 to i8
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds i8, ptr %765, i64 214
  store i8 %764, ptr %766, align 2, !tbaa !211
  %767 = load i32, ptr %26, align 4, !tbaa !137
  %768 = trunc i32 %767 to i8
  %769 = getelementptr inbounds i8, ptr %765, i64 215
  store i8 %768, ptr %769, align 1, !tbaa !212
  %770 = getelementptr inbounds i8, ptr %765, i64 205
  %771 = load i8, ptr %770, align 1, !tbaa !199, !range !92, !noundef !93
  %772 = trunc nuw i8 %771 to i1
  br i1 %772, label %877, label %773

773:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #12
  %774 = getelementptr inbounds i8, ptr %765, i64 56
  %775 = load float, ptr %774, align 8, !tbaa !152
  %776 = getelementptr inbounds i8, ptr %765, i64 60
  %777 = load float, ptr %776, align 4, !tbaa !153
  %778 = getelementptr inbounds i8, ptr %765, i64 116
  %779 = load float, ptr %778, align 4, !tbaa !201
  %780 = getelementptr inbounds i8, ptr %765, i64 124
  %781 = load float, ptr %780, align 4, !tbaa !213
  %782 = fadd float %779, %781
  %783 = fsub float %777, %782
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %775, float noundef %783)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #12
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds i8, ptr %784, i64 528
  %786 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %785)
  store <2 x float> %786, ptr %29, align 8
  %787 = 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 %60, label %788, label %789

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

789:                                              ; preds = %773
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds i8, ptr %790, i64 64
  %792 = getelementptr inbounds i8, ptr %790, i64 88
  %793 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %792, float noundef 2.000000e+00)
  store <2 x float> %793, ptr %31, align 8
  %794 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %791, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %794, ptr %30, align 8
  br label %795

795:                                              ; preds = %789, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #12
  %796 = load float, ptr %28, align 4
  %.sroa.029.0.vec.extract = extractelement <2 x float> %787, i64 0
  %797 = select i1 %.6, float %796, float %.sroa.029.0.vec.extract
  %798 = getelementptr inbounds i8, ptr %28, i64 4
  %799 = load float, ptr %798, align 4
  %.sroa.029.4.vec.extract = extractelement <2 x float> %787, i64 1
  %800 = select i1 %.7, float %799, float %.sroa.029.4.vec.extract
  %801 = and i32 %.1, 16384
  %.not395 = icmp eq i32 %801, 0
  br i1 %.not395, label %802, label %.thread486

802:                                              ; preds = %795
  %803 = getelementptr inbounds i8, ptr %30, i64 4
  %804 = load float, ptr %803, align 4, !tbaa !205
  %805 = fcmp ogt float %804, %800
  %806 = and i32 %.1, 8
  %.not396 = icmp eq i32 %806, 0
  %807 = select i1 %805, i1 %.not396, i1 false
  %808 = load ptr, ptr %4, align 8, !tbaa !5
  %809 = getelementptr inbounds i8, ptr %808, i64 201
  %810 = zext i1 %807 to i8
  store i8 %810, ptr %809, align 1, !tbaa !214
  %811 = and i32 %.1, 32768
  %.not397 = icmp eq i32 %811, 0
  br i1 %.not397, label %817, label %.thread491

.thread486:                                       ; preds = %795
  %812 = load ptr, ptr %4, align 8, !tbaa !5
  %813 = getelementptr inbounds i8, ptr %812, i64 201
  store i8 1, ptr %813, align 1, !tbaa !214
  %814 = and i32 %.1, 32768
  %.not397487 = icmp eq i32 %814, 0
  br i1 %.not397487, label %.thread488, label %.thread491.thread

.thread491.thread:                                ; preds = %.thread486
  %815 = getelementptr inbounds i8, ptr %812, i64 200
  store i8 1, ptr %815, align 8, !tbaa !215
  br label %.thread580

.thread488:                                       ; preds = %.thread486
  %816 = load float, ptr %30, align 8, !tbaa !216
  %.pre573 = and i32 %.1, 8
  br label %819

817:                                              ; preds = %802
  %818 = load float, ptr %30, align 8, !tbaa !216
  br i1 %807, label %819, label %825

819:                                              ; preds = %.thread488, %817
  %.pre571.pre-phi = phi i32 [ %.pre573, %.thread488 ], [ 0, %817 ]
  %820 = phi float [ %816, %.thread488 ], [ %818, %817 ]
  %821 = phi ptr [ %812, %.thread488 ], [ %808, %817 ]
  %822 = phi ptr [ %813, %.thread488 ], [ %809, %817 ]
  %823 = getelementptr inbounds i8, ptr %43, i64 14708
  %824 = load float, ptr %823, align 4, !tbaa !217
  br label %825

825:                                              ; preds = %817, %819
  %.pre-phi = phi i32 [ %806, %817 ], [ %.pre571.pre-phi, %819 ]
  %826 = phi i8 [ 0, %817 ], [ 1, %819 ]
  %827 = phi float [ %818, %817 ], [ %820, %819 ]
  %828 = phi i1 [ false, %817 ], [ true, %819 ]
  %829 = phi ptr [ %808, %817 ], [ %821, %819 ]
  %830 = phi ptr [ %809, %817 ], [ %822, %819 ]
  %831 = phi float [ 0.000000e+00, %817 ], [ %824, %819 ]
  %832 = fsub float %797, %831
  %833 = fcmp ogt float %827, %832
  %.not398 = icmp eq i32 %.pre-phi, 0
  %or.cond443 = select i1 %833, i1 %.not398, i1 false
  br i1 %or.cond443, label %836, label %.thread492

.thread492:                                       ; preds = %825
  %834 = getelementptr inbounds i8, ptr %829, i64 200
  store i8 0, ptr %834, align 8, !tbaa !215
  br label %851

.thread491:                                       ; preds = %802
  %835 = getelementptr inbounds i8, ptr %808, i64 200
  store i8 1, ptr %835, align 8, !tbaa !215
  br i1 %807, label %.thread580, label %840

836:                                              ; preds = %825
  %837 = and i32 %.1, 2048
  %.not514 = icmp eq i32 %837, 0
  %838 = getelementptr inbounds i8, ptr %829, i64 200
  %.lobit = lshr exact i32 %837, 11
  %839 = trunc nuw nsw i32 %.lobit to i8
  store i8 %839, ptr %838, align 8, !tbaa !215
  %brmerge509 = or i1 %.not514, %828
  %not..not514 = xor i1 %.not514, true
  br i1 %brmerge509, label %851, label %._crit_edge541

._crit_edge541:                                   ; preds = %836
  %.phi.trans.insert542 = getelementptr inbounds i8, ptr %30, i64 4
  %.pre543 = load float, ptr %.phi.trans.insert542, align 4, !tbaa !205
  br label %840

840:                                              ; preds = %._crit_edge541, %.thread491
  %.pre-phi572 = phi i32 [ 0, %._crit_edge541 ], [ %806, %.thread491 ]
  %841 = phi float [ %.pre543, %._crit_edge541 ], [ %804, %.thread491 ]
  %842 = phi ptr [ %830, %._crit_edge541 ], [ %809, %.thread491 ]
  %843 = getelementptr inbounds i8, ptr %43, i64 14708
  %844 = load float, ptr %843, align 4, !tbaa !217
  %845 = fsub float %800, %844
  %846 = fcmp ogt float %841, %845
  %.not399 = icmp eq i32 %.pre-phi572, 0
  %847 = select i1 %846, i1 %.not399, i1 false
  %848 = zext i1 %847 to i8
  store i8 %848, ptr %842, align 1, !tbaa !214
  br label %851

.thread580:                                       ; preds = %.thread491.thread, %.thread491
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %849 = getelementptr inbounds i8, ptr %43, i64 14708
  %850 = load float, ptr %849, align 4, !tbaa !217
  br label %859

851:                                              ; preds = %836, %.thread492, %840
  %852 = phi i8 [ %848, %840 ], [ %826, %836 ], [ %826, %.thread492 ]
  %853 = phi i1 [ true, %840 ], [ %not..not514, %836 ], [ false, %.thread492 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #12
  %854 = trunc nuw i8 %852 to i1
  br i1 %854, label %855, label %858

855:                                              ; preds = %851
  %856 = getelementptr inbounds i8, ptr %43, i64 14708
  %857 = load float, ptr %856, align 4, !tbaa !217
  br i1 %853, label %859, label %863

858:                                              ; preds = %851
  br i1 %853, label %859, label %863

859:                                              ; preds = %.thread580, %855, %858
  %860 = phi float [ %857, %855 ], [ 0.000000e+00, %858 ], [ %850, %.thread580 ]
  %861 = getelementptr inbounds i8, ptr %43, i64 14708
  %862 = load float, ptr %861, align 4, !tbaa !217
  br label %863

863:                                              ; preds = %855, %858, %859
  %864 = phi float [ %860, %859 ], [ 0.000000e+00, %858 ], [ %857, %855 ]
  %865 = phi float [ %862, %859 ], [ 0.000000e+00, %858 ], [ 0.000000e+00, %855 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %864, float noundef %865)
  %866 = load ptr, ptr %4, align 8, !tbaa !5
  %867 = getelementptr inbounds i8, ptr %866, i64 192
  %868 = load i64, ptr %32, align 8
  store i64 %868, ptr %867, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #12
  %869 = getelementptr inbounds i8, ptr %866, i64 120
  %870 = lshr i64 %868, 32
  %871 = insertelement <2 x i64> poison, i64 %868, i64 0
  %872 = insertelement <2 x i64> %871, i64 %870, i64 1
  %873 = trunc <2 x i64> %872 to <2 x i32>
  %874 = bitcast <2 x i32> %873 to <2 x float>
  %875 = load <2 x float>, ptr %869, align 8, !tbaa !138
  %876 = fadd <2 x float> %875, %874
  store <2 x float> %876, ptr %869, align 8, !tbaa !138
  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 %877

877:                                              ; preds = %863, %762
  %878 = phi ptr [ %866, %863 ], [ %765, %762 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #12
  %879 = getelementptr inbounds i8, ptr %149, i64 592
  %880 = select i1 %brmerge416483, i1 true, i1 %348
  %881 = select i1 %880, ptr %19, ptr %879
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %881, i64 16, i1 false), !tbaa.struct !167
  %882 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %878)
  %883 = extractvalue { <2 x float>, <2 x float> } %882, 0
  %884 = extractvalue { <2 x float>, <2 x float> } %882, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #12
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %885)
  %887 = extractvalue { <2 x float>, <2 x float> } %886, 0
  store <2 x float> %887, ptr %34, align 8
  %888 = getelementptr inbounds i8, ptr %34, i64 8
  %889 = extractvalue { <2 x float>, <2 x float> } %886, 1
  store <2 x float> %889, ptr %888, align 8
  %890 = load ptr, ptr %4, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 512
  store <2 x float> %883, ptr %891, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %890, i64 520
  store <2 x float> %884, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %891, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %892 = load ptr, ptr %4, align 8
  %893 = getelementptr inbounds i8, ptr %892, i64 40
  %894 = getelementptr inbounds i8, ptr %892, i64 112
  %895 = getelementptr inbounds i8, ptr %892, i64 528
  %896 = getelementptr inbounds i8, ptr %892, i64 48
  %897 = load <2 x float>, ptr %893, align 8, !tbaa !138
  %898 = load <2 x float>, ptr %896, align 8, !tbaa !138
  %899 = fadd <2 x float> %897, %898
  %900 = load <4 x float>, ptr %894, align 8, !tbaa !138
  %901 = shufflevector <2 x float> %897, <2 x float> %899, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %902 = fadd <4 x float> %901, %900
  %903 = fsub <4 x float> %901, %900
  %904 = shufflevector <4 x float> %902, <4 x float> %903, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %904, ptr %895, align 8, !tbaa !138
  %905 = and i32 %.1, 1025
  %brmerge448.not = icmp eq i32 %905, 1
  %906 = getelementptr inbounds i8, ptr %43, i64 14664
  %907 = getelementptr inbounds i8, ptr %892, i64 100
  %.in400 = select i1 %brmerge448.not, ptr %907, ptr %906
  %908 = load float, ptr %.in400, align 4, !tbaa !138
  %909 = extractelement <4 x float> %902, i64 0
  %910 = fadd float %909, 5.000000e-01
  %911 = load float, ptr %907, align 4, !tbaa !180
  %912 = fadd float %910, %911
  %913 = call noundef float @_ZL7ImFloorf(float noundef %912)
  %914 = load ptr, ptr %4, align 8, !tbaa !5
  %915 = getelementptr inbounds i8, ptr %914, i64 544
  store float %913, ptr %915, align 8, !tbaa !218
  %916 = getelementptr inbounds i8, ptr %914, i64 532
  %917 = load float, ptr %916, align 4, !tbaa !219
  %918 = fadd float %917, 5.000000e-01
  %919 = fadd float %908, %918
  %920 = call noundef float @_ZL7ImFloorf(float noundef %919)
  %921 = load ptr, ptr %4, align 8, !tbaa !5
  %922 = getelementptr inbounds i8, ptr %921, i64 548
  store float %920, ptr %922, align 4, !tbaa !220
  %923 = getelementptr inbounds i8, ptr %921, i64 536
  %924 = load float, ptr %923, align 8, !tbaa !221
  %925 = fadd float %924, 5.000000e-01
  %926 = getelementptr inbounds i8, ptr %921, i64 100
  %927 = load float, ptr %926, align 4, !tbaa !180
  %928 = fsub float %925, %927
  %929 = call noundef float @_ZL7ImFloorf(float noundef %928)
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds i8, ptr %930, i64 552
  store float %929, ptr %931, align 8, !tbaa !222
  %932 = getelementptr inbounds i8, ptr %930, i64 540
  %933 = load float, ptr %932, align 4, !tbaa !223
  %934 = fadd float %933, 5.000000e-01
  %935 = getelementptr inbounds i8, ptr %930, i64 100
  %936 = load float, ptr %935, align 4, !tbaa !180
  %937 = fsub float %934, %936
  %938 = call noundef float @_ZL7ImFloorf(float noundef %937)
  %939 = load ptr, ptr %4, align 8, !tbaa !5
  %940 = getelementptr inbounds i8, ptr %939, i64 556
  store float %938, ptr %940, align 4, !tbaa !224
  %941 = getelementptr inbounds i8, ptr %939, i64 544
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %941, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %942 = load ptr, ptr %4, align 8, !tbaa !5
  %943 = getelementptr inbounds i8, ptr %942, i64 48
  %944 = load float, ptr %943, align 8, !tbaa !178
  %945 = fcmp ule float %944, 0.000000e+00
  %.not374.not = xor i1 %.not374, true
  %brmerge450 = or i1 %945, %.not374.not
  %brmerge451 = or i1 %.not387, %brmerge450
  br i1 %brmerge451, label %948, label %946

946:                                              ; preds = %877
  %947 = fmul float %944, 0x3FE4CCCCC0000000
  br label %951

948:                                              ; preds = %877
  %949 = load float, ptr %745, align 8, !tbaa !188
  %950 = fmul float %949, 1.600000e+01
  br label %951

951:                                              ; preds = %948, %946
  %.sink587 = phi float [ %950, %948 ], [ %947, %946 ]
  %952 = call noundef float @_ZL7ImTruncf(float noundef %.sink587)
  %.sink584 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = getelementptr inbounds i8, ptr %.sink584, i64 640
  store float %952, ptr %953, align 8, !tbaa !225
  %954 = getelementptr inbounds i8, ptr %.sink584, i64 64
  %955 = load float, ptr %954, align 8, !tbaa !226
  %956 = getelementptr inbounds i8, ptr %.sink584, i64 88
  %957 = load float, ptr %956, align 8, !tbaa !227
  %958 = call float @llvm.fmuladd.f32(float %957, float 2.000000e+00, float %955)
  %959 = getelementptr inbounds i8, ptr %.sink584, i64 528
  %960 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %959)
  %961 = fsub float %958, %960
  %962 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %961)
  %963 = load ptr, ptr %4, align 8, !tbaa !5
  %964 = getelementptr inbounds i8, ptr %963, i64 160
  store float %962, ptr %964, align 8, !tbaa !228
  %965 = getelementptr inbounds i8, ptr %963, i64 68
  %966 = load float, ptr %965, align 4, !tbaa !229
  %967 = getelementptr inbounds i8, ptr %963, i64 92
  %968 = load float, ptr %967, align 4, !tbaa !230
  %969 = call float @llvm.fmuladd.f32(float %968, float 2.000000e+00, float %966)
  %970 = getelementptr inbounds i8, ptr %963, i64 528
  %971 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %970)
  %972 = fsub float %969, %971
  %973 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %972)
  %974 = load ptr, ptr %4, align 8, !tbaa !5
  %975 = getelementptr inbounds i8, ptr %974, i64 164
  store float %973, ptr %975, align 4, !tbaa !231
  %976 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %974)
  %977 = load ptr, ptr %4, align 8, !tbaa !5
  %978 = getelementptr inbounds i8, ptr %977, i64 152
  store <2 x float> %976, ptr %978, align 8
  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)
  %979 = load ptr, ptr %4, align 8, !tbaa !5
  %980 = getelementptr inbounds i8, ptr %979, i64 168
  %981 = load i64, ptr %35, align 8
  store i64 %981, ptr %980, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #12
  %982 = getelementptr inbounds i8, ptr %979, i64 128
  store <2 x float> zeroinitializer, ptr %982, align 8, !tbaa !138
  %983 = getelementptr inbounds i8, ptr %979, i64 688
  %984 = load ptr, ptr %983, align 8, !tbaa !168
  %985 = load i32, ptr %984, align 8, !tbaa !232
  %986 = icmp eq i32 %985, 1
  br i1 %986, label %987, label %.critedge4

987:                                              ; preds = %951
  %988 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %984, i32 noundef 0)
  %989 = getelementptr inbounds i8, ptr %988, i64 32
  %990 = load i32, ptr %989, align 8, !tbaa !233
  %991 = icmp eq i32 %990, 0
  br i1 %991, label %992, label %.critedge4

.critedge4:                                       ; preds = %951, %987
  call void @__assert_fail(ptr noundef nonnull @.str.154, ptr noundef nonnull @.str.3, i32 noundef 7082, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

992:                                              ; preds = %987
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds i8, ptr %993, i64 688
  %995 = load ptr, ptr %994, align 8, !tbaa !168
  %996 = getelementptr inbounds i8, ptr %43, i64 15752
  %997 = load ptr, ptr %996, align 8, !tbaa !235
  %998 = getelementptr inbounds i8, ptr %997, i64 64
  %999 = load ptr, ptr %998, align 8, !tbaa !236
  %1000 = getelementptr inbounds i8, ptr %999, i64 8
  %1001 = load ptr, ptr %1000, align 8, !tbaa !237
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(200) %995, ptr noundef %1001)
  %1002 = 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) %1002, i1 noundef zeroext false)
  br i1 %880, label %.thread496, label %1003

1003:                                             ; preds = %992
  %1004 = getelementptr inbounds i8, ptr %149, i64 424
  %1005 = load i32, ptr %1004, align 8, !tbaa !207
  %1006 = icmp sgt i32 %1005, 1
  br i1 %1006, label %1007, label %.thread493

.thread493:                                       ; preds = %1003
  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 %1022

1007:                                             ; preds = %1003
  %1008 = add nsw i32 %1005, -2
  %1009 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1004, i32 noundef %1008)
  %1010 = load ptr, ptr %1009, align 8, !tbaa !5
  %.not401 = icmp eq ptr %1010, 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 %.not401, label %1022, label %1011

1011:                                             ; preds = %1007
  %1012 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1010)
  %1013 = extractvalue { <2 x float>, <2 x float> } %1012, 0
  store <2 x float> %1013, ptr %36, align 8
  %1014 = getelementptr inbounds i8, ptr %36, i64 8
  %1015 = extractvalue { <2 x float>, <2 x float> } %1012, 1
  store <2 x float> %1015, ptr %1014, align 8
  %1016 = load ptr, ptr %4, align 8, !tbaa !5
  %1017 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1016)
  %1018 = extractvalue { <2 x float>, <2 x float> } %1017, 0
  store <2 x float> %1018, ptr %37, align 8
  %1019 = getelementptr inbounds i8, ptr %37, i64 8
  %1020 = extractvalue { <2 x float>, <2 x float> } %1017, 1
  store <2 x float> %1020, ptr %1019, align 8
  %1021 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %37)
  br label %1022

1022:                                             ; preds = %.thread493, %1007, %1011
  %1023 = phi i1 [ %1021, %1011 ], [ false, %1007 ], [ false, %.thread493 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #12
  %1024 = getelementptr inbounds i8, ptr %149, i64 688
  %1025 = load ptr, ptr %1024, align 8, !tbaa !168
  %1026 = getelementptr inbounds i8, ptr %1025, i64 32
  %1027 = load i32, ptr %1026, align 8, !tbaa !241
  %1028 = load ptr, ptr %4, align 8, !tbaa !5
  %1029 = getelementptr inbounds i8, ptr %1028, i64 688
  %1030 = load ptr, ptr %1029, align 8, !tbaa !168
  %1031 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1030)
  %1032 = getelementptr inbounds i8, ptr %1031, i64 32
  %1033 = load i32, ptr %1032, align 8, !tbaa !233
  %1034 = icmp ne i32 %1033, 0
  %1035 = icmp eq i32 %1027, 0
  %or.cond456.not517.not520 = select i1 %1034, i1 true, i1 %1035
  %or.cond511.not = or i1 %1023, %or.cond456.not517.not520
  br i1 %or.cond511.not, label %.thread496, label %1036

1036:                                             ; preds = %1022
  %1037 = load ptr, ptr %1024, align 8, !tbaa !168
  %1038 = load ptr, ptr %4, align 8, !tbaa !5
  %1039 = getelementptr inbounds i8, ptr %1038, i64 688
  store ptr %1037, ptr %1039, align 8, !tbaa !168
  br label %.thread496

.thread496:                                       ; preds = %1022, %992, %1036
  %.1331498 = phi i1 [ true, %1036 ], [ false, %992 ], [ false, %1022 ]
  %1040 = getelementptr inbounds i8, ptr %43, i64 19840
  %1041 = load ptr, ptr %1040, align 8, !tbaa !242
  %.not402 = icmp eq ptr %1041, null
  br i1 %.not402, label %1042, label %1045

1042:                                             ; preds = %.thread496
  %1043 = getelementptr inbounds i8, ptr %43, i64 19360
  %1044 = load ptr, ptr %1043, align 8, !tbaa !243
  br label %1045

1045:                                             ; preds = %.thread496, %1042
  %1046 = phi ptr [ %1044, %1042 ], [ %1041, %.thread496 ]
  br i1 %spec.select507, label %._crit_edge544, label %1047

._crit_edge544:                                   ; preds = %1045
  %.pre545 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1054

1047:                                             ; preds = %1045
  %.not403 = icmp eq ptr %1046, null
  %.pre546 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not403, label %1054, label %1048

1048:                                             ; preds = %1047
  %1049 = getelementptr inbounds i8, ptr %.pre546, i64 928
  %1050 = load ptr, ptr %1049, align 8, !tbaa !244
  %1051 = getelementptr inbounds i8, ptr %1046, i64 928
  %1052 = load ptr, ptr %1051, align 8, !tbaa !244
  %1053 = icmp eq ptr %1050, %1052
  br label %1054

1054:                                             ; preds = %._crit_edge544, %1047, %1048
  %1055 = phi ptr [ %.pre545, %._crit_edge544 ], [ %.pre546, %1047 ], [ %.pre546, %1048 ]
  %1056 = phi i1 [ true, %._crit_edge544 ], [ false, %1047 ], [ %1053, %1048 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %1055, ptr noundef nonnull align 4 dereferenceable(16) %34, i1 noundef zeroext %1056, i1 noundef zeroext true, i32 noundef %744, ptr noundef nonnull %27, float noundef %752)
  %.pre547 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1331498, label %1057, label %1060

1057:                                             ; preds = %1054
  %1058 = getelementptr inbounds i8, ptr %.pre547, i64 696
  %1059 = getelementptr inbounds i8, ptr %.pre547, i64 688
  store ptr %1058, ptr %1059, align 8, !tbaa !168
  br label %1060

1060:                                             ; preds = %1057, %1054
  %1061 = and i32 %.1, 8
  %.not404 = icmp eq i32 %1061, 0
  %1062 = getelementptr inbounds i8, ptr %.pre547, i64 80
  %1063 = load float, ptr %1062, align 8, !tbaa !192
  %1064 = fcmp une float %1063, 0.000000e+00
  br i1 %1064, label %1086, label %1065

1065:                                             ; preds = %1060
  %1066 = and i32 %.1, 2056
  %1067 = icmp eq i32 %1066, 2048
  br i1 %1067, label %1068, label %1071

1068:                                             ; preds = %1065
  %1069 = getelementptr inbounds i8, ptr %.pre547, i64 64
  %1070 = load float, ptr %1069, align 8, !tbaa !226
  br label %1071

1071:                                             ; preds = %1065, %1068
  %1072 = phi float [ %1070, %1068 ], [ 0.000000e+00, %1065 ]
  %1073 = getelementptr inbounds i8, ptr %.pre547, i64 48
  %1074 = load float, ptr %1073, align 8, !tbaa !178
  %1075 = getelementptr inbounds i8, ptr %.pre547, i64 88
  %1076 = load float, ptr %1075, align 8, !tbaa !227
  %1077 = fneg float %1076
  %1078 = call float @llvm.fmuladd.f32(float %1077, float 2.000000e+00, float %1074)
  %1079 = getelementptr inbounds i8, ptr %.pre547, i64 112
  %1080 = load float, ptr %1079, align 8, !tbaa !200
  %1081 = getelementptr inbounds i8, ptr %.pre547, i64 120
  %1082 = load float, ptr %1081, align 8, !tbaa !245
  %1083 = fadd float %1080, %1082
  %1084 = fsub float %1078, %1083
  %1085 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1072, float noundef %1084)
  %.pre548 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1086

1086:                                             ; preds = %1060, %1071
  %1087 = phi ptr [ %.pre548, %1071 ], [ %.pre547, %1060 ]
  %1088 = phi float [ %1085, %1071 ], [ %1063, %1060 ]
  %1089 = getelementptr inbounds i8, ptr %1087, i64 84
  %1090 = load float, ptr %1089, align 4, !tbaa !193
  %1091 = fcmp une float %1090, 0.000000e+00
  br i1 %1091, label %1111, label %1092

1092:                                             ; preds = %1086
  br i1 %.not404, label %1093, label %1096

1093:                                             ; preds = %1092
  %1094 = getelementptr inbounds i8, ptr %1087, i64 68
  %1095 = load float, ptr %1094, align 4, !tbaa !229
  br label %1096

1096:                                             ; preds = %1092, %1093
  %1097 = phi float [ %1095, %1093 ], [ 0.000000e+00, %1092 ]
  %1098 = getelementptr inbounds i8, ptr %1087, i64 52
  %1099 = load float, ptr %1098, align 4, !tbaa !179
  %1100 = getelementptr inbounds i8, ptr %1087, i64 92
  %1101 = load float, ptr %1100, align 4, !tbaa !230
  %1102 = fneg float %1101
  %1103 = call float @llvm.fmuladd.f32(float %1102, float 2.000000e+00, float %1099)
  %1104 = getelementptr inbounds i8, ptr %1087, i64 116
  %1105 = load float, ptr %1104, align 4, !tbaa !201
  %1106 = getelementptr inbounds i8, ptr %1087, i64 124
  %1107 = load float, ptr %1106, align 4, !tbaa !213
  %1108 = fadd float %1105, %1107
  %1109 = fsub float %1103, %1108
  %1110 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1097, float noundef %1109)
  %.pre549 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1111

1111:                                             ; preds = %1086, %1096
  %1112 = phi ptr [ %.pre549, %1096 ], [ %1087, %1086 ]
  %1113 = phi float [ %1110, %1096 ], [ %1090, %1086 ]
  %1114 = getelementptr inbounds i8, ptr %1112, i64 528
  %1115 = load float, ptr %1114, align 8, !tbaa !246
  %1116 = getelementptr inbounds i8, ptr %1112, i64 152
  %1117 = load float, ptr %1116, align 8, !tbaa !247
  %1118 = fsub float %1115, %1117
  %1119 = getelementptr inbounds i8, ptr %1112, i64 88
  %1120 = load float, ptr %1119, align 8, !tbaa !227
  %1121 = getelementptr inbounds i8, ptr %1112, i64 100
  %1122 = load float, ptr %1121, align 4, !tbaa !180
  %1123 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1120, float noundef %1122)
  %1124 = fadd float %1118, %1123
  %1125 = call noundef float @_ZL7ImTruncf(float noundef %1124)
  %1126 = load ptr, ptr %4, align 8, !tbaa !5
  %1127 = getelementptr inbounds i8, ptr %1126, i64 560
  store float %1125, ptr %1127, align 8, !tbaa !248
  %1128 = getelementptr inbounds i8, ptr %1126, i64 532
  %1129 = load float, ptr %1128, align 4, !tbaa !219
  %1130 = getelementptr inbounds i8, ptr %1126, i64 156
  %1131 = load float, ptr %1130, align 4, !tbaa !249
  %1132 = fsub float %1129, %1131
  %1133 = getelementptr inbounds i8, ptr %1126, i64 92
  %1134 = load float, ptr %1133, align 4, !tbaa !230
  %1135 = getelementptr inbounds i8, ptr %1126, i64 100
  %1136 = load float, ptr %1135, align 4, !tbaa !180
  %1137 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1134, float noundef %1136)
  %1138 = fadd float %1132, %1137
  %1139 = call noundef float @_ZL7ImTruncf(float noundef %1138)
  %1140 = load ptr, ptr %4, align 8, !tbaa !5
  %1141 = getelementptr inbounds i8, ptr %1140, i64 564
  store float %1139, ptr %1141, align 4, !tbaa !250
  %1142 = getelementptr inbounds i8, ptr %1140, i64 560
  %1143 = load float, ptr %1142, align 8, !tbaa !248
  %1144 = getelementptr inbounds i8, ptr %1140, i64 568
  %1145 = insertelement <2 x float> poison, float %1088, i64 0
  %1146 = insertelement <2 x float> %1145, float %1113, i64 1
  %1147 = insertelement <2 x float> poison, float %1143, i64 0
  %1148 = insertelement <2 x float> %1147, float %1139, i64 1
  %1149 = fadd <2 x float> %1146, %1148
  store <2 x float> %1149, ptr %1144, align 8, !tbaa !138
  %1150 = getelementptr inbounds i8, ptr %1140, i64 576
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1150, ptr noundef nonnull align 8 dereferenceable(16) %1142, i64 16, i1 false), !tbaa.struct !167
  %1151 = getelementptr inbounds i8, ptr %1140, i64 40
  %1152 = getelementptr inbounds i8, ptr %1140, i64 152
  %1153 = getelementptr inbounds i8, ptr %1140, i64 88
  %1154 = getelementptr inbounds i8, ptr %1140, i64 112
  %1155 = getelementptr inbounds i8, ptr %1140, i64 608
  %1156 = load <2 x float>, ptr %1151, align 8, !tbaa !138
  %1157 = load <2 x float>, ptr %1152, align 8, !tbaa !138
  %1158 = fsub <2 x float> %1156, %1157
  %1159 = load <2 x float>, ptr %1153, align 8, !tbaa !138
  %1160 = fadd <2 x float> %1158, %1159
  %1161 = load <2 x float>, ptr %1154, align 8, !tbaa !138
  %1162 = fadd <2 x float> %1160, %1161
  store <2 x float> %1162, ptr %1155, align 8, !tbaa !138
  %1163 = getelementptr inbounds i8, ptr %1140, i64 80
  %1164 = load float, ptr %1163, align 8, !tbaa !192
  %1165 = fcmp une float %1164, 0.000000e+00
  br i1 %1165, label %1177, label %1166

1166:                                             ; preds = %1111
  %1167 = getelementptr inbounds i8, ptr %1140, i64 48
  %1168 = load float, ptr %1167, align 8, !tbaa !178
  %1169 = extractelement <2 x float> %1159, i64 0
  %1170 = fneg float %1169
  %1171 = call float @llvm.fmuladd.f32(float %1170, float 2.000000e+00, float %1168)
  %1172 = getelementptr inbounds i8, ptr %1140, i64 120
  %1173 = load float, ptr %1172, align 8, !tbaa !245
  %1174 = extractelement <2 x float> %1161, i64 0
  %1175 = fadd float %1174, %1173
  %1176 = fsub float %1171, %1175
  br label %1177

1177:                                             ; preds = %1111, %1166
  %1178 = phi float [ %1176, %1166 ], [ %1164, %1111 ]
  %1179 = extractelement <2 x float> %1162, i64 0
  %1180 = fadd float %1179, %1178
  %1181 = getelementptr inbounds i8, ptr %1140, i64 616
  store float %1180, ptr %1181, align 8, !tbaa !251
  %1182 = getelementptr inbounds i8, ptr %1140, i64 84
  %1183 = load float, ptr %1182, align 4, !tbaa !193
  %1184 = fcmp une float %1183, 0.000000e+00
  br i1 %1184, label %1196, label %1185

1185:                                             ; preds = %1177
  %1186 = getelementptr inbounds i8, ptr %1140, i64 52
  %1187 = load float, ptr %1186, align 4, !tbaa !179
  %1188 = extractelement <2 x float> %1159, i64 1
  %1189 = fneg float %1188
  %1190 = call float @llvm.fmuladd.f32(float %1189, float 2.000000e+00, float %1187)
  %1191 = getelementptr inbounds i8, ptr %1140, i64 124
  %1192 = load float, ptr %1191, align 4, !tbaa !213
  %1193 = extractelement <2 x float> %1161, i64 1
  %1194 = fadd float %1193, %1192
  %1195 = fsub float %1190, %1194
  br label %1196

1196:                                             ; preds = %1177, %1185
  %1197 = phi float [ %1195, %1185 ], [ %1183, %1177 ]
  %1198 = extractelement <2 x float> %1162, i64 1
  %1199 = fadd float %1198, %1197
  %1200 = getelementptr inbounds i8, ptr %1140, i64 620
  store float %1199, ptr %1200, align 4, !tbaa !252
  %1201 = extractelement <2 x float> %1159, i64 0
  %1202 = extractelement <2 x float> %1161, i64 0
  %1203 = fadd <2 x float> %1159, %1161
  %1204 = extractelement <2 x float> %1157, i64 0
  %1205 = fsub <2 x float> %1203, %1157
  %1206 = extractelement <2 x float> %1205, i64 0
  %1207 = getelementptr inbounds i8, ptr %1140, i64 348
  store float %1206, ptr %1207, align 4, !tbaa !253
  %1208 = getelementptr inbounds i8, ptr %1140, i64 352
  store <2 x float> zeroinitializer, ptr %1208, align 8, !tbaa !138
  %1209 = extractelement <2 x float> %1156, i64 0
  %1210 = fpext float %1209 to double
  %1211 = fpext float %1201 to double
  %1212 = fadd double %1210, %1211
  %1213 = fpext float %1204 to double
  %1214 = fsub double %1212, %1213
  %1215 = fpext float %1202 to double
  %1216 = fadd double %1214, %1215
  %1217 = fadd double %1216, 0.000000e+00
  %1218 = extractelement <2 x float> %1156, i64 1
  %1219 = fpext float %1218 to double
  %1220 = extractelement <2 x float> %1159, i64 1
  %1221 = fpext float %1220 to double
  %1222 = fadd double %1219, %1221
  %1223 = extractelement <2 x float> %1157, i64 1
  %1224 = fpext float %1223 to double
  %1225 = fsub double %1222, %1224
  %1226 = extractelement <2 x float> %1161, i64 1
  %1227 = fpext float %1226 to double
  %1228 = fadd double %1225, %1227
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #12
  %1229 = fptrunc double %1217 to float
  %1230 = fptrunc double %1228 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %1229, float noundef %1230)
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %1231, i64 296
  %1233 = load i64, ptr %38, align 8
  store i64 %1233, ptr %1232, 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
  %1234 = trunc i64 %1233 to i32
  %1235 = bitcast i32 %1234 to float
  %1236 = fpext float %1235 to double
  %1237 = fsub double %1217, %1236
  %1238 = fptrunc double %1237 to float
  %1239 = lshr i64 %1233, 32
  %1240 = trunc nuw i64 %1239 to i32
  %1241 = bitcast i32 %1240 to float
  %1242 = fpext float %1241 to double
  %1243 = fsub double %1228, %1242
  %1244 = fptrunc double %1243 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef %1238, float noundef %1244)
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %1245, i64 360
  %1247 = load i64, ptr %39, align 8
  store i64 %1247, ptr %1246, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  %1248 = getelementptr inbounds i8, ptr %1245, i64 280
  %1249 = getelementptr inbounds i8, ptr %1245, i64 296
  %1250 = load i64, ptr %1249, align 8
  store i64 %1250, ptr %1248, align 8
  %1251 = getelementptr inbounds i8, ptr %1245, i64 288
  store i64 %1250, ptr %1251, align 8
  %1252 = getelementptr inbounds i8, ptr %1245, i64 304
  store i64 %1250, ptr %1252, align 8
  %1253 = getelementptr inbounds i8, ptr %1245, i64 312
  store i64 %1250, ptr %1253, 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)
  %1254 = load ptr, ptr %4, align 8, !tbaa !5
  %1255 = getelementptr inbounds i8, ptr %1254, i64 328
  %1256 = load i64, ptr %40, align 8
  store i64 %1256, ptr %1255, align 8
  %1257 = getelementptr inbounds i8, ptr %1254, i64 320
  store i64 %1256, ptr %1257, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  %1258 = getelementptr inbounds i8, ptr %1254, i64 336
  %1259 = getelementptr inbounds i8, ptr %1254, i64 368
  store i32 0, ptr %1259, align 8, !tbaa !146
  %1260 = getelementptr inbounds i8, ptr %1254, i64 374
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1258, i8 0, i64 10, i1 false)
  %1261 = load i16, ptr %1260, align 2, !tbaa !254
  %1262 = getelementptr inbounds i8, ptr %1254, i64 372
  store i16 %1261, ptr %1262, align 4, !tbaa !255
  store i16 0, ptr %1260, align 2, !tbaa !254
  %1263 = getelementptr inbounds i8, ptr %1254, i64 376
  store i8 1, ptr %1263, align 8, !tbaa !256
  %1264 = getelementptr inbounds i8, ptr %1254, i64 377
  store i8 0, ptr %1264, align 1, !tbaa !257
  %1265 = getelementptr inbounds i8, ptr %1254, i64 164
  %1266 = load float, ptr %1265, align 4, !tbaa !231
  %1267 = fcmp ogt float %1266, 0.000000e+00
  %1268 = getelementptr inbounds i8, ptr %1254, i64 378
  %1269 = zext i1 %1267 to i8
  store i8 %1269, ptr %1268, align 2, !tbaa !258
  %1270 = getelementptr inbounds i8, ptr %1254, i64 379
  store i8 0, ptr %1270, align 1, !tbaa !259
  %1271 = getelementptr inbounds i8, ptr %1254, i64 388
  %1272 = load float, ptr %468, align 4, !tbaa !183
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1271, float noundef %1272, i1 noundef zeroext %.0315.in476)
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds i8, ptr %1273, i64 416
  store i32 0, ptr %1274, align 8, !tbaa !260
  %1275 = getelementptr inbounds i8, ptr %1273, i64 420
  store i32 0, ptr %1275, align 4, !tbaa !261
  %1276 = getelementptr inbounds i8, ptr %1273, i64 424
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1276, i32 noundef 0)
  %1277 = load ptr, ptr %4, align 8, !tbaa !5
  %1278 = getelementptr inbounds i8, ptr %1277, i64 648
  %1279 = getelementptr inbounds i8, ptr %1277, i64 440
  store ptr %1278, ptr %1279, align 8, !tbaa !262
  %1280 = getelementptr inbounds i8, ptr %1277, i64 448
  store ptr null, ptr %1280, align 8, !tbaa !263
  %1281 = getelementptr inbounds i8, ptr %1277, i64 460
  store i32 1, ptr %1281, align 4, !tbaa !264
  br i1 %150, label %1285, label %1282

1282:                                             ; preds = %1196
  %1283 = getelementptr inbounds i8, ptr %149, i64 460
  %1284 = load i32, ptr %1283, align 4, !tbaa !264
  br label %1285

1285:                                             ; preds = %1196, %1282
  %1286 = phi i32 [ %1284, %1282 ], [ 1, %1196 ]
  %1287 = getelementptr inbounds i8, ptr %1277, i64 464
  store i32 %1286, ptr %1287, align 8, !tbaa !265
  %1288 = getelementptr inbounds i8, ptr %1277, i64 640
  %1289 = load float, ptr %1288, align 8, !tbaa !225
  %1290 = getelementptr inbounds i8, ptr %1277, i64 472
  store float %1289, ptr %1290, align 8, !tbaa !266
  %1291 = getelementptr inbounds i8, ptr %1277, i64 476
  store float -1.000000e+00, ptr %1291, align 4, !tbaa !267
  %1292 = getelementptr inbounds i8, ptr %1277, i64 480
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1292, i32 noundef 0)
  %1293 = load ptr, ptr %4, align 8, !tbaa !5
  %1294 = getelementptr inbounds i8, ptr %1293, i64 496
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1294, i32 noundef 0)
  %1295 = and i32 %.1, 134217728
  %.not405 = icmp eq i32 %1295, 0
  br i1 %.not405, label %._crit_edge550, label %1296

._crit_edge550:                                   ; preds = %1285
  %.pre551 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1301

1296:                                             ; preds = %1285
  %1297 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN5ImGui17GetStyleColorVec4Ei(i32 noundef 55)
  %1298 = call noundef i32 @_ZN5ImGui23ColorConvertFloat4ToU32ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %1297)
  %1299 = load ptr, ptr %4, align 8, !tbaa !5
  %1300 = getelementptr inbounds i8, ptr %1299, i64 468
  store i32 %1298, ptr %1300, align 4, !tbaa !268
  br label %1301

1301:                                             ; preds = %._crit_edge550, %1296
  %1302 = phi ptr [ %.pre551, %._crit_edge550 ], [ %1299, %1296 ]
  %1303 = getelementptr inbounds i8, ptr %1302, i64 226
  %1304 = load i8, ptr %1303, align 2, !tbaa !202
  %1305 = icmp sgt i8 %1304, 0
  br i1 %1305, label %1306, label %1308

1306:                                             ; preds = %1301
  %1307 = add nsw i8 %1304, -1
  store i8 %1307, ptr %1303, align 2, !tbaa !202
  br label %1308

1308:                                             ; preds = %1306, %1301
  %1309 = getelementptr inbounds i8, ptr %1302, i64 227
  %1310 = load i8, ptr %1309, align 1, !tbaa !203
  %1311 = icmp sgt i8 %1310, 0
  br i1 %1311, label %1312, label %1314

1312:                                             ; preds = %1308
  %1313 = add nsw i8 %1310, -1
  store i8 %1313, ptr %1309, align 1, !tbaa !203
  br label %1314

1314:                                             ; preds = %1312, %1308
  br i1 %spec.select507, label %1315, label %.critedge459

1315:                                             ; preds = %1314
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %1302, i32 noundef 2)
  %1316 = load ptr, ptr %4, align 8, !tbaa !5
  %1317 = getelementptr inbounds i8, ptr %43, i64 19360
  %1318 = load ptr, ptr %1317, align 8, !tbaa !243
  %1319 = icmp eq ptr %1316, %1318
  br i1 %1319, label %1320, label %.critedge459

1320:                                             ; preds = %1315
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1316, i1 noundef zeroext false)
  %.pre553.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %.critedge459

.critedge459:                                     ; preds = %1314, %1320, %1315
  %.pre553 = phi ptr [ %1302, %1314 ], [ %.pre553.pre, %1320 ], [ %1316, %1315 ]
  br i1 %.not384, label %1321, label %1332

1321:                                             ; preds = %.critedge459
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #12
  %1322 = load float, ptr %34, align 8, !tbaa !269
  %1323 = getelementptr inbounds i8, ptr %.pre553, i64 100
  %1324 = load float, ptr %1323, align 4, !tbaa !180
  %1325 = fadd float %1322, %1324
  %1326 = getelementptr inbounds i8, ptr %34, i64 4
  %1327 = load float, ptr %1326, align 4, !tbaa !270
  %1328 = load float, ptr %888, align 8, !tbaa !271
  %1329 = fsub float %1328, %1324
  %1330 = getelementptr inbounds i8, ptr %34, i64 12
  %1331 = load float, ptr %1330, align 4, !tbaa !272
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %41, float noundef %1325, float noundef %1327, float noundef %1329, float noundef %1331)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre553, 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
  %.pre552 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1332

1332:                                             ; preds = %1321, %.critedge459
  %1333 = phi ptr [ %.pre552, %1321 ], [ %.pre553, %.critedge459 ]
  %1334 = getelementptr inbounds i8, ptr %1333, i64 626
  store i16 0, ptr %1334, align 2, !tbaa !273
  %1335 = getelementptr inbounds i8, ptr %1333, i64 624
  store i16 0, ptr %1335, align 8, !tbaa !274
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef %1333, ptr noundef nonnull align 4 dereferenceable(16) %34)
  %1336 = getelementptr inbounds i8, ptr %43, i64 18940
  %1337 = load i32, ptr %1336, align 4, !tbaa !275
  %.not406 = icmp eq i32 %1337, 0
  br i1 %.not406, label %1348, label %1338

1338:                                             ; preds = %1332
  %1339 = load ptr, ptr %4, align 8, !tbaa !5
  %1340 = getelementptr inbounds i8, ptr %1339, i64 16
  %1341 = load i32, ptr %1340, align 8, !tbaa !97
  %1342 = icmp eq i32 %1341, %1337
  br i1 %1342, label %1347, label %1343

1343:                                             ; preds = %1338
  %1344 = getelementptr inbounds i8, ptr %1339, i64 140
  %1345 = load i32, ptr %1344, align 4, !tbaa !276
  %1346 = icmp eq i32 %1345, %1337
  br i1 %1346, label %1347, label %1348

1347:                                             ; preds = %1343, %1338
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1348

1348:                                             ; preds = %1347, %1343, %1332
  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 %1358

._crit_edge555:                                   ; preds = %343, %344
  %1349 = trunc nuw i8 %.pre557 to i1
  br i1 %1349, label %1350, label %1352

1350:                                             ; preds = %._crit_edge555
  %1351 = getelementptr inbounds i8, ptr %.pre554, i64 202
  store i8 1, ptr %1351, align 2, !tbaa !165
  br label %1352

1352:                                             ; preds = %1350, %._crit_edge555
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef nonnull %.pre554)
  %1353 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #12
  %1354 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(1029) %1353)
  %1355 = extractvalue { <2 x float>, <2 x float> } %1354, 0
  store <2 x float> %1355, ptr %42, align 8
  %1356 = getelementptr inbounds i8, ptr %42, i64 8
  %1357 = extractvalue { <2 x float>, <2 x float> } %1354, 1
  store <2 x float> %1357, ptr %1356, align 8
  call void @_ZN5ImGuiL24SetLastItemDataForWindowEP11ImGuiWindowRK6ImRect(ptr noundef nonnull %1353, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #12
  br label %1358

1358:                                             ; preds = %1352, %1348
  %1359 = load ptr, ptr %4, align 8, !tbaa !5
  %1360 = getelementptr inbounds i8, ptr %1359, i64 208
  %1361 = load i8, ptr %1360, align 8, !tbaa !163, !range !92, !noundef !93
  %1362 = trunc nuw i8 %1361 to i1
  br i1 %1362, label %1366, label %1363

1363:                                             ; preds = %1358
  %1364 = getelementptr inbounds i8, ptr %1359, i64 544
  %1365 = getelementptr inbounds i8, ptr %1359, i64 552
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1364, ptr noundef nonnull align 4 dereferenceable(8) %1365, i1 noundef zeroext true)
  %.pre558 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1366

1366:                                             ; preds = %1363, %1358
  %1367 = phi ptr [ %.pre558, %1363 ], [ %1359, %1358 ]
  %1368 = getelementptr inbounds i8, ptr %1367, i64 204
  store i8 0, ptr %1368, align 4, !tbaa !277
  %1369 = getelementptr inbounds i8, ptr %1367, i64 216
  %1370 = load i16, ptr %1369, align 8, !tbaa !278
  %1371 = add i16 %1370, 1
  store i16 %1371, ptr %1369, align 8, !tbaa !278
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(112) %213)
  %.pre561 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not355, label %.critedge469, label %1372

1372:                                             ; preds = %1366
  %1373 = getelementptr inbounds i8, ptr %.pre561, i64 208
  %1374 = load i8, ptr %1373, align 8, !tbaa !163, !range !92, !noundef !93
  %1375 = trunc nuw i8 %1374 to i1
  br i1 %1375, label %.critedge469.sink.split, label %1376

1376:                                             ; preds = %1372
  %1377 = and i32 %.1, 285212672
  %brmerge461.not = icmp eq i32 %1377, 16777216
  br i1 %brmerge461.not, label %1378, label %.critedge464

1378:                                             ; preds = %1376
  %1379 = and i32 %.1, 1
  %.not407 = icmp eq i32 %1379, 0
  br i1 %.not407, label %1380, label %1381

1380:                                             ; preds = %1378
  call void @__assert_fail(ptr noundef nonnull @.str.155, ptr noundef nonnull @.str.3, i32 noundef 7258, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1381:                                             ; preds = %1378
  %1382 = getelementptr inbounds i8, ptr %.pre561, i64 24
  %1383 = load i32, ptr %1382, align 8, !tbaa !124
  %1384 = and i32 %1383, 256
  %.not408 = icmp eq i32 %1384, 0
  br i1 %.not408, label %1398, label %1385

1385:                                             ; preds = %1381
  %1386 = getelementptr inbounds i8, ptr %43, i64 19452
  %1387 = load i8, ptr %1386, align 4, !tbaa !279, !range !92, !noundef !93
  %1388 = trunc nuw i8 %1387 to i1
  br i1 %1388, label %1389, label %1398

1389:                                             ; preds = %1385
  %1390 = getelementptr inbounds i8, ptr %43, i64 19360
  %1391 = load ptr, ptr %1390, align 8, !tbaa !243
  %.not409 = icmp eq ptr %1391, null
  br i1 %.not409, label %1398, label %1392

1392:                                             ; preds = %1389
  %1393 = getelementptr inbounds i8, ptr %1391, i64 936
  %1394 = load ptr, ptr %1393, align 8, !tbaa !280
  %1395 = getelementptr inbounds i8, ptr %.pre561, i64 936
  %1396 = load ptr, ptr %1395, align 8, !tbaa !280
  %1397 = icmp eq ptr %1394, %1396
  br label %1398

1398:                                             ; preds = %1385, %1389, %1392, %1381
  %1399 = phi i1 [ false, %1381 ], [ false, %1389 ], [ false, %1385 ], [ %1397, %1392 ]
  %1400 = getelementptr inbounds i8, ptr %43, i64 24888
  %1401 = load i8, ptr %1400, align 8, !tbaa !281, !range !92, !noundef !93
  %1402 = trunc nuw i8 %1401 to i1
  %brmerge462 = select i1 %1402, i1 true, i1 %1399
  br i1 %brmerge462, label %1427, label %1403

1403:                                             ; preds = %1398
  %1404 = getelementptr inbounds i8, ptr %.pre561, i64 512
  %1405 = load float, ptr %1404, align 8, !tbaa !282
  %1406 = getelementptr inbounds i8, ptr %.pre561, i64 520
  %1407 = load float, ptr %1406, align 8, !tbaa !283
  %1408 = fcmp ult float %1405, %1407
  br i1 %1408, label %1409, label %1415

1409:                                             ; preds = %1403
  %1410 = getelementptr inbounds i8, ptr %.pre561, i64 516
  %1411 = load float, ptr %1410, align 4, !tbaa !284
  %1412 = getelementptr inbounds i8, ptr %.pre561, i64 524
  %1413 = load float, ptr %1412, align 4, !tbaa !285
  %1414 = fcmp ult float %1411, %1413
  br i1 %1414, label %1427, label %1415

1415:                                             ; preds = %1409, %1403
  %1416 = getelementptr inbounds i8, ptr %.pre561, i64 226
  %1417 = load i8, ptr %1416, align 2, !tbaa !202
  %1418 = icmp sgt i8 %1417, 0
  br i1 %1418, label %1423, label %1419

1419:                                             ; preds = %1415
  %1420 = getelementptr inbounds i8, ptr %.pre561, i64 227
  %1421 = load i8, ptr %1420, align 1, !tbaa !203
  %1422 = icmp sgt i8 %1421, 0
  br i1 %1422, label %1423, label %1425

1423:                                             ; preds = %1419, %1415
  %1424 = getelementptr inbounds i8, ptr %.pre561, i64 237
  store i8 1, ptr %1424, align 1, !tbaa !164
  br label %1427

1425:                                             ; preds = %1419
  %1426 = getelementptr inbounds i8, ptr %.pre561, i64 236
  store i8 1, ptr %1426, align 4, !tbaa !176
  br label %1427

1427:                                             ; preds = %1398, %1409, %1425, %1423
  br i1 %150, label %.critedge464, label %1428

1428:                                             ; preds = %1427
  %1429 = getelementptr inbounds i8, ptr %149, i64 205
  %1430 = load i8, ptr %1429, align 1, !tbaa !199, !range !92, !noundef !93
  %1431 = trunc nuw i8 %1430 to i1
  br i1 %1431, label %.thread500, label %1433

.thread500:                                       ; preds = %1428
  %1432 = getelementptr inbounds i8, ptr %.pre561, i64 236
  store i8 1, ptr %1432, align 4, !tbaa !176
  br label %1442

1433:                                             ; preds = %1428
  %1434 = getelementptr inbounds i8, ptr %149, i64 236
  %1435 = load i8, ptr %1434, align 4, !tbaa !176
  %1436 = icmp sgt i8 %1435, 0
  br i1 %1436, label %1437, label %.thread499

1437:                                             ; preds = %1433
  %1438 = getelementptr inbounds i8, ptr %.pre561, i64 236
  store i8 1, ptr %1438, align 4, !tbaa !176
  br label %.thread499

.thread499:                                       ; preds = %1433, %1437
  %1439 = getelementptr inbounds i8, ptr %149, i64 237
  %1440 = load i8, ptr %1439, align 1, !tbaa !164
  %1441 = icmp sgt i8 %1440, 0
  br i1 %1441, label %1442, label %.critedge464

1442:                                             ; preds = %.thread500, %.thread499
  %1443 = getelementptr inbounds i8, ptr %.pre561, i64 237
  store i8 1, ptr %1443, align 1, !tbaa !164
  br label %.critedge464

.critedge464:                                     ; preds = %.thread499, %1442, %1427, %1376
  %1444 = load float, ptr %44, align 4, !tbaa !286
  %1445 = fcmp ugt float %1444, 0.000000e+00
  %.phi.trans.insert559 = getelementptr inbounds i8, ptr %.pre561, i64 236
  br i1 %1445, label %1446, label %.thread579

.thread579:                                       ; preds = %.critedge464
  store i8 1, ptr %.phi.trans.insert559, align 4, !tbaa !176
  br label %.thread501

1446:                                             ; preds = %.critedge464
  %.pre560 = load i8, ptr %.phi.trans.insert559, align 4, !tbaa !176
  %1447 = icmp sgt i8 %.pre560, 0
  br i1 %1447, label %.thread501, label %1448

1448:                                             ; preds = %1446
  %1449 = getelementptr inbounds i8, ptr %.pre561, i64 237
  %1450 = load i8, ptr %1449, align 1, !tbaa !164
  %1451 = icmp sgt i8 %1450, 0
  br i1 %1451, label %.thread501, label %1452

1452:                                             ; preds = %1448
  %1453 = getelementptr inbounds i8, ptr %.pre561, i64 238
  %1454 = load i8, ptr %1453, align 2, !tbaa !177
  %1455 = icmp sgt i8 %1454, 0
  %1456 = zext i1 %1455 to i8
  br label %.thread501

.thread501:                                       ; preds = %.thread579, %1446, %1452, %1448
  %.not521 = phi i1 [ false, %1448 ], [ true, %1452 ], [ false, %1446 ], [ false, %.thread579 ]
  %1457 = phi i8 [ 1, %1448 ], [ %1456, %1452 ], [ 1, %1446 ], [ 1, %.thread579 ]
  %1458 = getelementptr inbounds i8, ptr %.pre561, i64 210
  store i8 %1457, ptr %1458, align 2, !tbaa !287
  %1459 = getelementptr inbounds i8, ptr %.pre561, i64 239
  %1460 = load i8, ptr %1459, align 1, !tbaa !288
  %1461 = icmp sgt i8 %1460, 0
  br i1 %1461, label %1462, label %1467

1462:                                             ; preds = %.thread501
  %1463 = add nsw i8 %1460, -1
  store i8 %1463, ptr %1459, align 1, !tbaa !288
  %1464 = getelementptr inbounds i8, ptr %.pre561, i64 20
  %1465 = load i32, ptr %1464, align 4, !tbaa !121
  %1466 = or i32 %1465, 197120
  store i32 %1466, ptr %1464, align 4, !tbaa !121
  br label %1467

1467:                                             ; preds = %1462, %.thread501
  %1468 = getelementptr inbounds i8, ptr %.pre561, i64 205
  %1469 = load i8, ptr %1468, align 1, !tbaa !199, !range !92, !noundef !93
  %1470 = trunc nuw i8 %1469 to i1
  br i1 %1470, label %1475, label %1471

1471:                                             ; preds = %1467
  %1472 = getelementptr inbounds i8, ptr %.pre561, i64 202
  %1473 = load i8, ptr %1472, align 2, !tbaa !165, !range !92, !noundef !93
  %1474 = trunc nuw i8 %1473 to i1
  %brmerge466.not = and i1 %.not521, %1474
  br i1 %brmerge466.not, label %.critedge469.sink.split, label %1475

1475:                                             ; preds = %1471, %1467
  %1476 = getelementptr inbounds i8, ptr %.pre561, i64 226
  %1477 = load i8, ptr %1476, align 2, !tbaa !202
  %1478 = icmp slt i8 %1477, 1
  br i1 %1478, label %1479, label %.critedge469.sink.split

1479:                                             ; preds = %1475
  %1480 = getelementptr inbounds i8, ptr %.pre561, i64 227
  %1481 = load i8, ptr %1480, align 1, !tbaa !203
  %1482 = icmp slt i8 %1481, 1
  br i1 %1482, label %1483, label %.critedge469.sink.split

1483:                                             ; preds = %1479
  %1484 = getelementptr inbounds i8, ptr %.pre561, i64 237
  %1485 = load i8, ptr %1484, align 1, !tbaa !164
  %1486 = icmp slt i8 %1485, 1
  %spec.select467 = zext i1 %1486 to i8
  br label %.critedge469.sink.split

.critedge469.sink.split:                          ; preds = %1372, %1479, %1475, %1471, %1483
  %.sink585 = phi i8 [ 0, %1479 ], [ 0, %1475 ], [ 0, %1471 ], [ %spec.select467, %1483 ], [ 1, %1372 ]
  %1487 = getelementptr inbounds i8, ptr %.pre561, i64 207
  store i8 %.sink585, ptr %1487, align 1, !tbaa !289
  br label %.critedge469

.critedge469:                                     ; preds = %.critedge469.sink.split, %1366
  %1488 = getelementptr inbounds i8, ptr %.pre561, i64 211
  %1489 = load i8, ptr %1488, align 1, !tbaa !114, !range !92, !noundef !93
  %1490 = trunc nuw i8 %1489 to i1
  br i1 %1490, label %1517, label %1491

1491:                                             ; preds = %.critedge469
  %1492 = getelementptr inbounds i8, ptr %43, i64 125
  %1493 = load i8, ptr %1492, align 1, !tbaa !290, !range !92, !noundef !93
  %1494 = trunc nuw i8 %1493 to i1
  %brmerge472.demorgan = and i1 %60, %1494
  br i1 %brmerge472.demorgan, label %1505, label %1495

1495:                                             ; preds = %1491
  %1496 = getelementptr inbounds i8, ptr %43, i64 126
  %1497 = load i8, ptr %1496, align 2, !tbaa !291, !range !92, !noundef !93
  %1498 = trunc nuw i8 %1497 to i1
  br i1 %1498, label %1499, label %1517

1499:                                             ; preds = %1495
  %1500 = getelementptr inbounds i8, ptr %43, i64 25012
  %1501 = load i8, ptr %1500, align 4, !tbaa !292
  %1502 = sext i8 %1501 to i32
  %1503 = load i32, ptr %78, align 8, !tbaa !112
  %1504 = icmp eq i32 %1503, %1502
  br i1 %1504, label %1505, label %1517

1505:                                             ; preds = %1491, %1499
  %1506 = getelementptr inbounds i8, ptr %.pre561, i64 226
  %1507 = load i8, ptr %1506, align 2, !tbaa !202
  %1508 = icmp sgt i8 %1507, 0
  br i1 %1508, label %1509, label %1511

1509:                                             ; preds = %1505
  %1510 = add nuw i8 %1507, 1
  store i8 %1510, ptr %1506, align 2, !tbaa !202
  br label %1511

1511:                                             ; preds = %1509, %1505
  %1512 = getelementptr inbounds i8, ptr %.pre561, i64 227
  %1513 = load i8, ptr %1512, align 1, !tbaa !203
  %1514 = icmp sgt i8 %1513, 0
  br i1 %1514, label %1515, label %1522

1515:                                             ; preds = %1511
  %1516 = add nuw i8 %1513, 1
  store i8 %1516, ptr %1512, align 1, !tbaa !203
  br label %1522

1517:                                             ; preds = %1495, %1499, %.critedge469
  %1518 = getelementptr inbounds i8, ptr %.pre561, i64 207
  %1519 = load i8, ptr %1518, align 1, !tbaa !289, !range !92, !noundef !93
  %1520 = trunc nuw i8 %1519 to i1
  %1521 = xor i1 %1520, true
  br label %1522

1522:                                             ; preds = %1511, %1515, %1517
  %.0313 = phi i1 [ %1521, %1517 ], [ false, %1515 ], [ false, %1511 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #12
  ret i1 %.0313
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui23UpdateWindowSkipRefreshEP11ImGuiWindow(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(107) 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(107)) 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(107)) 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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 16332}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14592, !6, i64 15752, !16, i64 15760, !16, i64 15764, !16, i64 15768, !16, i64 15772, !22, i64 15776, !25, i64 16312, !14, i64 16320, !14, i64 16324, !14, i64 16328, !12, i64 16332, !12, i64 16333, !12, i64 16334, !12, i64 16335, !12, i64 16336, !6, i64 16344, !7, i64 16352, !26, i64 16368, !26, i64 16384, !18, i64 16400, !14, i64 16404, !27, i64 16408, !27, i64 16424, !27, i64 16440, !28, i64 16456, !29, i64 16472, !14, i64 16488, !15, i64 16492, !14, i64 16500, !6, i64 16504, !6, i64 16512, !6, i64 16520, !6, i64 16528, !6, i64 16536, !6, i64 16544, !15, i64 16552, !14, i64 16560, !14, i64 16564, !16, i64 16568, !15, i64 16572, !15, i64 16580, !14, i64 16588, !14, i64 16592, !14, i64 16596, !16, i64 16600, !16, i64 16604, !12, i64 16608, !12, i64 16609, !12, i64 16610, !14, i64 16612, !14, i64 16616, !16, i64 16620, !12, i64 16624, !12, i64 16625, !12, i64 16626, !12, i64 16627, !12, i64 16628, !12, i64 16629, !12, i64 16630, !14, i64 16631, !15, i64 16632, !6, i64 16640, !31, i64 16648, !14, i64 16652, !12, i64 16656, !12, i64 16657, !6, i64 16664, !14, i64 16672, !16, i64 16676, !25, i64 16680, !25, i64 16688, !25, i64 16696, !32, i64 16704, !7, i64 16724, !33, i64 18576, !14, i64 18920, !12, i64 18924, !14, i64 18928, !14, i64 18932, !14, i64 18936, !14, i64 18940, !35, i64 18944, !38, i64 19000, !40, i64 19080, !12, i64 19192, !14, i64 19196, !41, i64 19200, !42, i64 19216, !43, i64 19232, !44, i64 19248, !45, i64 19264, !46, i64 19280, !47, i64 19296, !47, i64 19312, !48, i64 19328, !49, i64 19344, !6, i64 19360, !14, i64 19368, !14, i64 19372, !50, i64 19376, !14, i64 19380, !14, i64 19384, !14, i64 19388, !14, i64 19392, !44, i64 19400, !14, i64 19416, !16, i64 19420, !14, i64 19424, !14, i64 19428, !31, i64 19432, !36, i64 19440, !12, i64 19448, !12, i64 19449, !12, i64 19450, !12, i64 19451, !12, i64 19452, !12, i64 19453, !12, i64 19454, !51, i64 19456, !12, i64 19512, !12, i64 19513, !12, i64 19514, !14, i64 19516, !14, i64 19520, !14, i64 19524, !21, i64 19528, !21, i64 19532, !21, i64 19536, !39, i64 19540, !39, i64 19556, !14, i64 19572, !14, i64 19576, !14, i64 19580, !51, i64 19584, !51, i64 19640, !51, i64 19696, !51, i64 19752, !14, i64 19808, !14, i64 19812, !14, i64 19816, !14, i64 19820, !12, i64 19824, !12, i64 19825, !14, i64 19828, !14, i64 19832, !6, i64 19840, !6, i64 19848, !6, i64 19856, !16, i64 19864, !16, i64 19868, !12, i64 19872, !52, i64 19876, !15, i64 19880, !15, i64 19888, !16, i64 19896, !12, i64 19900, !12, i64 19901, !12, i64 19902, !14, i64 19904, !14, i64 19908, !14, i64 19912, !53, i64 19920, !39, i64 19984, !39, i64 20000, !14, i64 20016, !14, i64 20020, !16, i64 20024, !14, i64 20028, !14, i64 20032, !14, i64 20036, !14, i64 20040, !54, i64 20048, !7, i64 20064, !14, i64 20080, !55, i64 20088, !6, i64 20104, !14, i64 20112, !14, i64 20116, !56, i64 20120, !57, i64 20136, !59, i64 20176, !60, i64 20192, !6, i64 20208, !61, i64 20216, !63, i64 20256, !64, i64 20272, !65, i64 20288, !6, i64 20392, !14, i64 20400, !66, i64 20408, !67, i64 20424, !14, i64 20464, !14, i64 20468, !16, i64 20472, !16, i64 20476, !14, i64 20480, !14, i64 20484, !14, i64 20488, !16, i64 20492, !15, i64 20496, !69, i64 20504, !73, i64 24240, !74, i64 24264, !14, i64 24384, !37, i64 24388, !14, i64 24396, !14, i64 24400, !14, i64 24404, !14, i64 24408, !14, i64 24412, !16, i64 24416, !16, i64 24420, !14, i64 24424, !23, i64 24428, !76, i64 24444, !39, i64 24492, !12, i64 24508, !17, i64 24510, !16, i64 24512, !16, i64 24516, !16, i64 24520, !12, i64 24524, !12, i64 24525, !16, i64 24528, !16, i64 24532, !16, i64 24536, !17, i64 24540, !17, i64 24542, !17, i64 24544, !70, i64 24552, !77, i64 24568, !78, i64 24584, !80, i64 24688, !80, i64 24704, !12, i64 24720, !16, i64 24724, !81, i64 24728, !82, i64 24744, !83, i64 24760, !84, i64 24776, !85, i64 24792, !14, i64 24808, !7, i64 24816, !12, i64 24888, !86, i64 24892, !6, i64 24896, !81, i64 24904, !6, i64 24920, !6, i64 24928, !16, i64 24936, !12, i64 24940, !14, i64 24944, !14, i64 24948, !14, i64 24952, !14, i64 24956, !81, i64 24960, !87, i64 24976, !14, i64 25000, !7, i64 25004, !7, i64 25005, !12, i64 25006, !14, i64 25008, !7, i64 25012, !12, i64 25013, !7, i64 25014, !14, i64 25016, !16, i64 25020, !23, i64 25024, !88, i64 25040, !89, i64 25072, !91, i64 25112, !7, i64 25172, !14, i64 25412, !14, i64 25416, !16, i64 25420, !14, i64 25424, !14, i64 25428, !14, i64 25432, !70, i64 25440, !7, i64 25456}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS7ImGuiIO", !14, i64 0, !14, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !12, i64 60, !6, i64 64, !15, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !12, i64 116, !12, i64 117, !12, i64 118, !12, i64 119, !12, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !17, i64 216, !12, i64 218, !12, i64 219, !12, i64 220, !12, i64 221, !12, i64 222, !12, i64 223, !12, i64 224, !16, i64 228, !14, i64 232, !14, i64 236, !14, i64 240, !14, i64 244, !15, i64 248, !6, i64 256, !15, i64 264, !7, i64 272, !16, i64 280, !16, i64 284, !18, i64 288, !12, i64 292, !12, i64 293, !12, i64 294, !12, i64 295, !14, i64 296, !7, i64 300, !12, i64 10956, !15, i64 10960, !7, i64 10968, !7, i64 11008, !7, i64 11048, !7, i64 11053, !7, i64 11058, !7, i64 11068, !7, i64 11078, !7, i64 11083, !7, i64 11088, !12, i64 11093, !12, i64 11094, !7, i64 11096, !7, i64 11116, !7, i64 11136, !16, i64 11156, !12, i64 11160, !12, i64 11161, !7, i64 11162, !12, i64 11163, !17, i64 11164, !19, i64 11168, !7, i64 11184, !7, i64 13848, !7, i64 14516}
!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, !21, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !15, i64 160, !21, i64 168, !15, i64 172, !15, i64 180, !16, i64 188, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !16, i64 224, !12, i64 228, !12, i64 229, !12, i64 230, !16, i64 232, !16, i64 236, !7, i64 240, !16, i64 1136, !16, i64 1140, !16, i64 1144, !14, i64 1148, !14, i64 1152}
!21 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!22 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !23, i64 32, !14, i64 48, !24, i64 56, !7, i64 72, !16, i64 456, !7, i64 460, !6, i64 528}
!23 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!24 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !14, i64 0, !14, 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", !14, i64 0, !14, i64 4, !6, i64 8}
!35 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !14, i64 4, !14, i64 8, !36, i64 16, !16, i64 24, !14, i64 28, !14, i64 32, !12, i64 36, !7, i64 37, !37, i64 38, !14, i64 48}
!36 = !{!"long long", !7, i64 0}
!37 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!38 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !39, i64 12, !39, i64 28, !39, i64 44, !39, i64 60, !14, i64 76}
!39 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!40 = !{!"_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, !39, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100, !14, i64 108}
!41 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!46 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!47 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!51 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !39, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !36, i64 48}
!52 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!53 = !{!"_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}
!54 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS6ImPoolI10ImGuiTableE", !58, i64 0, !29, i64 16, !14, i64 32, !14, i64 36}
!58 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !62, i64 0, !29, i64 16, !14, i64 32, !14, i64 36}
!62 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!65 = !{!"_ZTS19ImGuiBoxSelectState", !14, i64 0, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 9, !15, i64 12, !15, i64 20, !15, i64 28, !6, i64 40, !12, i64 48, !39, i64 52, !39, i64 68, !39, i64 84}
!66 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!67 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !68, i64 0, !29, i64 16, !14, i64 32, !14, i64 36}
!68 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !14, i64 0, !14, i64 4, !6, i64 8}
!69 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !70, i64 40, !70, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !71, 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}
!70 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!71 = !{!"_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, !72, i64 32}
!72 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!73 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !70, i64 8}
!74 = !{!"_ZTS6ImFont", !59, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !75, 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}
!75 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{!"_ZTS21ImGuiComboPreviewData", !39, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!77 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{!"_ZTS22ImGuiTypingSelectState", !79, i64 0, !7, i64 24, !14, i64 88, !14, i64 92, !16, i64 96, !12, i64 100}
!79 = !{!"_ZTS24ImGuiTypingSelectRequest", !14, i64 0, !14, i64 4, !6, i64 8, !12, i64 16, !12, i64 17, !7, i64 18}
!80 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!81 = !{!"_ZTS15ImGuiTextBuffer", !70, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !70, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !70, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!86 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!87 = !{!"_ZTS14ImGuiTextIndex", !45, i64 0, !14, i64 16}
!88 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24}
!89 = !{!"_ZTS16ImGuiIDStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !90, i64 16, !12, i64 32, !16, i64 36}
!90 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!91 = !{!"_ZTS19ImGuiDebugAllocInfo", !14, i64 0, !14, i64 4, !17, i64 8, !7, i64 12}
!92 = !{i8 0, i8 2}
!93 = !{}
!94 = !{!11, !14, i64 16324}
!95 = !{!11, !14, i64 16320}
!96 = !{!11, !14, i64 16500}
!97 = !{!98, !14, i64 16}
!98 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !6, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !14, i64 148, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !12, i64 200, !12, i64 201, !12, i64 202, !12, i64 203, !12, i64 204, !12, i64 205, !12, i64 206, !12, i64 207, !12, i64 208, !12, i64 209, !12, i64 210, !12, i64 211, !12, i64 212, !12, i64 213, !7, i64 214, !7, i64 215, !17, i64 216, !17, i64 218, !17, i64 220, !17, i64 222, !17, i64 224, !7, i64 226, !7, i64 227, !12, i64 228, !21, i64 232, !7, i64 236, !7, i64 237, !7, i64 238, !7, i64 239, !14, i64 240, !14, i64 241, !14, i64 242, !15, i64 244, !15, i64 252, !77, i64 264, !99, i64 280, !39, i64 512, !39, i64 528, !39, i64 544, !39, i64 560, !39, i64 576, !39, i64 592, !39, i64 608, !102, i64 624, !102, i64 628, !14, i64 632, !16, i64 636, !16, i64 640, !29, i64 648, !103, i64 664, !16, i64 680, !14, i64 684, !6, i64 688, !104, i64 696, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !7, i64 960, !7, i64 968, !7, i64 1000, !14, i64 1016, !14, i64 1020, !14, i64 1024, !12, i64 1028}
!99 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !12, i64 64, !12, i64 65, !100, i64 68, !100, i64 72, !100, i64 76, !15, i64 80, !50, i64 88, !17, i64 92, !17, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !101, i64 108, !14, i64 136, !14, i64 140, !27, 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, !59, i64 200, !59, i64 216}
!100 = !{!"_ZTS6ImVec1", !16, i64 0}
!101 = !{!"_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}
!102 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!103 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!104 = !{!"_ZTS10ImDrawList", !105, i64 0, !19, i64 16, !106, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !24, i64 80, !107, i64 96, !108, i64 128, !109, i64 152, !110, i64 168, !16, i64 184, !6, i64 192}
!105 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!106 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!107 = !{!"_ZTS15ImDrawCmdHeader", !23, i64 0, !6, i64 16, !14, i64 24}
!108 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !60, i64 8}
!109 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!110 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!111 = !{!98, !14, i64 632}
!112 = !{!11, !14, i64 16456}
!113 = !{!11, !12, i64 16333}
!114 = !{!98, !12, i64 211}
!115 = !{!11, !14, i64 19312}
!116 = !{!98, !14, i64 148}
!117 = !{!118, !14, i64 0}
!118 = !{!"_ZTS14ImGuiPopupData", !14, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !15, i64 36, !15, i64 44}
!119 = !{!118, !6, i64 8}
!120 = !{!98, !12, i64 209}
!121 = !{!98, !14, i64 20}
!122 = !{!11, !14, i64 19080}
!123 = !{!11, !14, i64 19136}
!124 = !{!98, !14, i64 24}
!125 = !{!11, !25, i64 16312}
!126 = !{!98, !16, i64 636}
!127 = !{!98, !17, i64 220}
!128 = !{!11, !14, i64 16488}
!129 = !{!98, !17, i64 222}
!130 = !{!131, !6, i64 0}
!131 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !38, i64 8, !132, i64 88, !12, i64 106}
!132 = !{!"_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}
!133 = !{!98, !6, i64 896}
!134 = !{!98, !14, i64 264}
!135 = !{!11, !6, i64 16504}
!136 = !{i64 0, i64 4, !137, i64 4, i64 4, !137, i64 8, i64 4, !137, i64 12, i64 4, !138, i64 16, i64 4, !138, i64 20, i64 4, !138, i64 24, i64 4, !138, i64 28, i64 4, !138, i64 32, i64 4, !138, i64 36, i64 4, !138, i64 40, i64 4, !138, i64 44, i64 4, !138, i64 48, i64 4, !138, i64 52, i64 4, !138, i64 56, i64 4, !138, i64 60, i64 4, !138, i64 64, i64 4, !138, i64 68, i64 4, !138, i64 72, i64 4, !138, i64 76, i64 4, !137}
!137 = !{!14, !14, i64 0}
!138 = !{!16, !16, i64 0}
!139 = !{!11, !14, i64 18936}
!140 = !{!131, !12, i64 106}
!141 = !{!11, !14, i64 24396}
!142 = !{!98, !6, i64 904}
!143 = !{!98, !6, i64 944}
!144 = !{!11, !14, i64 18932}
!145 = !{!98, !14, i64 1016}
!146 = !{!98, !50, i64 368}
!147 = !{!118, !14, i64 24}
!148 = !{!11, !14, i64 19084}
!149 = !{!11, !14, i64 19088}
!150 = !{!11, !16, i64 19112}
!151 = !{!11, !16, i64 19116}
!152 = !{!98, !16, i64 56}
!153 = !{!98, !16, i64 60}
!154 = !{!11, !16, i64 19128}
!155 = !{!98, !16, i64 168}
!156 = !{!98, !16, i64 176}
!157 = !{!11, !16, i64 19132}
!158 = !{!98, !16, i64 172}
!159 = !{!98, !16, i64 180}
!160 = !{!11, !12, i64 19140}
!161 = !{!11, !14, i64 19092}
!162 = !{!98, !6, i64 912}
!163 = !{!98, !12, i64 208}
!164 = !{!98, !7, i64 237}
!165 = !{!98, !12, i64 202}
!166 = !{!98, !12, i64 213}
!167 = !{i64 0, i64 4, !138, i64 4, i64 4, !138, i64 8, i64 4, !138, i64 12, i64 4, !138}
!168 = !{!98, !6, i64 688}
!169 = !{!98, !14, i64 456}
!170 = !{!98, !12, i64 1028}
!171 = !{!11, !6, i64 19856}
!172 = !{!98, !6, i64 8}
!173 = !{!98, !14, i64 136}
!174 = !{!175, !175, i64 0}
!175 = !{!"long", !7, i64 0}
!176 = !{!98, !7, i64 236}
!177 = !{!98, !7, i64 238}
!178 = !{!98, !16, i64 48}
!179 = !{!98, !16, i64 52}
!180 = !{!98, !16, i64 100}
!181 = !{!20, !16, i64 48}
!182 = !{!20, !16, i64 12}
!183 = !{!20, !16, i64 76}
!184 = !{!11, !16, i64 19180}
!185 = !{!98, !16, i64 380}
!186 = !{!11, !16, i64 19184}
!187 = !{!98, !16, i64 384}
!188 = !{!11, !16, i64 15760}
!189 = !{!11, !16, i64 14656}
!190 = !{!98, !16, i64 104}
!191 = !{!98, !16, i64 108}
!192 = !{!98, !16, i64 80}
!193 = !{!98, !16, i64 84}
!194 = !{!11, !6, i64 16512}
!195 = !{!11, !14, i64 16592}
!196 = !{!11, !14, i64 16596}
!197 = !{!17, !17, i64 0}
!198 = !{!98, !12, i64 206}
!199 = !{!98, !12, i64 205}
!200 = !{!98, !16, i64 112}
!201 = !{!98, !16, i64 116}
!202 = !{!98, !7, i64 226}
!203 = !{!98, !7, i64 227}
!204 = !{!98, !12, i64 228}
!205 = !{!15, !16, i64 4}
!206 = !{!98, !21, i64 232}
!207 = !{!98, !14, i64 424}
!208 = !{!98, !16, i64 244}
!209 = !{!98, !16, i64 96}
!210 = !{!11, !12, i64 95}
!211 = !{!98, !7, i64 214}
!212 = !{!98, !7, i64 215}
!213 = !{!98, !16, i64 124}
!214 = !{!98, !12, i64 201}
!215 = !{!98, !12, i64 200}
!216 = !{!15, !16, i64 0}
!217 = !{!20, !16, i64 116}
!218 = !{!98, !16, i64 544}
!219 = !{!98, !16, i64 532}
!220 = !{!98, !16, i64 548}
!221 = !{!98, !16, i64 536}
!222 = !{!98, !16, i64 552}
!223 = !{!98, !16, i64 540}
!224 = !{!98, !16, i64 556}
!225 = !{!98, !16, i64 640}
!226 = !{!98, !16, i64 64}
!227 = !{!98, !16, i64 88}
!228 = !{!98, !16, i64 160}
!229 = !{!98, !16, i64 68}
!230 = !{!98, !16, i64 92}
!231 = !{!98, !16, i64 164}
!232 = !{!104, !14, i64 0}
!233 = !{!234, !14, i64 32}
!234 = !{!"_ZTS9ImDrawCmd", !23, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!235 = !{!11, !6, i64 15752}
!236 = !{!74, !6, i64 64}
!237 = !{!238, !6, i64 8}
!238 = !{!"_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, !43, i64 88, !239, i64 104, !240, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!239 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!240 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!241 = !{!104, !14, i64 32}
!242 = !{!11, !6, i64 19840}
!243 = !{!11, !6, i64 19360}
!244 = !{!98, !6, i64 928}
!245 = !{!98, !16, i64 120}
!246 = !{!98, !16, i64 528}
!247 = !{!98, !16, i64 152}
!248 = !{!98, !16, i64 560}
!249 = !{!98, !16, i64 156}
!250 = !{!98, !16, i64 564}
!251 = !{!98, !16, i64 616}
!252 = !{!98, !16, i64 620}
!253 = !{!98, !16, i64 348}
!254 = !{!98, !17, i64 374}
!255 = !{!98, !17, i64 372}
!256 = !{!98, !12, i64 376}
!257 = !{!98, !12, i64 377}
!258 = !{!98, !12, i64 378}
!259 = !{!98, !12, i64 379}
!260 = !{!98, !14, i64 416}
!261 = !{!98, !14, i64 420}
!262 = !{!98, !6, i64 440}
!263 = !{!98, !6, i64 448}
!264 = !{!98, !14, i64 460}
!265 = !{!98, !14, i64 464}
!266 = !{!98, !16, i64 472}
!267 = !{!98, !16, i64 476}
!268 = !{!98, !14, i64 468}
!269 = !{!39, !16, i64 0}
!270 = !{!39, !16, i64 4}
!271 = !{!39, !16, i64 8}
!272 = !{!39, !16, i64 12}
!273 = !{!98, !17, i64 626}
!274 = !{!98, !17, i64 624}
!275 = !{!11, !14, i64 18940}
!276 = !{!98, !14, i64 140}
!277 = !{!98, !12, i64 204}
!278 = !{!98, !17, i64 216}
!279 = !{!11, !12, i64 19452}
!280 = !{!98, !6, i64 936}
!281 = !{!11, !12, i64 24888}
!282 = !{!98, !16, i64 512}
!283 = !{!98, !16, i64 520}
!284 = !{!98, !16, i64 516}
!285 = !{!98, !16, i64 524}
!286 = !{!20, !16, i64 0}
!287 = !{!98, !12, i64 210}
!288 = !{!98, !7, i64 239}
!289 = !{!98, !12, i64 207}
!290 = !{!11, !12, i64 125}
!291 = !{!11, !12, i64 126}
!292 = !{!11, !7, i64 25012}


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