; LLVM IR from hbatagelo/abcg :: abcg/external/imgui/imgui.ll (ZN5ImGui5BeginEPKcPbi)

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

%struct.ImGuiWindowStackData = type <{ ptr, %struct.ImGuiLastItemData, %struct.ImGuiStackSizes, [2 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiStackSizes = type { i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, %struct.ImGuiStorage, i32, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, [140 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImVector.12, %struct.ImVector.12, i32, %struct.ImVector.13, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i32, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.14, [16 x i8], i32, %struct.ImVector.15, ptr, i32, %struct.ImVector.16, %struct.ImPool, %struct.ImVector.18, %struct.ImVector.19, ptr, %struct.ImPool.20, %struct.ImVector.22, %struct.ImVector.23, i32, i32, float, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, float, i8, i8, float, float, float, float, i16, i16, %struct.ImVector.24, %struct.ImVector.9, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.26, %struct.ImChunkStream, %struct.ImChunkStream.27, %struct.ImVector.28, i32, [7 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i8, i8, i8, i8, i8, i32, %struct.ImGuiMetricsConfig, %struct.ImGuiStackTool, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.24 }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, float, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [652 x i32], [652 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, i32, [652 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImVector.0 = 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, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.1, [48 x %struct.ImVec2], float, [64 x i8], 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.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [140 x i16], %struct.ImVector.5, %struct.ImVector.5 }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.17, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImPool.20 = type { %struct.ImVector.21, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector, %struct.ImVector.24, %struct.ImVector.24, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.18, float, float, %struct.ImVector, %struct.ImVector.25, 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.25 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.24 }
%struct.ImChunkStream.27 = type { %struct.ImVector.24 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.24 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.10, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.29, i8, float }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.9, %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.32, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], 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, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.2, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.18, %struct.ImVector.18 }
%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.32 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.33, %struct.ImVector, %struct.ImVector.34, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.35, %struct.ImVector.36, %struct.ImVector.1, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.19 }
%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.43, %struct.ImVector.44, [64 x %struct.ImVec4], ptr, i32, i32, i32, [4 x i8] }>
%struct.ImVector.43 = type { i32, i32, ptr }
%struct.ImVector.44 = type { i32, i32, ptr }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.134 = 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> @_ZL7ImFloorRK6ImVec2(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 @_ZL7ImFloorf(float noundef) #4

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

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

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

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

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

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

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

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

; Function Attrs: 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(184)) #8 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr 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(981)) #8 align 2

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

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

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

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

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

; Function Attrs: 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
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 ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca [4 x i32], align 16
  %60 = alloca i32, align 4
  %61 = alloca float, align 4
  %62 = alloca %struct.ImVec2, align 4
  %63 = alloca %struct.ImVec2, align 4
  %64 = alloca %struct.ImVec2, align 4
  %65 = alloca %struct.ImVec2, align 4
  %66 = alloca %struct.ImVec2, align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca %struct.ImVec2, align 4
  %70 = alloca %struct.ImRect, align 4
  %71 = alloca %struct.ImRect, align 4
  %72 = alloca %struct.ImRect, align 4
  %73 = alloca float, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca i8, align 1
  %77 = alloca ptr, align 8
  %78 = alloca i8, align 1
  %79 = alloca %struct.ImRect, align 4
  %80 = alloca %struct.ImRect, align 4
  %81 = alloca i8, align 1
  %82 = alloca ptr, align 8
  %83 = alloca i8, align 1
  %84 = alloca i8, align 1
  %85 = alloca i8, align 1
  %86 = alloca i8, align 1
  %87 = alloca float, align 4
  %88 = alloca float, align 4
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca %struct.ImVec2, align 4
  %92 = alloca %struct.ImVec2, align 4
  %93 = alloca %struct.ImVec2, align 4
  %94 = alloca %struct.ImRect, align 4
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #13
  %99 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %99, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #13
  %100 = load ptr, ptr %8, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ImGuiContext, ptr %100, i32 0, i32 5
  store ptr %101, ptr %9, align 8, !tbaa !5
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = icmp ne ptr %102, null
  br i1 %103, label %104, label %110

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

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

112:                                              ; preds = %110
  br label %115

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

114:                                              ; No predecessors!
  br label %115

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

120:                                              ; preds = %115
  br label %123

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

122:                                              ; No predecessors!
  br label %123

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

131:                                              ; preds = %123
  br label %134

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

133:                                              ; No predecessors!
  br label %134

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

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

146:                                              ; preds = %142, %134
  %147 = load i32, ptr %7, align 4, !tbaa !9
  %148 = and i32 %147, 786944
  %149 = icmp eq i32 %148, 786944
  br i1 %149, label %150, label %153

150:                                              ; preds = %146
  %151 = load i32, ptr %7, align 4, !tbaa !9
  %152 = or i32 %151, 6
  store i32 %152, ptr %7, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %150, %146
  %154 = load i32, ptr %7, align 4, !tbaa !9
  %155 = and i32 %154, 8388608
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %165

157:                                              ; preds = %153
  %158 = load i32, ptr %7, align 4, !tbaa !9
  %159 = and i32 %158, 16777216
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  br label %164

162:                                              ; preds = %157
  call void @__assert_fail(ptr noundef @.str.129, ptr noundef @.str.3, i32 noundef 6083, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

163:                                              ; No predecessors!
  br label %164

164:                                              ; preds = %163, %161
  br label %165

165:                                              ; preds = %164, %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #13
  %166 = load ptr, ptr %8, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.ImGuiContext, ptr %166, i32 0, i32 11
  %168 = load i32, ptr %167, align 8, !tbaa !80
  store i32 %168, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #13
  %169 = load ptr, ptr %10, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.ImGuiWindow, ptr %169, i32 0, i32 72
  %171 = load i32, ptr %170, align 8, !tbaa !82
  %172 = load i32, ptr %12, align 4, !tbaa !9
  %173 = icmp ne i32 %171, %172
  %174 = zext i1 %173 to i8
  store i8 %174, ptr %13, align 1, !tbaa !81
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.ImGuiContext, ptr %175, i32 0, i32 23
  %177 = getelementptr inbounds %struct.ImVector.3, ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 8, !tbaa !96
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %185

180:                                              ; preds = %165
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.ImGuiContext, ptr %181, i32 0, i32 15
  %183 = load i8, ptr %182, align 1, !tbaa !97, !range !77, !noundef !78
  %184 = trunc i8 %183 to i1
  br label %185

185:                                              ; preds = %180, %165
  %186 = phi i1 [ false, %165 ], [ %184, %180 ]
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.ImGuiWindow, ptr %187, i32 0, i32 39
  %189 = zext i1 %186 to i8
  store i8 %189, ptr %188, align 2, !tbaa !98
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #13
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.ImGuiWindow, ptr %190, i32 0, i32 72
  %192 = load i32, ptr %191, align 8, !tbaa !82
  %193 = load i32, ptr %12, align 4, !tbaa !9
  %194 = sub nsw i32 %193, 1
  %195 = icmp slt i32 %192, %194
  %196 = zext i1 %195 to i8
  store i8 %196, ptr %14, align 1, !tbaa !81
  %197 = load i32, ptr %7, align 4, !tbaa !9
  %198 = and i32 %197, 67108864
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %200, label %234

200:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #13
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.ImGuiContext, ptr %201, i32 0, i32 80
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.ImGuiContext, ptr %203, i32 0, i32 81
  %205 = getelementptr inbounds %struct.ImVector.12, ptr %204, i32 0, i32 0
  %206 = load i32, ptr %205, align 8, !tbaa !99
  %207 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %202, i32 noundef %206)
  store ptr %207, ptr %15, align 8, !tbaa !5
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.ImGuiWindow, ptr %208, i32 0, i32 48
  %210 = load i32, ptr %209, align 4, !tbaa !100
  %211 = load ptr, ptr %15, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ImGuiPopupData, ptr %211, i32 0, i32 0
  %213 = load i32, ptr %212, align 8, !tbaa !101
  %214 = icmp ne i32 %210, %213
  %215 = zext i1 %214 to i32
  %216 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %217 = trunc i8 %216 to i1
  %218 = zext i1 %217 to i32
  %219 = or i32 %218, %215
  %220 = icmp ne i32 %219, 0
  %221 = zext i1 %220 to i8
  store i8 %221, ptr %14, align 1, !tbaa !81
  %222 = load ptr, ptr %10, align 8, !tbaa !5
  %223 = load ptr, ptr %15, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.ImGuiPopupData, ptr %223, i32 0, i32 2
  %225 = load ptr, ptr %224, align 8, !tbaa !103
  %226 = icmp ne ptr %222, %225
  %227 = zext i1 %226 to i32
  %228 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %229 = trunc i8 %228 to i1
  %230 = zext i1 %229 to i32
  %231 = or i32 %230, %227
  %232 = icmp ne i32 %231, 0
  %233 = zext i1 %232 to i8
  store i8 %233, ptr %14, align 1, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #13
  br label %234

234:                                              ; preds = %200, %185
  %235 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %236 = trunc i8 %235 to i1
  %237 = load ptr, ptr %10, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.ImGuiWindow, ptr %237, i32 0, i32 37
  %239 = zext i1 %236 to i8
  store i8 %239, ptr %238, align 4, !tbaa !104
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.ImGuiWindow, ptr %240, i32 0, i32 37
  %242 = load i8, ptr %241, align 4, !tbaa !104, !range !77, !noundef !78
  %243 = trunc i8 %242 to i1
  br i1 %243, label %244, label %246

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

246:                                              ; preds = %244, %234
  %247 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %248 = trunc i8 %247 to i1
  br i1 %248, label %249, label %275

249:                                              ; preds = %246
  %250 = load ptr, ptr %10, align 8, !tbaa !5
  %251 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %252 = trunc i8 %251 to i1
  %253 = load i32, ptr %7, align 4, !tbaa !9
  call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef %250, i1 noundef zeroext %252, i32 noundef %253)
  %254 = load i32, ptr %7, align 4, !tbaa !9
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ImGuiWindow, ptr %255, i32 0, i32 3
  store i32 %254, ptr %256, align 4, !tbaa !105
  %257 = load i32, ptr %12, align 4, !tbaa !9
  %258 = load ptr, ptr %10, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ImGuiWindow, ptr %258, i32 0, i32 72
  store i32 %257, ptr %259, align 8, !tbaa !82
  %260 = load ptr, ptr %8, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ImGuiContext, ptr %260, i32 0, i32 10
  %262 = load double, ptr %261, align 8, !tbaa !106
  %263 = fptrunc double %262 to float
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiWindow, ptr %264, i32 0, i32 73
  store float %263, ptr %265, align 4, !tbaa !107
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImGuiWindow, ptr %266, i32 0, i32 45
  store i16 0, ptr %267, align 2, !tbaa !108
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiContext, ptr %268, i32 0, i32 25
  %270 = load i32, ptr %269, align 8, !tbaa !109
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %269, align 8, !tbaa !109
  %272 = trunc i32 %270 to i16
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiWindow, ptr %273, i32 0, i32 46
  store i16 %272, ptr %274, align 8, !tbaa !110
  br label %279

275:                                              ; preds = %246
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ImGuiWindow, ptr %276, i32 0, i32 3
  %278 = load i32, ptr %277, align 4, !tbaa !105
  store i32 %278, ptr %7, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %275, %249
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #13
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ImGuiContext, ptr %280, i32 0, i32 23
  %282 = call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %281)
  br i1 %282, label %283, label %284

283:                                              ; preds = %279
  br label %290

284:                                              ; preds = %279
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiContext, ptr %285, i32 0, i32 23
  %287 = call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %286)
  %288 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %287, i32 0, i32 0
  %289 = load ptr, ptr %288, align 8, !tbaa !111
  br label %290

290:                                              ; preds = %284, %283
  %291 = phi ptr [ null, %283 ], [ %289, %284 ]
  store ptr %291, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  %292 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %293 = trunc i8 %292 to i1
  br i1 %293, label %294, label %303

294:                                              ; preds = %290
  %295 = load i32, ptr %7, align 4, !tbaa !9
  %296 = and i32 %295, 83886080
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %300

298:                                              ; preds = %294
  %299 = load ptr, ptr %16, align 8, !tbaa !5
  br label %301

300:                                              ; preds = %294
  br label %301

301:                                              ; preds = %300, %298
  %302 = phi ptr [ %299, %298 ], [ null, %300 ]
  br label %307

303:                                              ; preds = %290
  %304 = load ptr, ptr %10, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiWindow, ptr %304, i32 0, i32 82
  %306 = load ptr, ptr %305, align 8, !tbaa !114
  br label %307

307:                                              ; preds = %303, %301
  %308 = phi ptr [ %302, %301 ], [ %306, %303 ]
  store ptr %308, ptr %17, align 8, !tbaa !5
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = icmp ne ptr %309, null
  br i1 %310, label %316, label %311

311:                                              ; preds = %307
  %312 = load i32, ptr %7, align 4, !tbaa !9
  %313 = and i32 %312, 16777216
  %314 = icmp ne i32 %313, 0
  %315 = xor i1 %314, true
  br label %316

316:                                              ; preds = %311, %307
  %317 = phi i1 [ true, %307 ], [ %315, %311 ]
  br i1 %317, label %318, label %319

318:                                              ; preds = %316
  br label %321

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

320:                                              ; No predecessors!
  br label %321

321:                                              ; preds = %320, %318
  %322 = load ptr, ptr %10, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.ImGuiWindow, ptr %322, i32 0, i32 61
  %324 = getelementptr inbounds %struct.ImVector.9, ptr %323, i32 0, i32 0
  %325 = load i32, ptr %324, align 8, !tbaa !115
  %326 = icmp eq i32 %325, 0
  br i1 %326, label %327, label %332

327:                                              ; preds = %321
  %328 = load ptr, ptr %10, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.ImGuiWindow, ptr %328, i32 0, i32 61
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ImGuiWindow, ptr %330, i32 0, i32 2
  call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %329, ptr noundef nonnull align 4 dereferenceable(4) %331)
  br label %332

332:                                              ; preds = %327, %321
  %333 = load ptr, ptr %10, align 8, !tbaa !5
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImGuiContext, ptr %334, i32 0, i32 27
  store ptr %333, ptr %335, align 8, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 88, ptr %18) #13
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %18)
  %336 = load ptr, ptr %10, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 0
  store ptr %336, ptr %337, align 8, !tbaa !111
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ImGuiContext, ptr %338, i32 0, i32 72
  %340 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %340, ptr align 4 %339, i64 60, i1 false), !tbaa.struct !117
  %341 = getelementptr inbounds %struct.ImGuiWindowStackData, ptr %18, i32 0, i32 2
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %341, ptr noundef %342)
  %343 = load ptr, ptr %8, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiContext, ptr %343, i32 0, i32 23
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %344, ptr noundef nonnull align 8 dereferenceable(86) %18)
  %345 = load i32, ptr %7, align 4, !tbaa !9
  %346 = and i32 %345, 268435456
  %347 = icmp ne i32 %346, 0
  br i1 %347, label %348, label %353

348:                                              ; preds = %332
  %349 = load ptr, ptr %8, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.ImGuiContext, ptr %349, i32 0, i32 82
  %351 = load i32, ptr %350, align 8, !tbaa !119
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %350, align 8, !tbaa !119
  br label %353

353:                                              ; preds = %348, %332
  %354 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %355 = trunc i8 %354 to i1
  br i1 %355, label %356, label %363

356:                                              ; preds = %353
  %357 = load ptr, ptr %10, align 8, !tbaa !5
  %358 = load i32, ptr %7, align 4, !tbaa !9
  %359 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %357, i32 noundef %358, ptr noundef %359)
  %360 = load ptr, ptr %16, align 8, !tbaa !5
  %361 = load ptr, ptr %10, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImGuiWindow, ptr %361, i32 0, i32 83
  store ptr %360, ptr %362, align 8, !tbaa !120
  br label %363

363:                                              ; preds = %356, %353
  %364 = load ptr, ptr %10, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiWindow, ptr %364, i32 0, i32 2
  %366 = load i32, ptr %365, align 8, !tbaa !121
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %366)
  %367 = load ptr, ptr %8, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiContext, ptr %367, i32 0, i32 68
  %369 = load i32, ptr %368, align 4, !tbaa !122
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiWindow, ptr %370, i32 0, i32 91
  store i32 %369, ptr %371, align 8, !tbaa !123
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImGuiContext, ptr %372, i32 0, i32 27
  store ptr null, ptr %373, align 8, !tbaa !116
  %374 = load i32, ptr %7, align 4, !tbaa !9
  %375 = and i32 %374, 67108864
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %377, label %402

377:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %378 = load ptr, ptr %8, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiContext, ptr %378, i32 0, i32 80
  %380 = load ptr, ptr %8, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiContext, ptr %380, i32 0, i32 81
  %382 = getelementptr inbounds %struct.ImVector.12, ptr %381, i32 0, i32 0
  %383 = load i32, ptr %382, align 8, !tbaa !99
  %384 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %379, i32 noundef %383)
  store ptr %384, ptr %19, align 8, !tbaa !5
  %385 = load ptr, ptr %10, align 8, !tbaa !5
  %386 = load ptr, ptr %19, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ImGuiPopupData, ptr %386, i32 0, i32 2
  store ptr %385, ptr %387, align 8, !tbaa !103
  %388 = load ptr, ptr %16, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiWindow, ptr %388, i32 0, i32 62
  %390 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %389, i32 0, i32 15
  %391 = load i32, ptr %390, align 8, !tbaa !124
  %392 = load ptr, ptr %19, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ImGuiPopupData, ptr %392, i32 0, i32 4
  store i32 %391, ptr %393, align 8, !tbaa !125
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ImGuiContext, ptr %394, i32 0, i32 81
  %396 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull align 8 dereferenceable(52) %396)
  %397 = load ptr, ptr %19, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.ImGuiPopupData, ptr %397, i32 0, i32 0
  %399 = load i32, ptr %398, align 8, !tbaa !101
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.ImGuiWindow, ptr %400, i32 0, i32 48
  store i32 %399, ptr %401, align 4, !tbaa !100
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  br label %402

402:                                              ; preds = %377, %363
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #13
  store i8 0, ptr %20, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !81
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiContext, ptr %403, i32 0, i32 73
  %405 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %404, i32 0, i32 0
  %406 = load i32, ptr %405, align 8, !tbaa !126
  %407 = and i32 %406, 1
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %463

409:                                              ; preds = %402
  %410 = load ptr, ptr %10, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiWindow, ptr %410, i32 0, i32 58
  %412 = load i32, ptr %411, align 4
  %413 = shl i32 %412, 24
  %414 = ashr i32 %413, 24
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.ImGuiContext, ptr %415, i32 0, i32 73
  %417 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %416, i32 0, i32 1
  %418 = load i32, ptr %417, align 4, !tbaa !127
  %419 = and i32 %414, %418
  %420 = icmp ne i32 %419, 0
  %421 = zext i1 %420 to i8
  store i8 %421, ptr %20, align 1, !tbaa !81
  %422 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %423 = trunc i8 %422 to i1
  br i1 %423, label %424, label %453

424:                                              ; preds = %409
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.ImGuiContext, ptr %425, i32 0, i32 73
  %427 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %426, i32 0, i32 5
  %428 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %427)
  %429 = fcmp ogt float %428, 0x3EE4F8B580000000
  br i1 %429, label %430, label %453

430:                                              ; preds = %424
  %431 = load ptr, ptr %8, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.ImGuiContext, ptr %431, i32 0, i32 73
  %433 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %432, i32 0, i32 4
  %434 = load ptr, ptr %10, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.ImGuiWindow, ptr %434, i32 0, i32 59
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %435, ptr align 8 %433, i64 8, i1 false), !tbaa.struct !128
  %436 = load ptr, ptr %8, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 73
  %438 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %437, i32 0, i32 5
  %439 = load ptr, ptr %10, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.ImGuiWindow, ptr %439, i32 0, i32 60
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %440, ptr align 8 %438, i64 8, i1 false), !tbaa.struct !128
  %441 = load ptr, ptr %10, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.ImGuiWindow, ptr %441, i32 0, i32 58
  %443 = load i32, ptr %442, align 4
  %444 = shl i32 %443, 24
  %445 = ashr i32 %444, 24
  %446 = and i32 %445, -15
  %447 = load i32, ptr %442, align 4
  %448 = and i32 %446, 255
  %449 = and i32 %447, -256
  %450 = or i32 %449, %448
  store i32 %450, ptr %442, align 4
  %451 = shl i32 %448, 24
  %452 = ashr i32 %451, 24
  br label %462

453:                                              ; preds = %424, %409
  %454 = load ptr, ptr %10, align 8, !tbaa !5
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.ImGuiContext, ptr %455, i32 0, i32 73
  %457 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %456, i32 0, i32 4
  %458 = load ptr, ptr %8, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiContext, ptr %458, i32 0, i32 73
  %460 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %459, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !127
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %454, ptr noundef nonnull align 4 dereferenceable(8) %457, i32 noundef %461)
  br label %462

462:                                              ; preds = %453, %430
  br label %463

463:                                              ; preds = %462, %402
  %464 = load ptr, ptr %8, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.ImGuiContext, ptr %464, i32 0, i32 73
  %466 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %465, i32 0, i32 0
  %467 = load i32, ptr %466, align 8, !tbaa !126
  %468 = and i32 %467, 2
  %469 = icmp ne i32 %468, 0
  br i1 %469, label %470, label %521

470:                                              ; preds = %463
  %471 = load ptr, ptr %10, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.ImGuiWindow, ptr %471, i32 0, i32 58
  %473 = load i32, ptr %472, align 4
  %474 = shl i32 %473, 16
  %475 = ashr i32 %474, 24
  %476 = load ptr, ptr %8, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImGuiContext, ptr %476, i32 0, i32 73
  %478 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %477, i32 0, i32 2
  %479 = load i32, ptr %478, align 8, !tbaa !129
  %480 = and i32 %475, %479
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %489

482:                                              ; preds = %470
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.ImGuiContext, ptr %483, i32 0, i32 73
  %485 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %484, i32 0, i32 6
  %486 = getelementptr inbounds %struct.ImVec2, ptr %485, i32 0, i32 0
  %487 = load float, ptr %486, align 8, !tbaa !130
  %488 = fcmp ogt float %487, 0.000000e+00
  br label %489

489:                                              ; preds = %482, %470
  %490 = phi i1 [ false, %470 ], [ %488, %482 ]
  %491 = zext i1 %490 to i8
  store i8 %491, ptr %21, align 1, !tbaa !81
  %492 = load ptr, ptr %10, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ImGuiWindow, ptr %492, i32 0, i32 58
  %494 = load i32, ptr %493, align 4
  %495 = shl i32 %494, 16
  %496 = ashr i32 %495, 24
  %497 = load ptr, ptr %8, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.ImGuiContext, ptr %497, i32 0, i32 73
  %499 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %498, i32 0, i32 2
  %500 = load i32, ptr %499, align 8, !tbaa !129
  %501 = and i32 %496, %500
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %510

503:                                              ; preds = %489
  %504 = load ptr, ptr %8, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.ImGuiContext, ptr %504, i32 0, i32 73
  %506 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %505, i32 0, i32 6
  %507 = getelementptr inbounds %struct.ImVec2, ptr %506, i32 0, i32 1
  %508 = load float, ptr %507, align 4, !tbaa !131
  %509 = fcmp ogt float %508, 0.000000e+00
  br label %510

510:                                              ; preds = %503, %489
  %511 = phi i1 [ false, %489 ], [ %509, %503 ]
  %512 = zext i1 %511 to i8
  store i8 %512, ptr %22, align 1, !tbaa !81
  %513 = load ptr, ptr %10, align 8, !tbaa !5
  %514 = load ptr, ptr %8, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ImGuiContext, ptr %514, i32 0, i32 73
  %516 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %515, i32 0, i32 6
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.ImGuiContext, ptr %517, i32 0, i32 73
  %519 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %518, i32 0, i32 2
  %520 = load i32, ptr %519, align 8, !tbaa !129
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef %513, ptr noundef nonnull align 4 dereferenceable(8) %516, i32 noundef %520)
  br label %521

521:                                              ; preds = %510, %463
  %522 = load ptr, ptr %8, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.ImGuiContext, ptr %522, i32 0, i32 73
  %524 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %523, i32 0, i32 0
  %525 = load i32, ptr %524, align 8, !tbaa !126
  %526 = and i32 %525, 128
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %567

528:                                              ; preds = %521
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ImGuiContext, ptr %529, i32 0, i32 73
  %531 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %530, i32 0, i32 8
  %532 = getelementptr inbounds %struct.ImVec2, ptr %531, i32 0, i32 0
  %533 = load float, ptr %532, align 8, !tbaa !132
  %534 = fcmp oge float %533, 0.000000e+00
  br i1 %534, label %535, label %547

535:                                              ; preds = %528
  %536 = load ptr, ptr %8, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.ImGuiContext, ptr %536, i32 0, i32 73
  %538 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %537, i32 0, i32 8
  %539 = getelementptr inbounds %struct.ImVec2, ptr %538, i32 0, i32 0
  %540 = load float, ptr %539, align 8, !tbaa !132
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiWindow, ptr %541, i32 0, i32 25
  %543 = getelementptr inbounds %struct.ImVec2, ptr %542, i32 0, i32 0
  store float %540, ptr %543, align 4, !tbaa !133
  %544 = load ptr, ptr %10, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.ImGuiWindow, ptr %544, i32 0, i32 26
  %546 = getelementptr inbounds %struct.ImVec2, ptr %545, i32 0, i32 0
  store float 0.000000e+00, ptr %546, align 4, !tbaa !134
  br label %547

547:                                              ; preds = %535, %528
  %548 = load ptr, ptr %8, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.ImGuiContext, ptr %548, i32 0, i32 73
  %550 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %549, i32 0, i32 8
  %551 = getelementptr inbounds %struct.ImVec2, ptr %550, i32 0, i32 1
  %552 = load float, ptr %551, align 4, !tbaa !135
  %553 = fcmp oge float %552, 0.000000e+00
  br i1 %553, label %554, label %566

554:                                              ; preds = %547
  %555 = load ptr, ptr %8, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.ImGuiContext, ptr %555, i32 0, i32 73
  %557 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %556, i32 0, i32 8
  %558 = getelementptr inbounds %struct.ImVec2, ptr %557, i32 0, i32 1
  %559 = load float, ptr %558, align 4, !tbaa !135
  %560 = load ptr, ptr %10, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiWindow, ptr %560, i32 0, i32 25
  %562 = getelementptr inbounds %struct.ImVec2, ptr %561, i32 0, i32 1
  store float %559, ptr %562, align 4, !tbaa !136
  %563 = load ptr, ptr %10, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiWindow, ptr %563, i32 0, i32 26
  %565 = getelementptr inbounds %struct.ImVec2, ptr %564, i32 0, i32 1
  store float 0.000000e+00, ptr %565, align 4, !tbaa !137
  br label %566

566:                                              ; preds = %554, %547
  br label %567

567:                                              ; preds = %566, %521
  %568 = load ptr, ptr %8, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ImGuiContext, ptr %568, i32 0, i32 73
  %570 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %569, i32 0, i32 0
  %571 = load i32, ptr %570, align 8, !tbaa !126
  %572 = and i32 %571, 4
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %580

574:                                              ; preds = %567
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiContext, ptr %575, i32 0, i32 73
  %577 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %576, i32 0, i32 7
  %578 = load ptr, ptr %10, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImGuiWindow, ptr %578, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %579, ptr align 8 %577, i64 8, i1 false), !tbaa.struct !128
  br label %587

580:                                              ; preds = %567
  %581 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %582 = trunc i8 %581 to i1
  br i1 %582, label %583, label %586

583:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %584 = load ptr, ptr %10, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiWindow, ptr %584, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %585, ptr align 4 %23, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  br label %586

586:                                              ; preds = %583, %580
  br label %587

587:                                              ; preds = %586, %574
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.ImGuiContext, ptr %588, i32 0, i32 73
  %590 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %589, i32 0, i32 0
  %591 = load i32, ptr %590, align 8, !tbaa !126
  %592 = and i32 %591, 8
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %594, label %605

594:                                              ; preds = %587
  %595 = load ptr, ptr %10, align 8, !tbaa !5
  %596 = load ptr, ptr %8, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ImGuiContext, ptr %596, i32 0, i32 73
  %598 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %597, i32 0, i32 9
  %599 = load i8, ptr %598, align 8, !tbaa !138, !range !77, !noundef !78
  %600 = trunc i8 %599 to i1
  %601 = load ptr, ptr %8, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.ImGuiContext, ptr %601, i32 0, i32 73
  %603 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %602, i32 0, i32 3
  %604 = load i32, ptr %603, align 4, !tbaa !139
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %595, i1 noundef zeroext %600, i32 noundef %604)
  br label %605

605:                                              ; preds = %594, %587
  %606 = load ptr, ptr %8, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiContext, ptr %606, i32 0, i32 73
  %608 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %607, i32 0, i32 0
  %609 = load i32, ptr %608, align 8, !tbaa !126
  %610 = and i32 %609, 32
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %614

612:                                              ; preds = %605
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %613)
  br label %614

614:                                              ; preds = %612, %605
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.ImGuiWindow, ptr %615, i32 0, i32 37
  %617 = load i8, ptr %616, align 4, !tbaa !104, !range !77, !noundef !78
  %618 = trunc i8 %617 to i1
  br i1 %618, label %619, label %621

619:                                              ; preds = %614
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef %620, i32 noundef 8, i1 noundef zeroext false)
  br label %621

621:                                              ; preds = %619, %614
  %622 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %623 = trunc i8 %622 to i1
  br i1 %623, label %624, label %2640

624:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #13
  %625 = load i32, ptr %7, align 4, !tbaa !9
  %626 = and i32 %625, 16777216
  %627 = icmp ne i32 %626, 0
  br i1 %627, label %628, label %632

628:                                              ; preds = %624
  %629 = load i32, ptr %7, align 4, !tbaa !9
  %630 = and i32 %629, 33554432
  %631 = icmp ne i32 %630, 0
  br label %632

632:                                              ; preds = %628, %624
  %633 = phi i1 [ false, %624 ], [ %631, %628 ]
  %634 = zext i1 %633 to i8
  store i8 %634, ptr %24, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  %635 = load ptr, ptr %10, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImGuiWindow, ptr %635, i32 0, i32 55
  %637 = load i8, ptr %636, align 1, !tbaa !140
  %638 = sext i8 %637 to i32
  %639 = icmp sgt i32 %638, 0
  %640 = zext i1 %639 to i8
  store i8 %640, ptr %25, align 1, !tbaa !81
  %641 = load ptr, ptr %10, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiWindow, ptr %641, i32 0, i32 31
  store i8 1, ptr %642, align 2, !tbaa !141
  %643 = load ptr, ptr %6, align 8, !tbaa !5
  %644 = icmp ne ptr %643, null
  %645 = load ptr, ptr %10, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.ImGuiWindow, ptr %645, i32 0, i32 41
  %647 = zext i1 %644 to i8
  store i8 %647, ptr %646, align 8, !tbaa !142
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #13
  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)
  %648 = load ptr, ptr %10, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImGuiWindow, ptr %648, i32 0, i32 68
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %649, ptr align 4 %26, i64 16, i1 false), !tbaa.struct !143
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #13
  %650 = load ptr, ptr %10, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.ImGuiWindow, ptr %650, i32 0, i32 61
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %651, i32 noundef 1)
  %652 = load ptr, ptr %10, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiWindow, ptr %652, i32 0, i32 80
  %654 = load ptr, ptr %653, align 8, !tbaa !144
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %654)
  %655 = load ptr, ptr %10, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiWindow, ptr %655, i32 0, i32 62
  %657 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %656, i32 0, i32 28
  store i32 -1, ptr %657, align 8, !tbaa !145
  %658 = load ptr, ptr %10, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImGuiWindow, ptr %658, i32 0, i32 94
  %660 = load i8, ptr %659, align 4, !tbaa !146, !range !77, !noundef !78
  %661 = trunc i8 %660 to i1
  br i1 %661, label %662, label %664

662:                                              ; preds = %632
  %663 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef %663)
  br label %664

664:                                              ; preds = %662, %632
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #13
  store i8 0, ptr %28, align 1, !tbaa !81
  %665 = load ptr, ptr %8, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImGuiContext, ptr %665, i32 0, i32 129
  %667 = load ptr, ptr %666, align 8, !tbaa !147
  %668 = icmp ne ptr %667, null
  br i1 %668, label %669, label %676

669:                                              ; preds = %664
  %670 = load ptr, ptr %10, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.ImGuiWindow, ptr %670, i32 0, i32 3
  %672 = load i32, ptr %671, align 4, !tbaa !105
  %673 = and i32 %672, 524288
  %674 = icmp eq i32 %673, 0
  br i1 %674, label %675, label %676

675:                                              ; preds = %669
  store i8 1, ptr %28, align 1, !tbaa !81
  br label %676

676:                                              ; preds = %675, %669, %664
  %677 = load i8, ptr %28, align 1, !tbaa !81, !range !77, !noundef !78
  %678 = trunc i8 %677 to i1
  br i1 %678, label %679, label %705

679:                                              ; preds = %676
  %680 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %681 = trunc i8 %680 to i1
  br i1 %681, label %705, label %682

682:                                              ; preds = %679
  %683 = load ptr, ptr %5, align 8, !tbaa !5
  %684 = load ptr, ptr %10, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiWindow, ptr %684, i32 0, i32 1
  %686 = load ptr, ptr %685, align 8, !tbaa !148
  %687 = call i32 @strcmp(ptr noundef %683, ptr noundef %686) #15
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %705

689:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #13
  %690 = load ptr, ptr %10, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiWindow, ptr %690, i32 0, i32 20
  %692 = load i32, ptr %691, align 8, !tbaa !149
  %693 = sext i32 %692 to i64
  store i64 %693, ptr %29, align 8, !tbaa !150
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiWindow, ptr %694, i32 0, i32 1
  %696 = load ptr, ptr %695, align 8, !tbaa !148
  %697 = load ptr, ptr %5, align 8, !tbaa !5
  %698 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %696, ptr noundef %29, ptr noundef %697)
  %699 = load ptr, ptr %10, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiWindow, ptr %699, i32 0, i32 1
  store ptr %698, ptr %700, align 8, !tbaa !148
  %701 = load i64, ptr %29, align 8, !tbaa !150
  %702 = trunc i64 %701 to i32
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.ImGuiWindow, ptr %703, i32 0, i32 20
  store i32 %702, ptr %704, align 8, !tbaa !149
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  br label %705

705:                                              ; preds = %689, %682, %679, %676
  %706 = load ptr, ptr %10, align 8, !tbaa !5
  %707 = load ptr, ptr %10, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.ImGuiWindow, ptr %707, i32 0, i32 8
  %709 = load ptr, ptr %10, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiWindow, ptr %709, i32 0, i32 9
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %706, ptr noundef %708, ptr noundef %710)
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImGuiWindow, ptr %711, i32 0, i32 54
  %713 = load i8, ptr %712, align 8, !tbaa !152
  %714 = sext i8 %713 to i32
  %715 = icmp sgt i32 %714, 0
  br i1 %715, label %716, label %721

716:                                              ; preds = %705
  %717 = load ptr, ptr %10, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiWindow, ptr %717, i32 0, i32 54
  %719 = load i8, ptr %718, align 8, !tbaa !152
  %720 = add i8 %719, -1
  store i8 %720, ptr %718, align 8, !tbaa !152
  br label %721

721:                                              ; preds = %716, %705
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.ImGuiWindow, ptr %722, i32 0, i32 55
  %724 = load i8, ptr %723, align 1, !tbaa !140
  %725 = sext i8 %724 to i32
  %726 = icmp sgt i32 %725, 0
  br i1 %726, label %727, label %732

727:                                              ; preds = %721
  %728 = load ptr, ptr %10, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiWindow, ptr %728, i32 0, i32 55
  %730 = load i8, ptr %729, align 1, !tbaa !140
  %731 = add i8 %730, -1
  store i8 %731, ptr %729, align 1, !tbaa !140
  br label %732

732:                                              ; preds = %727, %721
  %733 = load ptr, ptr %10, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiWindow, ptr %733, i32 0, i32 56
  %735 = load i8, ptr %734, align 2, !tbaa !153
  %736 = sext i8 %735 to i32
  %737 = icmp sgt i32 %736, 0
  br i1 %737, label %738, label %743

738:                                              ; preds = %732
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiWindow, ptr %739, i32 0, i32 56
  %741 = load i8, ptr %740, align 2, !tbaa !153
  %742 = add i8 %741, -1
  store i8 %742, ptr %740, align 2, !tbaa !153
  br label %743

743:                                              ; preds = %738, %732
  %744 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %745 = trunc i8 %744 to i1
  br i1 %745, label %746, label %755

746:                                              ; preds = %743
  %747 = load i8, ptr %21, align 1, !tbaa !81, !range !77, !noundef !78
  %748 = trunc i8 %747 to i1
  br i1 %748, label %749, label %752

749:                                              ; preds = %746
  %750 = load i8, ptr %22, align 1, !tbaa !81, !range !77, !noundef !78
  %751 = trunc i8 %750 to i1
  br i1 %751, label %755, label %752

752:                                              ; preds = %749, %746
  %753 = load ptr, ptr %10, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.ImGuiWindow, ptr %753, i32 0, i32 55
  store i8 1, ptr %754, align 1, !tbaa !140
  br label %755

755:                                              ; preds = %752, %749, %743
  %756 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %757 = trunc i8 %756 to i1
  br i1 %757, label %758, label %794

758:                                              ; preds = %755
  %759 = load i32, ptr %7, align 4, !tbaa !9
  %760 = and i32 %759, 100663296
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %794

762:                                              ; preds = %758
  %763 = load ptr, ptr %10, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiWindow, ptr %763, i32 0, i32 55
  store i8 1, ptr %764, align 1, !tbaa !140
  %765 = load i32, ptr %7, align 4, !tbaa !9
  %766 = and i32 %765, 64
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %793

768:                                              ; preds = %762
  %769 = load i8, ptr %21, align 1, !tbaa !81, !range !77, !noundef !78
  %770 = trunc i8 %769 to i1
  br i1 %770, label %778, label %771

771:                                              ; preds = %768
  %772 = load ptr, ptr %10, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiWindow, ptr %772, i32 0, i32 7
  %774 = getelementptr inbounds %struct.ImVec2, ptr %773, i32 0, i32 0
  store float 0.000000e+00, ptr %774, align 8, !tbaa !154
  %775 = load ptr, ptr %10, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.ImGuiWindow, ptr %775, i32 0, i32 6
  %777 = getelementptr inbounds %struct.ImVec2, ptr %776, i32 0, i32 0
  store float 0.000000e+00, ptr %777, align 8, !tbaa !155
  br label %778

778:                                              ; preds = %771, %768
  %779 = load i8, ptr %22, align 1, !tbaa !81, !range !77, !noundef !78
  %780 = trunc i8 %779 to i1
  br i1 %780, label %788, label %781

781:                                              ; preds = %778
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiWindow, ptr %782, i32 0, i32 7
  %784 = getelementptr inbounds %struct.ImVec2, ptr %783, i32 0, i32 1
  store float 0.000000e+00, ptr %784, align 4, !tbaa !156
  %785 = load ptr, ptr %10, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.ImGuiWindow, ptr %785, i32 0, i32 6
  %787 = getelementptr inbounds %struct.ImVec2, ptr %786, i32 0, i32 1
  store float 0.000000e+00, ptr %787, align 4, !tbaa !157
  br label %788

788:                                              ; preds = %781, %778
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiWindow, ptr %789, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %790, ptr align 4 %30, i64 8, i1 false), !tbaa.struct !128
  %791 = load ptr, ptr %10, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.ImGuiWindow, ptr %791, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %792, ptr align 4 %790, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  br label %793

793:                                              ; preds = %788, %762
  br label %794

794:                                              ; preds = %793, %758, %755
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  %795 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  store ptr %795, ptr %31, align 8, !tbaa !5
  %796 = load ptr, ptr %10, align 8, !tbaa !5
  %797 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %796, ptr noundef %797)
  %798 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %798)
  %799 = load i32, ptr %7, align 4, !tbaa !9
  %800 = and i32 %799, 16777216
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %808

802:                                              ; preds = %794
  %803 = load ptr, ptr %9, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.ImGuiStyle, ptr %803, i32 0, i32 9
  %805 = load float, ptr %804, align 4, !tbaa !158
  %806 = load ptr, ptr %10, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.ImGuiWindow, ptr %806, i32 0, i32 13
  store float %805, ptr %807, align 4, !tbaa !159
  br label %828

808:                                              ; preds = %794
  %809 = load i32, ptr %7, align 4, !tbaa !9
  %810 = and i32 %809, 100663296
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %812, label %820

812:                                              ; preds = %808
  %813 = load i32, ptr %7, align 4, !tbaa !9
  %814 = and i32 %813, 134217728
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %820, label %816

816:                                              ; preds = %812
  %817 = load ptr, ptr %9, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.ImGuiStyle, ptr %817, i32 0, i32 11
  %819 = load float, ptr %818, align 4, !tbaa !160
  br label %824

820:                                              ; preds = %812, %808
  %821 = load ptr, ptr %9, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiStyle, ptr %821, i32 0, i32 4
  %823 = load float, ptr %822, align 4, !tbaa !161
  br label %824

824:                                              ; preds = %820, %816
  %825 = phi float [ %819, %816 ], [ %823, %820 ]
  %826 = load ptr, ptr %10, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiWindow, ptr %826, i32 0, i32 13
  store float %825, ptr %827, align 4, !tbaa !159
  br label %828

828:                                              ; preds = %824, %802
  %829 = load ptr, ptr %9, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.ImGuiStyle, ptr %829, i32 0, i32 2
  %831 = load ptr, ptr %10, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiWindow, ptr %831, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %832, ptr align 4 %830, i64 8, i1 false), !tbaa.struct !128
  %833 = load i32, ptr %7, align 4, !tbaa !9
  %834 = and i32 %833, 16777216
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %859

836:                                              ; preds = %828
  %837 = load i32, ptr %7, align 4, !tbaa !9
  %838 = and i32 %837, 67174400
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %859, label %840

840:                                              ; preds = %836
  %841 = load ptr, ptr %10, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.ImGuiWindow, ptr %841, i32 0, i32 13
  %843 = load float, ptr %842, align 4, !tbaa !159
  %844 = fcmp oeq float %843, 0.000000e+00
  br i1 %844, label %845, label %859

845:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %846 = load i32, ptr %7, align 4, !tbaa !9
  %847 = and i32 %846, 1024
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %854

849:                                              ; preds = %845
  %850 = load ptr, ptr %9, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiStyle, ptr %850, i32 0, i32 2
  %852 = getelementptr inbounds %struct.ImVec2, ptr %851, i32 0, i32 1
  %853 = load float, ptr %852, align 4, !tbaa !162
  br label %855

854:                                              ; preds = %845
  br label %855

855:                                              ; preds = %854, %849
  %856 = phi float [ %853, %849 ], [ 0.000000e+00, %854 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef 0.000000e+00, float noundef %856)
  %857 = load ptr, ptr %10, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.ImGuiWindow, ptr %857, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %858, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  br label %859

859:                                              ; preds = %855, %840, %836, %828
  %860 = load ptr, ptr %10, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.ImGuiWindow, ptr %860, i32 0, i32 11
  %862 = getelementptr inbounds %struct.ImVec2, ptr %861, i32 0, i32 0
  %863 = load float, ptr %862, align 8, !tbaa !163
  %864 = load ptr, ptr %9, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.ImGuiStyle, ptr %864, i32 0, i32 15
  %866 = getelementptr inbounds %struct.ImVec2, ptr %865, i32 0, i32 0
  %867 = load float, ptr %866, align 4, !tbaa !164
  %868 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %863, float noundef %867)
  %869 = load ptr, ptr %8, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImGuiContext, ptr %869, i32 0, i32 73
  %871 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %870, i32 0, i32 16
  %872 = getelementptr inbounds %struct.ImVec2, ptr %871, i32 0, i32 0
  %873 = load float, ptr %872, align 4, !tbaa !165
  %874 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %868, float noundef %873)
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiWindow, ptr %875, i32 0, i32 62
  %877 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %876, i32 0, i32 21
  %878 = getelementptr inbounds %struct.ImVec2, ptr %877, i32 0, i32 0
  store float %874, ptr %878, align 4, !tbaa !166
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImGuiContext, ptr %879, i32 0, i32 73
  %881 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %880, i32 0, i32 16
  %882 = getelementptr inbounds %struct.ImVec2, ptr %881, i32 0, i32 1
  %883 = load float, ptr %882, align 4, !tbaa !167
  %884 = load ptr, ptr %10, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.ImGuiWindow, ptr %884, i32 0, i32 62
  %886 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %885, i32 0, i32 21
  %887 = getelementptr inbounds %struct.ImVec2, ptr %886, i32 0, i32 1
  store float %883, ptr %887, align 4, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  %888 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %889 = trunc i8 %888 to i1
  %890 = zext i1 %889 to i8
  store i8 %890, ptr %33, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #13
  %891 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %892 = trunc i8 %891 to i1
  %893 = zext i1 %892 to i8
  store i8 %893, ptr %34, align 1, !tbaa !81
  %894 = load i32, ptr %7, align 4, !tbaa !9
  %895 = and i32 %894, 1
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %960, label %897

897:                                              ; preds = %859
  %898 = load i32, ptr %7, align 4, !tbaa !9
  %899 = and i32 %898, 32
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %960, label %901

901:                                              ; preds = %897
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #13
  %902 = load ptr, ptr %10, align 8, !tbaa !5
  %903 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %902)
  %904 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 0
  %905 = extractvalue { <2 x float>, <2 x float> } %903, 0
  store <2 x float> %905, ptr %904, align 4
  %906 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %35, i32 0, i32 1
  %907 = extractvalue { <2 x float>, <2 x float> } %903, 1
  store <2 x float> %907, ptr %906, align 4
  %908 = load ptr, ptr %8, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImGuiContext, ptr %908, i32 0, i32 28
  %910 = load ptr, ptr %909, align 8, !tbaa !169
  %911 = load ptr, ptr %10, align 8, !tbaa !5
  %912 = icmp eq ptr %910, %911
  br i1 %912, label %913, label %938

913:                                              ; preds = %901
  %914 = load ptr, ptr %8, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.ImGuiContext, ptr %914, i32 0, i32 38
  %916 = load i32, ptr %915, align 4, !tbaa !170
  %917 = icmp eq i32 %916, 0
  br i1 %917, label %918, label %938

918:                                              ; preds = %913
  %919 = load ptr, ptr %8, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.ImGuiContext, ptr %919, i32 0, i32 39
  %921 = load i32, ptr %920, align 8, !tbaa !171
  %922 = icmp eq i32 %921, 0
  br i1 %922, label %923, label %938

923:                                              ; preds = %918
  %924 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 0
  %925 = getelementptr inbounds %struct.ImRect, ptr %35, i32 0, i32 1
  %926 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %924, ptr noundef nonnull align 4 dereferenceable(8) %925, i1 noundef zeroext true)
  br i1 %926, label %927, label %938

927:                                              ; preds = %923
  %928 = load ptr, ptr %8, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImGuiContext, ptr %928, i32 0, i32 2
  %930 = getelementptr inbounds %struct.ImGuiIO, ptr %929, i32 0, i32 75
  %931 = getelementptr inbounds [5 x i16], ptr %930, i64 0, i64 0
  %932 = load i16, ptr %931, align 2, !tbaa !172
  %933 = zext i16 %932 to i32
  %934 = icmp eq i32 %933, 2
  br i1 %934, label %935, label %938

935:                                              ; preds = %927
  %936 = load ptr, ptr %10, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImGuiWindow, ptr %936, i32 0, i32 35
  store i8 1, ptr %937, align 2, !tbaa !173
  br label %938

938:                                              ; preds = %935, %927, %923, %918, %913, %901
  %939 = load ptr, ptr %10, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImGuiWindow, ptr %939, i32 0, i32 35
  %941 = load i8, ptr %940, align 2, !tbaa !173, !range !77, !noundef !78
  %942 = trunc i8 %941 to i1
  br i1 %942, label %943, label %959

943:                                              ; preds = %938
  %944 = load ptr, ptr %10, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.ImGuiWindow, ptr %944, i32 0, i32 34
  %946 = load i8, ptr %945, align 1, !tbaa !174, !range !77, !noundef !78
  %947 = trunc i8 %946 to i1
  %948 = xor i1 %947, true
  %949 = load ptr, ptr %10, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiWindow, ptr %949, i32 0, i32 34
  %951 = zext i1 %948 to i8
  store i8 %951, ptr %950, align 1, !tbaa !174
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImGuiWindow, ptr %952, i32 0, i32 34
  %954 = load i8, ptr %953, align 1, !tbaa !174, !range !77, !noundef !78
  %955 = trunc i8 %954 to i1
  br i1 %955, label %957, label %956

956:                                              ; preds = %943
  store i8 1, ptr %34, align 1, !tbaa !81
  br label %957

957:                                              ; preds = %956, %943
  %958 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %958)
  br label %959

959:                                              ; preds = %957, %938
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #13
  br label %963

960:                                              ; preds = %897, %859
  %961 = load ptr, ptr %10, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiWindow, ptr %961, i32 0, i32 34
  store i8 0, ptr %962, align 1, !tbaa !174
  br label %963

963:                                              ; preds = %960, %959
  %964 = load ptr, ptr %10, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiWindow, ptr %964, i32 0, i32 35
  store i8 0, ptr %965, align 2, !tbaa !173
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %966 = load ptr, ptr %10, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiWindow, ptr %966, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %967, i64 8, i1 false), !tbaa.struct !128
  %968 = load ptr, ptr %10, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiWindow, ptr %968, i32 0, i32 14
  store float 0.000000e+00, ptr %969, align 8, !tbaa !175
  %970 = load ptr, ptr %10, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.ImGuiWindow, ptr %970, i32 0, i32 16
  store float 0.000000e+00, ptr %971, align 8, !tbaa !176
  %972 = load ptr, ptr %10, align 8, !tbaa !5
  %973 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(981) %972)
  %974 = load ptr, ptr %10, align 8, !tbaa !5
  %975 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(981) %974)
  %976 = fadd float %973, %975
  %977 = load ptr, ptr %10, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiWindow, ptr %977, i32 0, i32 15
  store float %976, ptr %978, align 4, !tbaa !177
  %979 = load ptr, ptr %10, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiWindow, ptr %979, i32 0, i32 17
  store float 0.000000e+00, ptr %980, align 4, !tbaa !178
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %981 = load ptr, ptr %10, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiWindow, ptr %981, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %982, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #13
  %983 = load ptr, ptr %10, align 8, !tbaa !5
  %984 = load ptr, ptr %10, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.ImGuiWindow, ptr %984, i32 0, i32 9
  %986 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %983, ptr noundef nonnull align 4 dereferenceable(8) %985)
  store <2 x float> %986, ptr %38, align 4
  %987 = load i32, ptr %7, align 4, !tbaa !9
  %988 = and i32 %987, 64
  %989 = icmp ne i32 %988, 0
  br i1 %989, label %990, label %1014

990:                                              ; preds = %963
  %991 = load ptr, ptr %10, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiWindow, ptr %991, i32 0, i32 34
  %993 = load i8, ptr %992, align 1, !tbaa !174, !range !77, !noundef !78
  %994 = trunc i8 %993 to i1
  br i1 %994, label %1014, label %995

995:                                              ; preds = %990
  %996 = load i8, ptr %21, align 1, !tbaa !81, !range !77, !noundef !78
  %997 = trunc i8 %996 to i1
  br i1 %997, label %1004, label %998

998:                                              ; preds = %995
  %999 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1000 = load float, ptr %999, align 4, !tbaa !179
  %1001 = load ptr, ptr %10, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiWindow, ptr %1001, i32 0, i32 7
  %1003 = getelementptr inbounds %struct.ImVec2, ptr %1002, i32 0, i32 0
  store float %1000, ptr %1003, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !81
  br label %1004

1004:                                             ; preds = %998, %995
  %1005 = load i8, ptr %22, align 1, !tbaa !81, !range !77, !noundef !78
  %1006 = trunc i8 %1005 to i1
  br i1 %1006, label %1013, label %1007

1007:                                             ; preds = %1004
  %1008 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1009 = load float, ptr %1008, align 4, !tbaa !180
  %1010 = load ptr, ptr %10, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImGuiWindow, ptr %1010, i32 0, i32 7
  %1012 = getelementptr inbounds %struct.ImVec2, ptr %1011, i32 0, i32 1
  store float %1009, ptr %1012, align 4, !tbaa !156
  store i8 1, ptr %34, align 1, !tbaa !81
  br label %1013

1013:                                             ; preds = %1007, %1004
  br label %1095

1014:                                             ; preds = %990, %963
  %1015 = load ptr, ptr %10, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiWindow, ptr %1015, i32 0, i32 49
  %1017 = load i8, ptr %1016, align 8, !tbaa !181
  %1018 = sext i8 %1017 to i32
  %1019 = icmp sgt i32 %1018, 0
  br i1 %1019, label %1026, label %1020

1020:                                             ; preds = %1014
  %1021 = load ptr, ptr %10, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImGuiWindow, ptr %1021, i32 0, i32 50
  %1023 = load i8, ptr %1022, align 1, !tbaa !182
  %1024 = sext i8 %1023 to i32
  %1025 = icmp sgt i32 %1024, 0
  br i1 %1025, label %1026, label %1094

1026:                                             ; preds = %1020, %1014
  %1027 = load i8, ptr %21, align 1, !tbaa !81, !range !77, !noundef !78
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1056, label %1029

1029:                                             ; preds = %1026
  %1030 = load ptr, ptr %10, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiWindow, ptr %1030, i32 0, i32 49
  %1032 = load i8, ptr %1031, align 8, !tbaa !181
  %1033 = sext i8 %1032 to i32
  %1034 = icmp sgt i32 %1033, 0
  br i1 %1034, label %1035, label %1056

1035:                                             ; preds = %1029
  %1036 = load ptr, ptr %10, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiWindow, ptr %1036, i32 0, i32 52
  %1038 = load i8, ptr %1037, align 1, !tbaa !183, !range !77, !noundef !78
  %1039 = trunc i8 %1038 to i1
  br i1 %1039, label %1040, label %1048

1040:                                             ; preds = %1035
  %1041 = load ptr, ptr %10, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.ImGuiWindow, ptr %1041, i32 0, i32 7
  %1043 = getelementptr inbounds %struct.ImVec2, ptr %1042, i32 0, i32 0
  %1044 = load float, ptr %1043, align 8, !tbaa !154
  %1045 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1046 = load float, ptr %1045, align 4, !tbaa !179
  %1047 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1044, float noundef %1046)
  br label %1051

1048:                                             ; preds = %1035
  %1049 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1050 = load float, ptr %1049, align 4, !tbaa !179
  br label %1051

1051:                                             ; preds = %1048, %1040
  %1052 = phi float [ %1047, %1040 ], [ %1050, %1048 ]
  %1053 = load ptr, ptr %10, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiWindow, ptr %1053, i32 0, i32 7
  %1055 = getelementptr inbounds %struct.ImVec2, ptr %1054, i32 0, i32 0
  store float %1052, ptr %1055, align 8, !tbaa !154
  store i8 1, ptr %33, align 1, !tbaa !81
  br label %1056

1056:                                             ; preds = %1051, %1029, %1026
  %1057 = load i8, ptr %22, align 1, !tbaa !81, !range !77, !noundef !78
  %1058 = trunc i8 %1057 to i1
  br i1 %1058, label %1086, label %1059

1059:                                             ; preds = %1056
  %1060 = load ptr, ptr %10, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.ImGuiWindow, ptr %1060, i32 0, i32 50
  %1062 = load i8, ptr %1061, align 1, !tbaa !182
  %1063 = sext i8 %1062 to i32
  %1064 = icmp sgt i32 %1063, 0
  br i1 %1064, label %1065, label %1086

1065:                                             ; preds = %1059
  %1066 = load ptr, ptr %10, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiWindow, ptr %1066, i32 0, i32 52
  %1068 = load i8, ptr %1067, align 1, !tbaa !183, !range !77, !noundef !78
  %1069 = trunc i8 %1068 to i1
  br i1 %1069, label %1070, label %1078

1070:                                             ; preds = %1065
  %1071 = load ptr, ptr %10, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.ImGuiWindow, ptr %1071, i32 0, i32 7
  %1073 = getelementptr inbounds %struct.ImVec2, ptr %1072, i32 0, i32 1
  %1074 = load float, ptr %1073, align 4, !tbaa !156
  %1075 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1076 = load float, ptr %1075, align 4, !tbaa !180
  %1077 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1074, float noundef %1076)
  br label %1081

1078:                                             ; preds = %1065
  %1079 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1080 = load float, ptr %1079, align 4, !tbaa !180
  br label %1081

1081:                                             ; preds = %1078, %1070
  %1082 = phi float [ %1077, %1070 ], [ %1080, %1078 ]
  %1083 = load ptr, ptr %10, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiWindow, ptr %1083, i32 0, i32 7
  %1085 = getelementptr inbounds %struct.ImVec2, ptr %1084, i32 0, i32 1
  store float %1082, ptr %1085, align 4, !tbaa !156
  store i8 1, ptr %34, align 1, !tbaa !81
  br label %1086

1086:                                             ; preds = %1081, %1059, %1056
  %1087 = load ptr, ptr %10, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.ImGuiWindow, ptr %1087, i32 0, i32 34
  %1089 = load i8, ptr %1088, align 1, !tbaa !174, !range !77, !noundef !78
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1093, label %1091

1091:                                             ; preds = %1086
  %1092 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef %1092)
  br label %1093

1093:                                             ; preds = %1091, %1086
  br label %1094

1094:                                             ; preds = %1093, %1020
  br label %1095

1095:                                             ; preds = %1094, %1013
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %1096 = load ptr, ptr %10, align 8, !tbaa !5
  %1097 = load ptr, ptr %10, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.ImGuiWindow, ptr %1097, i32 0, i32 7
  %1099 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %1096, ptr noundef nonnull align 4 dereferenceable(8) %1098)
  store <2 x float> %1099, ptr %39, align 4
  %1100 = load ptr, ptr %10, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiWindow, ptr %1100, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1101, ptr align 4 %39, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %1102 = load ptr, ptr %10, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.ImGuiWindow, ptr %1102, i32 0, i32 34
  %1104 = load i8, ptr %1103, align 1, !tbaa !174, !range !77, !noundef !78
  %1105 = trunc i8 %1104 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #13
  br i1 %1105, label %1106, label %1118

1106:                                             ; preds = %1095
  %1107 = load i32, ptr %7, align 4, !tbaa !9
  %1108 = and i32 %1107, 16777216
  %1109 = icmp ne i32 %1108, 0
  br i1 %1109, label %1118, label %1110

1110:                                             ; preds = %1106
  %1111 = load ptr, ptr %10, align 8, !tbaa !5
  %1112 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %1111)
  %1113 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 0
  %1114 = extractvalue { <2 x float>, <2 x float> } %1112, 0
  store <2 x float> %1114, ptr %1113, align 4
  %1115 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %41, i32 0, i32 1
  %1116 = extractvalue { <2 x float>, <2 x float> } %1112, 1
  store <2 x float> %1116, ptr %1115, align 4
  %1117 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %1117, ptr %40, align 4
  br label %1121

1118:                                             ; preds = %1106, %1095
  %1119 = load ptr, ptr %10, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImGuiWindow, ptr %1119, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %1120, i64 8, i1 false), !tbaa.struct !128
  br label %1121

1121:                                             ; preds = %1118, %1110
  %1122 = load ptr, ptr %10, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiWindow, ptr %1122, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1123, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  %1124 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1126, label %1147

1126:                                             ; preds = %1121
  %1127 = load ptr, ptr %10, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiWindow, ptr %1127, i32 0, i32 53
  store i32 -1, ptr %1128, align 4, !tbaa !184
  %1129 = load i32, ptr %7, align 4, !tbaa !9
  %1130 = and i32 %1129, 67108864
  %1131 = icmp ne i32 %1130, 0
  br i1 %1131, label %1132, label %1146

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

1136:                                             ; preds = %1132
  %1137 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %1138 = trunc i8 %1137 to i1
  br i1 %1138, label %1146, label %1139

1139:                                             ; preds = %1136
  %1140 = load ptr, ptr %8, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.ImGuiContext, ptr %1140, i32 0, i32 81
  %1142 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1141)
  %1143 = getelementptr inbounds %struct.ImGuiPopupData, ptr %1142, i32 0, i32 7
  %1144 = load ptr, ptr %10, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiWindow, ptr %1144, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1145, ptr align 4 %1143, i64 8, i1 false), !tbaa.struct !128
  br label %1146

1146:                                             ; preds = %1139, %1136, %1132, %1126
  br label %1147

1147:                                             ; preds = %1146, %1121
  %1148 = load i32, ptr %7, align 4, !tbaa !9
  %1149 = and i32 %1148, 16777216
  %1150 = icmp ne i32 %1149, 0
  br i1 %1150, label %1151, label %1192

1151:                                             ; preds = %1147
  %1152 = load ptr, ptr %17, align 8, !tbaa !5
  %1153 = icmp ne ptr %1152, null
  br i1 %1153, label %1154, label %1159

1154:                                             ; preds = %1151
  %1155 = load ptr, ptr %17, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiWindow, ptr %1155, i32 0, i32 31
  %1157 = load i8, ptr %1156, align 2, !tbaa !141, !range !77, !noundef !78
  %1158 = trunc i8 %1157 to i1
  br label %1159

1159:                                             ; preds = %1154, %1151
  %1160 = phi i1 [ false, %1151 ], [ %1158, %1154 ]
  br i1 %1160, label %1161, label %1162

1161:                                             ; preds = %1159
  br label %1164

1162:                                             ; preds = %1159
  call void @__assert_fail(ptr noundef @.str.131, ptr noundef @.str.3, i32 noundef 6375, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

1163:                                             ; No predecessors!
  br label %1164

1164:                                             ; preds = %1163, %1161
  %1165 = load ptr, ptr %17, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.ImGuiWindow, ptr %1165, i32 0, i32 62
  %1167 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1166, i32 0, i32 25
  %1168 = getelementptr inbounds %struct.ImVector.2, ptr %1167, i32 0, i32 0
  %1169 = load i32, ptr %1168, align 8, !tbaa !185
  %1170 = trunc i32 %1169 to i16
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiWindow, ptr %1171, i32 0, i32 45
  store i16 %1170, ptr %1172, align 2, !tbaa !108
  %1173 = load ptr, ptr %17, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImGuiWindow, ptr %1173, i32 0, i32 62
  %1175 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1174, i32 0, i32 25
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %1175, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %1176 = load i32, ptr %7, align 4, !tbaa !9
  %1177 = and i32 %1176, 67108864
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1191, label %1179

1179:                                             ; preds = %1164
  %1180 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %1181 = trunc i8 %1180 to i1
  br i1 %1181, label %1191, label %1182

1182:                                             ; preds = %1179
  %1183 = load i8, ptr %24, align 1, !tbaa !81, !range !77, !noundef !78
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1191, label %1185

1185:                                             ; preds = %1182
  %1186 = load ptr, ptr %17, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.ImGuiWindow, ptr %1186, i32 0, i32 62
  %1188 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1187, i32 0, i32 0
  %1189 = load ptr, ptr %10, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ImGuiWindow, ptr %1189, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1190, ptr align 8 %1188, i64 8, i1 false), !tbaa.struct !128
  br label %1191

1191:                                             ; preds = %1185, %1182, %1179, %1164
  br label %1192

1192:                                             ; preds = %1191, %1147
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.ImGuiWindow, ptr %1193, i32 0, i32 59
  %1195 = getelementptr inbounds %struct.ImVec2, ptr %1194, i32 0, i32 0
  %1196 = load float, ptr %1195, align 8, !tbaa !186
  %1197 = fcmp une float %1196, 0x47EFFFFFE0000000
  br i1 %1197, label %1198, label %1204

1198:                                             ; preds = %1192
  %1199 = load ptr, ptr %10, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.ImGuiWindow, ptr %1199, i32 0, i32 55
  %1201 = load i8, ptr %1200, align 1, !tbaa !140
  %1202 = sext i8 %1201 to i32
  %1203 = icmp eq i32 %1202, 0
  br label %1204

1204:                                             ; preds = %1198, %1192
  %1205 = phi i1 [ false, %1192 ], [ %1203, %1198 ]
  %1206 = zext i1 %1205 to i8
  store i8 %1206, ptr %42, align 1, !tbaa !81
  %1207 = load i8, ptr %42, align 1, !tbaa !81, !range !77, !noundef !78
  %1208 = trunc i8 %1207 to i1
  br i1 %1208, label %1209, label %1219

1209:                                             ; preds = %1204
  %1210 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %1211 = load ptr, ptr %10, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.ImGuiWindow, ptr %1211, i32 0, i32 59
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #13
  %1213 = load ptr, ptr %10, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.ImGuiWindow, ptr %1213, i32 0, i32 6
  %1215 = load ptr, ptr %10, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImGuiWindow, ptr %1215, i32 0, i32 60
  %1217 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1214, ptr noundef nonnull align 4 dereferenceable(8) %1216)
  store <2 x float> %1217, ptr %44, align 4
  %1218 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1212, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1218, ptr %43, align 4
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %1210, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  br label %1261

1219:                                             ; preds = %1204
  %1220 = load i32, ptr %7, align 4, !tbaa !9
  %1221 = and i32 %1220, 268435456
  %1222 = icmp ne i32 %1221, 0
  br i1 %1222, label %1223, label %1228

1223:                                             ; preds = %1219
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #13
  %1224 = load ptr, ptr %10, align 8, !tbaa !5
  %1225 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1224)
  store <2 x float> %1225, ptr %45, align 4
  %1226 = load ptr, ptr %10, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiWindow, ptr %1226, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1227, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #13
  br label %1260

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

1232:                                             ; preds = %1228
  %1233 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %1234 = trunc i8 %1233 to i1
  br i1 %1234, label %1243, label %1235

1235:                                             ; preds = %1232
  %1236 = load i8, ptr %25, align 1, !tbaa !81, !range !77, !noundef !78
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1238, label %1243

1238:                                             ; preds = %1235
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #13
  %1239 = load ptr, ptr %10, align 8, !tbaa !5
  %1240 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1239)
  store <2 x float> %1240, ptr %46, align 4
  %1241 = load ptr, ptr %10, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.ImGuiWindow, ptr %1241, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1242, ptr align 4 %46, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #13
  br label %1259

1243:                                             ; preds = %1235, %1232, %1228
  %1244 = load i32, ptr %7, align 4, !tbaa !9
  %1245 = and i32 %1244, 33554432
  %1246 = icmp ne i32 %1245, 0
  br i1 %1246, label %1247, label %1258

1247:                                             ; preds = %1243
  %1248 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1258, label %1250

1250:                                             ; preds = %1247
  %1251 = load i8, ptr %24, align 1, !tbaa !81, !range !77, !noundef !78
  %1252 = trunc i8 %1251 to i1
  br i1 %1252, label %1258, label %1253

1253:                                             ; preds = %1250
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #13
  %1254 = load ptr, ptr %10, align 8, !tbaa !5
  %1255 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef %1254)
  store <2 x float> %1255, ptr %47, align 4
  %1256 = load ptr, ptr %10, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.ImGuiWindow, ptr %1256, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1257, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #13
  br label %1258

1258:                                             ; preds = %1253, %1250, %1247, %1243
  br label %1259

1259:                                             ; preds = %1258, %1238
  br label %1260

1260:                                             ; preds = %1259, %1223
  br label %1261

1261:                                             ; preds = %1260, %1209
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #13
  %1262 = load ptr, ptr %31, align 8, !tbaa !5
  %1263 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(184) %1262)
  %1264 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 0
  %1265 = extractvalue { <2 x float>, <2 x float> } %1263, 0
  store <2 x float> %1265, ptr %1264, align 4
  %1266 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %48, i32 0, i32 1
  %1267 = extractvalue { <2 x float>, <2 x float> } %1263, 1
  store <2 x float> %1267, ptr %1266, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #13
  %1268 = load ptr, ptr %31, align 8, !tbaa !5
  %1269 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(184) %1268)
  %1270 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 0
  %1271 = extractvalue { <2 x float>, <2 x float> } %1269, 0
  store <2 x float> %1271, ptr %1270, align 4
  %1272 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %49, i32 0, i32 1
  %1273 = extractvalue { <2 x float>, <2 x float> } %1269, 1
  store <2 x float> %1273, ptr %1272, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %1274 = load ptr, ptr %9, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.ImGuiStyle, ptr %1274, i32 0, i32 35
  %1276 = load ptr, ptr %9, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiStyle, ptr %1276, i32 0, i32 36
  %1278 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1275, ptr noundef nonnull align 4 dereferenceable(8) %1277)
  store <2 x float> %1278, ptr %50, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #13
  %1279 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 0
  %1280 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1279, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1280, ptr %52, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  %1281 = getelementptr inbounds %struct.ImRect, ptr %49, i32 0, i32 1
  %1282 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1281, ptr noundef nonnull align 4 dereferenceable(8) %50)
  store <2 x float> %1282, 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) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #13
  %1283 = load i8, ptr %20, align 1, !tbaa !81, !range !77, !noundef !78
  %1284 = trunc i8 %1283 to i1
  br i1 %1284, label %1298, label %1285

1285:                                             ; preds = %1261
  %1286 = load i32, ptr %7, align 4, !tbaa !9
  %1287 = and i32 %1286, 16777216
  %1288 = icmp ne i32 %1287, 0
  br i1 %1288, label %1298, label %1289

1289:                                             ; preds = %1285
  %1290 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1291 = fcmp ogt float %1290, 0.000000e+00
  br i1 %1291, label %1292, label %1297

1292:                                             ; preds = %1289
  %1293 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %48)
  %1294 = fcmp ogt float %1293, 0.000000e+00
  br i1 %1294, label %1295, label %1297

1295:                                             ; preds = %1292
  %1296 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %1296, ptr noundef nonnull align 4 dereferenceable(16) %51)
  br label %1297

1297:                                             ; preds = %1295, %1292, %1289
  br label %1298

1298:                                             ; preds = %1297, %1285, %1261
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %1299 = load ptr, ptr %10, align 8, !tbaa !5
  %1300 = getelementptr inbounds %struct.ImGuiWindow, ptr %1299, i32 0, i32 5
  %1301 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %1300)
  store <2 x float> %1301, ptr %54, align 4
  %1302 = load ptr, ptr %10, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiWindow, ptr %1302, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1303, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  %1304 = load i32, ptr %7, align 4, !tbaa !9
  %1305 = and i32 %1304, 16777216
  %1306 = icmp ne i32 %1305, 0
  br i1 %1306, label %1307, label %1311

1307:                                             ; preds = %1298
  %1308 = load ptr, ptr %9, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.ImGuiStyle, ptr %1308, i32 0, i32 8
  %1310 = load float, ptr %1309, align 4, !tbaa !187
  br label %1329

1311:                                             ; preds = %1298
  %1312 = load i32, ptr %7, align 4, !tbaa !9
  %1313 = and i32 %1312, 67108864
  %1314 = icmp ne i32 %1313, 0
  br i1 %1314, label %1315, label %1323

1315:                                             ; preds = %1311
  %1316 = load i32, ptr %7, align 4, !tbaa !9
  %1317 = and i32 %1316, 134217728
  %1318 = icmp ne i32 %1317, 0
  br i1 %1318, label %1323, label %1319

1319:                                             ; preds = %1315
  %1320 = load ptr, ptr %9, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.ImGuiStyle, ptr %1320, i32 0, i32 10
  %1322 = load float, ptr %1321, align 4, !tbaa !188
  br label %1327

1323:                                             ; preds = %1315, %1311
  %1324 = load ptr, ptr %9, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.ImGuiStyle, ptr %1324, i32 0, i32 3
  %1326 = load float, ptr %1325, align 4, !tbaa !189
  br label %1327

1327:                                             ; preds = %1323, %1319
  %1328 = phi float [ %1322, %1319 ], [ %1326, %1323 ]
  br label %1329

1329:                                             ; preds = %1327, %1307
  %1330 = phi float [ %1310, %1307 ], [ %1328, %1327 ]
  %1331 = load ptr, ptr %10, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiWindow, ptr %1331, i32 0, i32 12
  store float %1330, ptr %1332, align 8, !tbaa !190
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #13
  store i8 0, ptr %55, align 1, !tbaa !81
  %1333 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %1334 = trunc i8 %1333 to i1
  br i1 %1334, label %1335, label %1377

1335:                                             ; preds = %1329
  %1336 = load i32, ptr %7, align 4, !tbaa !9
  %1337 = and i32 %1336, 4096
  %1338 = icmp ne i32 %1337, 0
  br i1 %1338, label %1377, label %1339

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

1343:                                             ; preds = %1339
  store i8 1, ptr %55, align 1, !tbaa !81
  br label %1350

1344:                                             ; preds = %1339
  %1345 = load i32, ptr %7, align 4, !tbaa !9
  %1346 = and i32 %1345, 50331648
  %1347 = icmp eq i32 %1346, 0
  br i1 %1347, label %1348, label %1349

1348:                                             ; preds = %1344
  store i8 1, ptr %55, align 1, !tbaa !81
  br label %1349

1349:                                             ; preds = %1348, %1344
  br label %1350

1350:                                             ; preds = %1349, %1343
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %1351 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  store ptr %1351, ptr %56, align 8, !tbaa !5
  %1352 = load ptr, ptr %56, align 8, !tbaa !5
  %1353 = icmp ne ptr %1352, null
  br i1 %1353, label %1354, label %1376

1354:                                             ; preds = %1350
  %1355 = load ptr, ptr %10, align 8, !tbaa !5
  %1356 = load ptr, ptr %56, align 8, !tbaa !5
  %1357 = call noundef zeroext i1 @_ZN5ImGui26IsWindowWithinBeginStackOfEP11ImGuiWindowS1_(ptr noundef %1355, ptr noundef %1356)
  br i1 %1357, label %1376, label %1358

1358:                                             ; preds = %1354
  store i8 0, ptr %55, align 1, !tbaa !81
  %1359 = load ptr, ptr %10, align 8, !tbaa !5
  %1360 = load ptr, ptr %10, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiWindow, ptr %1360, i32 0, i32 84
  %1362 = load ptr, ptr %1361, align 8, !tbaa !191
  %1363 = icmp eq ptr %1359, %1362
  br i1 %1363, label %1364, label %1375

1364:                                             ; preds = %1358
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #13
  %1365 = load ptr, ptr %10, align 8, !tbaa !5
  %1366 = call noundef ptr @_ZN5ImGuiL17FindBlockingModalEP11ImGuiWindow(ptr noundef %1365)
  store ptr %1366, ptr %57, align 8, !tbaa !5
  %1367 = load ptr, ptr %57, align 8, !tbaa !5
  %1368 = icmp ne ptr %1367, null
  br i1 %1368, label %1369, label %1370

1369:                                             ; preds = %1364
  br label %1372

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

1371:                                             ; No predecessors!
  br label %1372

1372:                                             ; preds = %1371, %1369
  %1373 = load ptr, ptr %10, align 8, !tbaa !5
  %1374 = load ptr, ptr %57, align 8, !tbaa !5
  call void @_ZN5ImGui26BringWindowToDisplayBehindEP11ImGuiWindowS1_(ptr noundef %1373, ptr noundef %1374)
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #13
  br label %1375

1375:                                             ; preds = %1372, %1358
  br label %1376

1376:                                             ; preds = %1375, %1354, %1350
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  br label %1377

1377:                                             ; preds = %1376, %1335, %1329
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  store i32 -1, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #13
  call void @llvm.memset.p0.i64(ptr align 16 %59, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  %1378 = load ptr, ptr %8, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.ImGuiContext, ptr %1378, i32 0, i32 2
  %1380 = getelementptr inbounds %struct.ImGuiIO, ptr %1379, i32 0, i32 26
  %1381 = load i8, ptr %1380, align 2, !tbaa !192, !range !77, !noundef !78
  %1382 = trunc i8 %1381 to i1
  %1383 = zext i1 %1382 to i64
  %1384 = select i1 %1382, i32 2, i32 1
  store i32 %1384, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %1385 = load ptr, ptr %8, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImGuiContext, ptr %1385, i32 0, i32 7
  %1387 = load float, ptr %1386, align 8, !tbaa !193
  %1388 = fmul float %1387, 0x3FF19999A0000000
  %1389 = load ptr, ptr %10, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.ImGuiWindow, ptr %1389, i32 0, i32 12
  %1391 = load float, ptr %1390, align 8, !tbaa !190
  %1392 = fadd float %1391, 1.000000e+00
  %1393 = load ptr, ptr %8, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.ImGuiContext, ptr %1393, i32 0, i32 7
  %1395 = load float, ptr %1394, align 8, !tbaa !193
  %1396 = call float @llvm.fmuladd.f32(float %1395, float 0x3FC99999A0000000, float %1392)
  %1397 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1388, float noundef %1396)
  %1398 = fptosi float %1397 to i32
  %1399 = sitofp i32 %1398 to float
  store float %1399, ptr %61, align 4, !tbaa !118
  %1400 = load ptr, ptr %10, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.ImGuiWindow, ptr %1400, i32 0, i32 34
  %1402 = load i8, ptr %1401, align 1, !tbaa !174, !range !77, !noundef !78
  %1403 = trunc i8 %1402 to i1
  br i1 %1403, label %1411, label %1404

1404:                                             ; preds = %1377
  %1405 = load ptr, ptr %10, align 8, !tbaa !5
  %1406 = load i32, ptr %60, align 4, !tbaa !9
  %1407 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  %1408 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef %1405, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef %58, i32 noundef %1406, ptr noundef %1407, ptr noundef nonnull align 4 dereferenceable(16) %51)
  br i1 %1408, label %1409, label %1410

1409:                                             ; preds = %1404
  store i8 1, ptr %34, align 1, !tbaa !81
  store i8 1, ptr %33, align 1, !tbaa !81
  br label %1410

1410:                                             ; preds = %1409, %1404
  br label %1411

1411:                                             ; preds = %1410, %1377
  %1412 = load i32, ptr %58, align 4, !tbaa !9
  %1413 = trunc i32 %1412 to i8
  %1414 = load ptr, ptr %10, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImGuiWindow, ptr %1414, i32 0, i32 42
  store i8 %1413, ptr %1415, align 1, !tbaa !194
  %1416 = load ptr, ptr %10, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.ImGuiWindow, ptr %1416, i32 0, i32 34
  %1418 = load i8, ptr %1417, align 1, !tbaa !174, !range !77, !noundef !78
  %1419 = trunc i8 %1418 to i1
  br i1 %1419, label %1592, label %1420

1420:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %1421 = load ptr, ptr %10, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.ImGuiWindow, ptr %1421, i32 0, i32 7
  %1423 = getelementptr inbounds %struct.ImVec2, ptr %1422, i32 0, i32 0
  %1424 = load float, ptr %1423, align 8, !tbaa !154
  %1425 = load ptr, ptr %10, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.ImGuiWindow, ptr %1425, i32 0, i32 7
  %1427 = getelementptr inbounds %struct.ImVec2, ptr %1426, i32 0, i32 1
  %1428 = load float, ptr %1427, align 4, !tbaa !156
  %1429 = load ptr, ptr %10, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiWindow, ptr %1429, i32 0, i32 15
  %1431 = load float, ptr %1430, align 4, !tbaa !177
  %1432 = load ptr, ptr %10, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.ImGuiWindow, ptr %1432, i32 0, i32 17
  %1434 = load float, ptr %1433, align 4, !tbaa !178
  %1435 = fadd float %1431, %1434
  %1436 = fsub float %1428, %1435
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %1424, float noundef %1436)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %1437 = load ptr, ptr %10, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct.ImGuiWindow, ptr %1437, i32 0, i32 64
  %1439 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %1438)
  store <2 x float> %1439, ptr %64, align 4
  %1440 = 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> %1440, ptr %63, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #13
  %1441 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %1442 = trunc i8 %1441 to i1
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  br i1 %1442, label %1443, label %1444

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

1444:                                             ; preds = %1420
  %1445 = load ptr, ptr %10, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.ImGuiWindow, ptr %1445, i32 0, i32 8
  %1447 = load ptr, ptr %10, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.ImGuiWindow, ptr %1447, i32 0, i32 11
  %1449 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %1448, float noundef 2.000000e+00)
  store <2 x float> %1449, ptr %66, align 4
  %1450 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1446, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1450, ptr %65, align 4
  br label %1451

1451:                                             ; preds = %1444, %1443
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %1452 = load i8, ptr %33, align 1, !tbaa !81, !range !77, !noundef !78
  %1453 = trunc i8 %1452 to i1
  br i1 %1453, label %1454, label %1457

1454:                                             ; preds = %1451
  %1455 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 0
  %1456 = load float, ptr %1455, align 4, !tbaa !179
  br label %1460

1457:                                             ; preds = %1451
  %1458 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 0
  %1459 = load float, ptr %1458, align 4, !tbaa !179
  br label %1460

1460:                                             ; preds = %1457, %1454
  %1461 = phi float [ %1456, %1454 ], [ %1459, %1457 ]
  store float %1461, ptr %67, align 4, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %1462 = load i8, ptr %34, align 1, !tbaa !81, !range !77, !noundef !78
  %1463 = trunc i8 %1462 to i1
  br i1 %1463, label %1464, label %1467

1464:                                             ; preds = %1460
  %1465 = getelementptr inbounds %struct.ImVec2, ptr %62, i32 0, i32 1
  %1466 = load float, ptr %1465, align 4, !tbaa !180
  br label %1470

1467:                                             ; preds = %1460
  %1468 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 1
  %1469 = load float, ptr %1468, align 4, !tbaa !180
  br label %1470

1470:                                             ; preds = %1467, %1464
  %1471 = phi float [ %1466, %1464 ], [ %1469, %1467 ]
  store float %1471, ptr %68, align 4, !tbaa !118
  %1472 = load i32, ptr %7, align 4, !tbaa !9
  %1473 = and i32 %1472, 16384
  %1474 = icmp ne i32 %1473, 0
  br i1 %1474, label %1487, label %1475

1475:                                             ; preds = %1470
  %1476 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1477 = load float, ptr %1476, align 4, !tbaa !180
  %1478 = load float, ptr %68, align 4, !tbaa !118
  %1479 = fcmp ogt float %1477, %1478
  br i1 %1479, label %1480, label %1485

1480:                                             ; preds = %1475
  %1481 = load i32, ptr %7, align 4, !tbaa !9
  %1482 = and i32 %1481, 8
  %1483 = icmp ne i32 %1482, 0
  %1484 = xor i1 %1483, true
  br label %1485

1485:                                             ; preds = %1480, %1475
  %1486 = phi i1 [ false, %1475 ], [ %1484, %1480 ]
  br label %1487

1487:                                             ; preds = %1485, %1470
  %1488 = phi i1 [ true, %1470 ], [ %1486, %1485 ]
  %1489 = load ptr, ptr %10, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.ImGuiWindow, ptr %1489, i32 0, i32 30
  %1491 = zext i1 %1488 to i8
  store i8 %1491, ptr %1490, align 1, !tbaa !195
  %1492 = load i32, ptr %7, align 4, !tbaa !9
  %1493 = and i32 %1492, 32768
  %1494 = icmp ne i32 %1493, 0
  br i1 %1494, label %1522, label %1495

1495:                                             ; preds = %1487
  %1496 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 0
  %1497 = load float, ptr %1496, align 4, !tbaa !179
  %1498 = load float, ptr %67, align 4, !tbaa !118
  %1499 = load ptr, ptr %10, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.ImGuiWindow, ptr %1499, i32 0, i32 30
  %1501 = load i8, ptr %1500, align 1, !tbaa !195, !range !77, !noundef !78
  %1502 = trunc i8 %1501 to i1
  br i1 %1502, label %1503, label %1507

1503:                                             ; preds = %1495
  %1504 = load ptr, ptr %9, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiStyle, ptr %1504, i32 0, i32 21
  %1506 = load float, ptr %1505, align 4, !tbaa !196
  br label %1508

1507:                                             ; preds = %1495
  br label %1508

1508:                                             ; preds = %1507, %1503
  %1509 = phi float [ %1506, %1503 ], [ 0.000000e+00, %1507 ]
  %1510 = fsub float %1498, %1509
  %1511 = fcmp ogt float %1497, %1510
  br i1 %1511, label %1512, label %1520

1512:                                             ; preds = %1508
  %1513 = load i32, ptr %7, align 4, !tbaa !9
  %1514 = and i32 %1513, 8
  %1515 = icmp ne i32 %1514, 0
  br i1 %1515, label %1520, label %1516

1516:                                             ; preds = %1512
  %1517 = load i32, ptr %7, align 4, !tbaa !9
  %1518 = and i32 %1517, 2048
  %1519 = icmp ne i32 %1518, 0
  br label %1520

1520:                                             ; preds = %1516, %1512, %1508
  %1521 = phi i1 [ false, %1512 ], [ false, %1508 ], [ %1519, %1516 ]
  br label %1522

1522:                                             ; preds = %1520, %1487
  %1523 = phi i1 [ true, %1487 ], [ %1521, %1520 ]
  %1524 = load ptr, ptr %10, align 8, !tbaa !5
  %1525 = getelementptr inbounds %struct.ImGuiWindow, ptr %1524, i32 0, i32 29
  %1526 = zext i1 %1523 to i8
  store i8 %1526, ptr %1525, align 4, !tbaa !197
  %1527 = load ptr, ptr %10, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiWindow, ptr %1527, i32 0, i32 29
  %1529 = load i8, ptr %1528, align 4, !tbaa !197, !range !77, !noundef !78
  %1530 = trunc i8 %1529 to i1
  br i1 %1530, label %1531, label %1551

1531:                                             ; preds = %1522
  %1532 = load ptr, ptr %10, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 30
  %1534 = load i8, ptr %1533, align 1, !tbaa !195, !range !77, !noundef !78
  %1535 = trunc i8 %1534 to i1
  br i1 %1535, label %1551, label %1536

1536:                                             ; preds = %1531
  %1537 = getelementptr inbounds %struct.ImVec2, ptr %65, i32 0, i32 1
  %1538 = load float, ptr %1537, align 4, !tbaa !180
  %1539 = load float, ptr %68, align 4, !tbaa !118
  %1540 = fcmp ogt float %1538, %1539
  br i1 %1540, label %1541, label %1546

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

1546:                                             ; preds = %1541, %1536
  %1547 = phi i1 [ false, %1536 ], [ %1545, %1541 ]
  %1548 = load ptr, ptr %10, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.ImGuiWindow, ptr %1548, i32 0, i32 30
  %1550 = zext i1 %1547 to i8
  store i8 %1550, ptr %1549, align 1, !tbaa !195
  br label %1551

1551:                                             ; preds = %1546, %1531, %1522
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #13
  %1552 = load ptr, ptr %10, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.ImGuiWindow, ptr %1552, i32 0, i32 30
  %1554 = load i8, ptr %1553, align 1, !tbaa !195, !range !77, !noundef !78
  %1555 = trunc i8 %1554 to i1
  br i1 %1555, label %1556, label %1560

1556:                                             ; preds = %1551
  %1557 = load ptr, ptr %9, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.ImGuiStyle, ptr %1557, i32 0, i32 21
  %1559 = load float, ptr %1558, align 4, !tbaa !196
  br label %1561

1560:                                             ; preds = %1551
  br label %1561

1561:                                             ; preds = %1560, %1556
  %1562 = phi float [ %1559, %1556 ], [ 0.000000e+00, %1560 ]
  %1563 = load ptr, ptr %10, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.ImGuiWindow, ptr %1563, i32 0, i32 29
  %1565 = load i8, ptr %1564, align 4, !tbaa !197, !range !77, !noundef !78
  %1566 = trunc i8 %1565 to i1
  br i1 %1566, label %1567, label %1571

1567:                                             ; preds = %1561
  %1568 = load ptr, ptr %9, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiStyle, ptr %1568, i32 0, i32 21
  %1570 = load float, ptr %1569, align 4, !tbaa !196
  br label %1572

1571:                                             ; preds = %1561
  br label %1572

1572:                                             ; preds = %1571, %1567
  %1573 = phi float [ %1570, %1567 ], [ 0.000000e+00, %1571 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %69, float noundef %1562, float noundef %1573)
  %1574 = load ptr, ptr %10, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.ImGuiWindow, ptr %1574, i32 0, i32 28
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1575, ptr align 4 %69, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #13
  %1576 = load ptr, ptr %10, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.ImGuiWindow, ptr %1576, i32 0, i32 28
  %1578 = getelementptr inbounds %struct.ImVec2, ptr %1577, i32 0, i32 0
  %1579 = load float, ptr %1578, align 4, !tbaa !198
  %1580 = load ptr, ptr %10, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.ImGuiWindow, ptr %1580, i32 0, i32 16
  %1582 = load float, ptr %1581, align 8, !tbaa !176
  %1583 = fadd float %1582, %1579
  store float %1583, ptr %1581, align 8, !tbaa !176
  %1584 = load ptr, ptr %10, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.ImGuiWindow, ptr %1584, i32 0, i32 28
  %1586 = getelementptr inbounds %struct.ImVec2, ptr %1585, i32 0, i32 1
  %1587 = load float, ptr %1586, align 4, !tbaa !199
  %1588 = load ptr, ptr %10, align 8, !tbaa !5
  %1589 = getelementptr inbounds %struct.ImGuiWindow, ptr %1588, i32 0, i32 17
  %1590 = load float, ptr %1589, align 4, !tbaa !178
  %1591 = fadd float %1590, %1587
  store float %1591, ptr %1589, align 4, !tbaa !178
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  br label %1592

1592:                                             ; preds = %1572, %1411
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #13
  %1593 = load i32, ptr %7, align 4, !tbaa !9
  %1594 = and i32 %1593, 16777216
  %1595 = icmp ne i32 %1594, 0
  br i1 %1595, label %1596, label %1606

1596:                                             ; preds = %1592
  %1597 = load i32, ptr %7, align 4, !tbaa !9
  %1598 = and i32 %1597, 67108864
  %1599 = icmp ne i32 %1598, 0
  br i1 %1599, label %1606, label %1600

1600:                                             ; preds = %1596
  %1601 = load i8, ptr %24, align 1, !tbaa !81, !range !77, !noundef !78
  %1602 = trunc i8 %1601 to i1
  br i1 %1602, label %1606, label %1603

1603:                                             ; preds = %1600
  %1604 = load ptr, ptr %17, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.ImGuiWindow, ptr %1604, i32 0, i32 68
  br label %1607

1606:                                             ; preds = %1600, %1596, %1592
  br label %1607

1607:                                             ; preds = %1606, %1603
  %1608 = phi ptr [ %1605, %1603 ], [ %48, %1606 ]
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %1608, i64 16, i1 false), !tbaa.struct !143
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #13
  %1609 = load ptr, ptr %10, align 8, !tbaa !5
  %1610 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %1609)
  %1611 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 0
  %1612 = extractvalue { <2 x float>, <2 x float> } %1610, 0
  store <2 x float> %1612, ptr %1611, align 4
  %1613 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %71, i32 0, i32 1
  %1614 = extractvalue { <2 x float>, <2 x float> } %1610, 1
  store <2 x float> %1614, ptr %1613, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #13
  %1615 = load ptr, ptr %10, align 8, !tbaa !5
  %1616 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %1615)
  %1617 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 0
  %1618 = extractvalue { <2 x float>, <2 x float> } %1616, 0
  store <2 x float> %1618, ptr %1617, align 4
  %1619 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %72, i32 0, i32 1
  %1620 = extractvalue { <2 x float>, <2 x float> } %1616, 1
  store <2 x float> %1620, ptr %1619, align 4
  %1621 = load ptr, ptr %10, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.ImGuiWindow, ptr %1621, i32 0, i32 63
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1622, ptr align 4 %71, i64 16, i1 false), !tbaa.struct !143
  %1623 = load ptr, ptr %10, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.ImGuiWindow, ptr %1623, i32 0, i32 63
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1624, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1625 = load ptr, ptr %10, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.ImGuiWindow, ptr %1625, i32 0, i32 5
  %1627 = getelementptr inbounds %struct.ImVec2, ptr %1626, i32 0, i32 0
  %1628 = load float, ptr %1627, align 8, !tbaa !200
  %1629 = load ptr, ptr %10, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.ImGuiWindow, ptr %1629, i32 0, i32 14
  %1631 = load float, ptr %1630, align 8, !tbaa !175
  %1632 = fadd float %1628, %1631
  %1633 = load ptr, ptr %10, align 8, !tbaa !5
  %1634 = getelementptr inbounds %struct.ImGuiWindow, ptr %1633, i32 0, i32 64
  %1635 = getelementptr inbounds %struct.ImRect, ptr %1634, i32 0, i32 0
  %1636 = getelementptr inbounds %struct.ImVec2, ptr %1635, i32 0, i32 0
  store float %1632, ptr %1636, align 8, !tbaa !201
  %1637 = load ptr, ptr %10, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiWindow, ptr %1637, i32 0, i32 5
  %1639 = getelementptr inbounds %struct.ImVec2, ptr %1638, i32 0, i32 1
  %1640 = load float, ptr %1639, align 4, !tbaa !202
  %1641 = load ptr, ptr %10, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.ImGuiWindow, ptr %1641, i32 0, i32 15
  %1643 = load float, ptr %1642, align 4, !tbaa !177
  %1644 = fadd float %1640, %1643
  %1645 = load ptr, ptr %10, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiWindow, ptr %1645, i32 0, i32 64
  %1647 = getelementptr inbounds %struct.ImRect, ptr %1646, i32 0, i32 0
  %1648 = getelementptr inbounds %struct.ImVec2, ptr %1647, i32 0, i32 1
  store float %1644, ptr %1648, align 4, !tbaa !203
  %1649 = load ptr, ptr %10, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.ImGuiWindow, ptr %1649, i32 0, i32 5
  %1651 = getelementptr inbounds %struct.ImVec2, ptr %1650, i32 0, i32 0
  %1652 = load float, ptr %1651, align 8, !tbaa !200
  %1653 = load ptr, ptr %10, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ImGuiWindow, ptr %1653, i32 0, i32 6
  %1655 = getelementptr inbounds %struct.ImVec2, ptr %1654, i32 0, i32 0
  %1656 = load float, ptr %1655, align 8, !tbaa !155
  %1657 = fadd float %1652, %1656
  %1658 = load ptr, ptr %10, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.ImGuiWindow, ptr %1658, i32 0, i32 16
  %1660 = load float, ptr %1659, align 8, !tbaa !176
  %1661 = fsub float %1657, %1660
  %1662 = load ptr, ptr %10, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.ImGuiWindow, ptr %1662, i32 0, i32 64
  %1664 = getelementptr inbounds %struct.ImRect, ptr %1663, i32 0, i32 1
  %1665 = getelementptr inbounds %struct.ImVec2, ptr %1664, i32 0, i32 0
  store float %1661, ptr %1665, align 8, !tbaa !204
  %1666 = load ptr, ptr %10, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.ImGuiWindow, ptr %1666, i32 0, i32 5
  %1668 = getelementptr inbounds %struct.ImVec2, ptr %1667, i32 0, i32 1
  %1669 = load float, ptr %1668, align 4, !tbaa !202
  %1670 = load ptr, ptr %10, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.ImGuiWindow, ptr %1670, i32 0, i32 6
  %1672 = getelementptr inbounds %struct.ImVec2, ptr %1671, i32 0, i32 1
  %1673 = load float, ptr %1672, align 4, !tbaa !157
  %1674 = fadd float %1669, %1673
  %1675 = load ptr, ptr %10, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.ImGuiWindow, ptr %1675, i32 0, i32 17
  %1677 = load float, ptr %1676, align 4, !tbaa !178
  %1678 = fsub float %1674, %1677
  %1679 = load ptr, ptr %10, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.ImGuiWindow, ptr %1679, i32 0, i32 64
  %1681 = getelementptr inbounds %struct.ImRect, ptr %1680, i32 0, i32 1
  %1682 = getelementptr inbounds %struct.ImVec2, ptr %1681, i32 0, i32 1
  store float %1678, ptr %1682, align 4, !tbaa !205
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  %1683 = load i32, ptr %7, align 4, !tbaa !9
  %1684 = and i32 %1683, 1024
  %1685 = icmp ne i32 %1684, 0
  br i1 %1685, label %1690, label %1686

1686:                                             ; preds = %1607
  %1687 = load i32, ptr %7, align 4, !tbaa !9
  %1688 = and i32 %1687, 1
  %1689 = icmp ne i32 %1688, 0
  br i1 %1689, label %1694, label %1690

1690:                                             ; preds = %1686, %1607
  %1691 = load ptr, ptr %9, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiStyle, ptr %1691, i32 0, i32 14
  %1693 = load float, ptr %1692, align 4, !tbaa !206
  br label %1698

1694:                                             ; preds = %1686
  %1695 = load ptr, ptr %10, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.ImGuiWindow, ptr %1695, i32 0, i32 13
  %1697 = load float, ptr %1696, align 4, !tbaa !159
  br label %1698

1698:                                             ; preds = %1694, %1690
  %1699 = phi float [ %1693, %1690 ], [ %1697, %1694 ]
  store float %1699, ptr %73, align 4, !tbaa !118
  %1700 = load ptr, ptr %10, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.ImGuiWindow, ptr %1700, i32 0, i32 64
  %1702 = getelementptr inbounds %struct.ImRect, ptr %1701, i32 0, i32 0
  %1703 = getelementptr inbounds %struct.ImVec2, ptr %1702, i32 0, i32 0
  %1704 = load float, ptr %1703, align 8, !tbaa !201
  %1705 = fadd float 5.000000e-01, %1704
  %1706 = load ptr, ptr %10, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ImGuiWindow, ptr %1706, i32 0, i32 11
  %1708 = getelementptr inbounds %struct.ImVec2, ptr %1707, i32 0, i32 0
  %1709 = load float, ptr %1708, align 8, !tbaa !163
  %1710 = fmul float %1709, 5.000000e-01
  %1711 = call noundef float @_ZL7ImFloorf(float noundef %1710)
  %1712 = load ptr, ptr %10, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.ImGuiWindow, ptr %1712, i32 0, i32 13
  %1714 = load float, ptr %1713, align 4, !tbaa !159
  %1715 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1711, float noundef %1714)
  %1716 = fadd float %1705, %1715
  %1717 = call noundef float @_ZL7ImFloorf(float noundef %1716)
  %1718 = load ptr, ptr %10, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiWindow, ptr %1718, i32 0, i32 65
  %1720 = getelementptr inbounds %struct.ImRect, ptr %1719, i32 0, i32 0
  %1721 = getelementptr inbounds %struct.ImVec2, ptr %1720, i32 0, i32 0
  store float %1717, ptr %1721, align 8, !tbaa !207
  %1722 = load ptr, ptr %10, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.ImGuiWindow, ptr %1722, i32 0, i32 64
  %1724 = getelementptr inbounds %struct.ImRect, ptr %1723, i32 0, i32 0
  %1725 = getelementptr inbounds %struct.ImVec2, ptr %1724, i32 0, i32 1
  %1726 = load float, ptr %1725, align 4, !tbaa !203
  %1727 = fadd float 5.000000e-01, %1726
  %1728 = load float, ptr %73, align 4, !tbaa !118
  %1729 = fadd float %1727, %1728
  %1730 = call noundef float @_ZL7ImFloorf(float noundef %1729)
  %1731 = load ptr, ptr %10, align 8, !tbaa !5
  %1732 = getelementptr inbounds %struct.ImGuiWindow, ptr %1731, i32 0, i32 65
  %1733 = getelementptr inbounds %struct.ImRect, ptr %1732, i32 0, i32 0
  %1734 = getelementptr inbounds %struct.ImVec2, ptr %1733, i32 0, i32 1
  store float %1730, ptr %1734, align 4, !tbaa !208
  %1735 = load ptr, ptr %10, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiWindow, ptr %1735, i32 0, i32 64
  %1737 = getelementptr inbounds %struct.ImRect, ptr %1736, i32 0, i32 1
  %1738 = getelementptr inbounds %struct.ImVec2, ptr %1737, i32 0, i32 0
  %1739 = load float, ptr %1738, align 8, !tbaa !204
  %1740 = fadd float 5.000000e-01, %1739
  %1741 = load ptr, ptr %10, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.ImGuiWindow, ptr %1741, i32 0, i32 11
  %1743 = getelementptr inbounds %struct.ImVec2, ptr %1742, i32 0, i32 0
  %1744 = load float, ptr %1743, align 8, !tbaa !163
  %1745 = fmul float %1744, 5.000000e-01
  %1746 = call noundef float @_ZL7ImFloorf(float noundef %1745)
  %1747 = load ptr, ptr %10, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiWindow, ptr %1747, i32 0, i32 13
  %1749 = load float, ptr %1748, align 4, !tbaa !159
  %1750 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1746, float noundef %1749)
  %1751 = fsub float %1740, %1750
  %1752 = call noundef float @_ZL7ImFloorf(float noundef %1751)
  %1753 = load ptr, ptr %10, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.ImGuiWindow, ptr %1753, i32 0, i32 65
  %1755 = getelementptr inbounds %struct.ImRect, ptr %1754, i32 0, i32 1
  %1756 = getelementptr inbounds %struct.ImVec2, ptr %1755, i32 0, i32 0
  store float %1752, ptr %1756, align 8, !tbaa !209
  %1757 = load ptr, ptr %10, align 8, !tbaa !5
  %1758 = getelementptr inbounds %struct.ImGuiWindow, ptr %1757, i32 0, i32 64
  %1759 = getelementptr inbounds %struct.ImRect, ptr %1758, i32 0, i32 1
  %1760 = getelementptr inbounds %struct.ImVec2, ptr %1759, i32 0, i32 1
  %1761 = load float, ptr %1760, align 4, !tbaa !205
  %1762 = fadd float 5.000000e-01, %1761
  %1763 = load ptr, ptr %10, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.ImGuiWindow, ptr %1763, i32 0, i32 13
  %1765 = load float, ptr %1764, align 4, !tbaa !159
  %1766 = fsub float %1762, %1765
  %1767 = call noundef float @_ZL7ImFloorf(float noundef %1766)
  %1768 = load ptr, ptr %10, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiWindow, ptr %1768, i32 0, i32 65
  %1770 = getelementptr inbounds %struct.ImRect, ptr %1769, i32 0, i32 1
  %1771 = getelementptr inbounds %struct.ImVec2, ptr %1770, i32 0, i32 1
  store float %1767, ptr %1771, align 4, !tbaa !210
  %1772 = load ptr, ptr %10, align 8, !tbaa !5
  %1773 = getelementptr inbounds %struct.ImGuiWindow, ptr %1772, i32 0, i32 65
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1773, ptr noundef nonnull align 4 dereferenceable(16) %70)
  %1774 = load ptr, ptr %10, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.ImGuiWindow, ptr %1774, i32 0, i32 6
  %1776 = getelementptr inbounds %struct.ImVec2, ptr %1775, i32 0, i32 0
  %1777 = load float, ptr %1776, align 8, !tbaa !155
  %1778 = fcmp ogt float %1777, 0.000000e+00
  br i1 %1778, label %1779, label %1796

1779:                                             ; preds = %1698
  %1780 = load i32, ptr %7, align 4, !tbaa !9
  %1781 = and i32 %1780, 33554432
  %1782 = icmp ne i32 %1781, 0
  br i1 %1782, label %1796, label %1783

1783:                                             ; preds = %1779
  %1784 = load i32, ptr %7, align 4, !tbaa !9
  %1785 = and i32 %1784, 64
  %1786 = icmp ne i32 %1785, 0
  br i1 %1786, label %1796, label %1787

1787:                                             ; preds = %1783
  %1788 = load ptr, ptr %10, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.ImGuiWindow, ptr %1788, i32 0, i32 6
  %1790 = getelementptr inbounds %struct.ImVec2, ptr %1789, i32 0, i32 0
  %1791 = load float, ptr %1790, align 8, !tbaa !155
  %1792 = fmul float %1791, 0x3FE4CCCCC0000000
  %1793 = call noundef float @_ZL7ImFloorf(float noundef %1792)
  %1794 = load ptr, ptr %10, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.ImGuiWindow, ptr %1794, i32 0, i32 74
  store float %1793, ptr %1795, align 8, !tbaa !211
  br label %1804

1796:                                             ; preds = %1783, %1779, %1698
  %1797 = load ptr, ptr %8, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.ImGuiContext, ptr %1797, i32 0, i32 7
  %1799 = load float, ptr %1798, align 8, !tbaa !193
  %1800 = fmul float %1799, 1.600000e+01
  %1801 = call noundef float @_ZL7ImFloorf(float noundef %1800)
  %1802 = load ptr, ptr %10, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.ImGuiWindow, ptr %1802, i32 0, i32 74
  store float %1801, ptr %1803, align 8, !tbaa !211
  br label %1804

1804:                                             ; preds = %1796, %1787
  %1805 = load ptr, ptr %10, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.ImGuiWindow, ptr %1805, i32 0, i32 8
  %1807 = getelementptr inbounds %struct.ImVec2, ptr %1806, i32 0, i32 0
  %1808 = load float, ptr %1807, align 8, !tbaa !212
  %1809 = load ptr, ptr %10, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiWindow, ptr %1809, i32 0, i32 11
  %1811 = getelementptr inbounds %struct.ImVec2, ptr %1810, i32 0, i32 0
  %1812 = load float, ptr %1811, align 8, !tbaa !163
  %1813 = call float @llvm.fmuladd.f32(float %1812, float 2.000000e+00, float %1808)
  %1814 = load ptr, ptr %10, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.ImGuiWindow, ptr %1814, i32 0, i32 64
  %1816 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %1815)
  %1817 = fsub float %1813, %1816
  %1818 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1817)
  %1819 = load ptr, ptr %10, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.ImGuiWindow, ptr %1819, i32 0, i32 24
  %1821 = getelementptr inbounds %struct.ImVec2, ptr %1820, i32 0, i32 0
  store float %1818, ptr %1821, align 4, !tbaa !213
  %1822 = load ptr, ptr %10, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.ImGuiWindow, ptr %1822, i32 0, i32 8
  %1824 = getelementptr inbounds %struct.ImVec2, ptr %1823, i32 0, i32 1
  %1825 = load float, ptr %1824, align 4, !tbaa !214
  %1826 = load ptr, ptr %10, align 8, !tbaa !5
  %1827 = getelementptr inbounds %struct.ImGuiWindow, ptr %1826, i32 0, i32 11
  %1828 = getelementptr inbounds %struct.ImVec2, ptr %1827, i32 0, i32 1
  %1829 = load float, ptr %1828, align 4, !tbaa !215
  %1830 = call float @llvm.fmuladd.f32(float %1829, float 2.000000e+00, float %1825)
  %1831 = load ptr, ptr %10, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.ImGuiWindow, ptr %1831, i32 0, i32 64
  %1833 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %1832)
  %1834 = fsub float %1830, %1833
  %1835 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1834)
  %1836 = load ptr, ptr %10, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.ImGuiWindow, ptr %1836, i32 0, i32 24
  %1838 = getelementptr inbounds %struct.ImVec2, ptr %1837, i32 0, i32 1
  store float %1835, ptr %1838, align 4, !tbaa !216
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #13
  %1839 = load ptr, ptr %10, align 8, !tbaa !5
  %1840 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %1839)
  store <2 x float> %1840, ptr %74, align 4
  %1841 = load ptr, ptr %10, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.ImGuiWindow, ptr %1841, i32 0, i32 23
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1842, ptr align 4 %74, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %75, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %1843 = load ptr, ptr %10, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.ImGuiWindow, ptr %1843, i32 0, i32 25
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1844, ptr align 4 %75, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #13
  %1845 = load ptr, ptr %10, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiWindow, ptr %1845, i32 0, i32 19
  store float 0.000000e+00, ptr %1846, align 4, !tbaa !217
  %1847 = load ptr, ptr %10, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.ImGuiWindow, ptr %1847, i32 0, i32 18
  store float 0.000000e+00, ptr %1848, align 8, !tbaa !218
  %1849 = load ptr, ptr %10, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiWindow, ptr %1849, i32 0, i32 80
  %1851 = load ptr, ptr %1850, align 8, !tbaa !144
  %1852 = getelementptr inbounds %struct.ImDrawList, ptr %1851, i32 0, i32 0
  %1853 = getelementptr inbounds %struct.ImVector.33, ptr %1852, i32 0, i32 0
  %1854 = load i32, ptr %1853, align 8, !tbaa !219
  %1855 = icmp eq i32 %1854, 1
  br i1 %1855, label %1856, label %1865

1856:                                             ; preds = %1804
  %1857 = load ptr, ptr %10, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiWindow, ptr %1857, i32 0, i32 80
  %1859 = load ptr, ptr %1858, align 8, !tbaa !144
  %1860 = getelementptr inbounds %struct.ImDrawList, ptr %1859, i32 0, i32 0
  %1861 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1860, i32 noundef 0)
  %1862 = getelementptr inbounds %struct.ImDrawCmd, ptr %1861, i32 0, i32 4
  %1863 = load i32, ptr %1862, align 8, !tbaa !220
  %1864 = icmp eq i32 %1863, 0
  br label %1865

1865:                                             ; preds = %1856, %1804
  %1866 = phi i1 [ false, %1804 ], [ %1864, %1856 ]
  br i1 %1866, label %1867, label %1868

1867:                                             ; preds = %1865
  br label %1870

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

1869:                                             ; No predecessors!
  br label %1870

1870:                                             ; preds = %1869, %1867
  %1871 = load ptr, ptr %10, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.ImGuiWindow, ptr %1871, i32 0, i32 80
  %1873 = load ptr, ptr %1872, align 8, !tbaa !144
  %1874 = load ptr, ptr %8, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.ImGuiContext, ptr %1874, i32 0, i32 6
  %1876 = load ptr, ptr %1875, align 8, !tbaa !222
  %1877 = getelementptr inbounds %struct.ImFont, ptr %1876, i32 0, i32 6
  %1878 = load ptr, ptr %1877, align 8, !tbaa !223
  %1879 = getelementptr inbounds %struct.ImFontAtlas, ptr %1878, i32 0, i32 2
  %1880 = load ptr, ptr %1879, align 8, !tbaa !224
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %1873, ptr noundef %1880)
  %1881 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 0
  %1882 = getelementptr inbounds %struct.ImRect, ptr %70, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1881, ptr noundef nonnull align 4 dereferenceable(8) %1882, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #13
  store i8 0, ptr %76, align 1, !tbaa !81
  %1883 = load i32, ptr %7, align 4, !tbaa !9
  %1884 = and i32 %1883, 16777216
  %1885 = icmp ne i32 %1884, 0
  br i1 %1885, label %1886, label %1959

1886:                                             ; preds = %1870
  %1887 = load i32, ptr %7, align 4, !tbaa !9
  %1888 = and i32 %1887, 67108864
  %1889 = icmp ne i32 %1888, 0
  br i1 %1889, label %1959, label %1890

1890:                                             ; preds = %1886
  %1891 = load i8, ptr %24, align 1, !tbaa !81, !range !77, !noundef !78
  %1892 = trunc i8 %1891 to i1
  br i1 %1892, label %1959, label %1893

1893:                                             ; preds = %1890
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  %1894 = load ptr, ptr %17, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiWindow, ptr %1894, i32 0, i32 62
  %1896 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1895, i32 0, i32 25
  %1897 = getelementptr inbounds %struct.ImVector.2, ptr %1896, i32 0, i32 0
  %1898 = load i32, ptr %1897, align 8, !tbaa !185
  %1899 = icmp sge i32 %1898, 2
  br i1 %1899, label %1900, label %1912

1900:                                             ; preds = %1893
  %1901 = load ptr, ptr %17, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.ImGuiWindow, ptr %1901, i32 0, i32 62
  %1903 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1902, i32 0, i32 25
  %1904 = load ptr, ptr %17, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiWindow, ptr %1904, i32 0, i32 62
  %1906 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1905, i32 0, i32 25
  %1907 = getelementptr inbounds %struct.ImVector.2, ptr %1906, i32 0, i32 0
  %1908 = load i32, ptr %1907, align 8, !tbaa !185
  %1909 = sub nsw i32 %1908, 2
  %1910 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1903, i32 noundef %1909)
  %1911 = load ptr, ptr %1910, align 8, !tbaa !5
  br label %1913

1912:                                             ; preds = %1893
  br label %1913

1913:                                             ; preds = %1912, %1900
  %1914 = phi ptr [ %1911, %1900 ], [ null, %1912 ]
  store ptr %1914, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #13
  %1915 = load ptr, ptr %77, align 8, !tbaa !5
  %1916 = icmp ne ptr %1915, null
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #13
  br i1 %1916, label %1917, label %1931

1917:                                             ; preds = %1913
  %1918 = load ptr, ptr %77, align 8, !tbaa !5
  %1919 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %1918)
  %1920 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %1921 = extractvalue { <2 x float>, <2 x float> } %1919, 0
  store <2 x float> %1921, ptr %1920, align 4
  %1922 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %1923 = extractvalue { <2 x float>, <2 x float> } %1919, 1
  store <2 x float> %1923, ptr %1922, align 4
  %1924 = load ptr, ptr %10, align 8, !tbaa !5
  %1925 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %1924)
  %1926 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 0
  %1927 = extractvalue { <2 x float>, <2 x float> } %1925, 0
  store <2 x float> %1927, ptr %1926, align 4
  %1928 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %80, i32 0, i32 1
  %1929 = extractvalue { <2 x float>, <2 x float> } %1925, 1
  store <2 x float> %1929, ptr %1928, align 4
  %1930 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull align 4 dereferenceable(16) %80)
  br label %1932

1931:                                             ; preds = %1913
  br label %1932

1932:                                             ; preds = %1931, %1917
  %1933 = phi i1 [ %1930, %1917 ], [ false, %1931 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #13
  %1934 = zext i1 %1933 to i8
  store i8 %1934, ptr %78, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #13
  %1935 = load ptr, ptr %17, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.ImGuiWindow, ptr %1935, i32 0, i32 80
  %1937 = load ptr, ptr %1936, align 8, !tbaa !144
  %1938 = getelementptr inbounds %struct.ImDrawList, ptr %1937, i32 0, i32 2
  %1939 = getelementptr inbounds %struct.ImVector.34, ptr %1938, i32 0, i32 0
  %1940 = load i32, ptr %1939, align 8, !tbaa !228
  %1941 = icmp sgt i32 %1940, 0
  %1942 = zext i1 %1941 to i8
  store i8 %1942, ptr %81, align 1, !tbaa !81
  %1943 = load ptr, ptr %10, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.ImGuiWindow, ptr %1943, i32 0, i32 80
  %1945 = load ptr, ptr %1944, align 8, !tbaa !144
  %1946 = getelementptr inbounds %struct.ImDrawList, ptr %1945, i32 0, i32 0
  %1947 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %1946)
  %1948 = getelementptr inbounds %struct.ImDrawCmd, ptr %1947, i32 0, i32 4
  %1949 = load i32, ptr %1948, align 8, !tbaa !220
  %1950 = icmp eq i32 %1949, 0
  br i1 %1950, label %1951, label %1958

1951:                                             ; preds = %1932
  %1952 = load i8, ptr %81, align 1, !tbaa !81, !range !77, !noundef !78
  %1953 = trunc i8 %1952 to i1
  br i1 %1953, label %1954, label %1958

1954:                                             ; preds = %1951
  %1955 = load i8, ptr %78, align 1, !tbaa !81, !range !77, !noundef !78
  %1956 = trunc i8 %1955 to i1
  br i1 %1956, label %1958, label %1957

1957:                                             ; preds = %1954
  store i8 1, ptr %76, align 1, !tbaa !81
  br label %1958

1958:                                             ; preds = %1957, %1954, %1951, %1932
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  br label %1959

1959:                                             ; preds = %1958, %1890, %1886, %1870
  %1960 = load i8, ptr %76, align 1, !tbaa !81, !range !77, !noundef !78
  %1961 = trunc i8 %1960 to i1
  br i1 %1961, label %1962, label %1968

1962:                                             ; preds = %1959
  %1963 = load ptr, ptr %17, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.ImGuiWindow, ptr %1963, i32 0, i32 80
  %1965 = load ptr, ptr %1964, align 8, !tbaa !144
  %1966 = load ptr, ptr %10, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.ImGuiWindow, ptr %1966, i32 0, i32 80
  store ptr %1965, ptr %1967, align 8, !tbaa !144
  br label %1968

1968:                                             ; preds = %1962, %1959
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %1969 = load ptr, ptr %8, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.ImGuiContext, ptr %1969, i32 0, i32 127
  %1971 = load ptr, ptr %1970, align 8, !tbaa !229
  %1972 = icmp ne ptr %1971, null
  br i1 %1972, label %1973, label %1977

1973:                                             ; preds = %1968
  %1974 = load ptr, ptr %8, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.ImGuiContext, ptr %1974, i32 0, i32 127
  %1976 = load ptr, ptr %1975, align 8, !tbaa !229
  br label %1981

1977:                                             ; preds = %1968
  %1978 = load ptr, ptr %8, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ImGuiContext, ptr %1978, i32 0, i32 84
  %1980 = load ptr, ptr %1979, align 8, !tbaa !230
  br label %1981

1981:                                             ; preds = %1977, %1973
  %1982 = phi ptr [ %1976, %1973 ], [ %1980, %1977 ]
  store ptr %1982, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #13
  %1983 = load i8, ptr %55, align 1, !tbaa !81, !range !77, !noundef !78
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1998, label %1985

1985:                                             ; preds = %1981
  %1986 = load ptr, ptr %82, align 8, !tbaa !5
  %1987 = icmp ne ptr %1986, null
  br i1 %1987, label %1988, label %1996

1988:                                             ; preds = %1985
  %1989 = load ptr, ptr %10, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct.ImGuiWindow, ptr %1989, i32 0, i32 86
  %1991 = load ptr, ptr %1990, align 8, !tbaa !231
  %1992 = load ptr, ptr %82, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiWindow, ptr %1992, i32 0, i32 86
  %1994 = load ptr, ptr %1993, align 8, !tbaa !231
  %1995 = icmp eq ptr %1991, %1994
  br label %1996

1996:                                             ; preds = %1988, %1985
  %1997 = phi i1 [ false, %1985 ], [ %1995, %1988 ]
  br label %1998

1998:                                             ; preds = %1996, %1981
  %1999 = phi i1 [ true, %1981 ], [ %1997, %1996 ]
  %2000 = zext i1 %1999 to i8
  store i8 %2000, ptr %83, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #13
  store i8 1, ptr %84, align 1, !tbaa !81
  %2001 = load ptr, ptr %10, align 8, !tbaa !5
  %2002 = load i8, ptr %83, align 1, !tbaa !81, !range !77, !noundef !78
  %2003 = trunc i8 %2002 to i1
  %2004 = load i32, ptr %60, align 4, !tbaa !9
  %2005 = getelementptr inbounds [4 x i32], ptr %59, i64 0, i64 0
  %2006 = load float, ptr %61, align 4, !tbaa !118
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %2001, ptr noundef nonnull align 4 dereferenceable(16) %72, i1 noundef zeroext %2003, i1 noundef zeroext true, i32 noundef %2004, ptr noundef %2005, float noundef %2006)
  %2007 = load i8, ptr %76, align 1, !tbaa !81, !range !77, !noundef !78
  %2008 = trunc i8 %2007 to i1
  br i1 %2008, label %2009, label %2014

2009:                                             ; preds = %1998
  %2010 = load ptr, ptr %10, align 8, !tbaa !5
  %2011 = getelementptr inbounds %struct.ImGuiWindow, ptr %2010, i32 0, i32 81
  %2012 = load ptr, ptr %10, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.ImGuiWindow, ptr %2012, i32 0, i32 80
  store ptr %2011, ptr %2013, align 8, !tbaa !144
  br label %2014

2014:                                             ; preds = %2009, %1998
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #13
  %2015 = load i32, ptr %7, align 4, !tbaa !9
  %2016 = and i32 %2015, 8
  %2017 = icmp ne i32 %2016, 0
  br i1 %2017, label %2022, label %2018

2018:                                             ; preds = %2014
  %2019 = load i32, ptr %7, align 4, !tbaa !9
  %2020 = and i32 %2019, 2048
  %2021 = icmp ne i32 %2020, 0
  br label %2022

2022:                                             ; preds = %2018, %2014
  %2023 = phi i1 [ false, %2014 ], [ %2021, %2018 ]
  %2024 = zext i1 %2023 to i8
  store i8 %2024, ptr %85, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  %2025 = load i32, ptr %7, align 4, !tbaa !9
  %2026 = and i32 %2025, 8
  %2027 = icmp ne i32 %2026, 0
  %2028 = xor i1 %2027, true
  %2029 = zext i1 %2028 to i8
  store i8 %2029, ptr %86, align 1, !tbaa !81
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  %2030 = load ptr, ptr %10, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.ImGuiWindow, ptr %2030, i32 0, i32 10
  %2032 = getelementptr inbounds %struct.ImVec2, ptr %2031, i32 0, i32 0
  %2033 = load float, ptr %2032, align 8, !tbaa !232
  %2034 = fcmp une float %2033, 0.000000e+00
  br i1 %2034, label %2035, label %2040

2035:                                             ; preds = %2022
  %2036 = load ptr, ptr %10, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.ImGuiWindow, ptr %2036, i32 0, i32 10
  %2038 = getelementptr inbounds %struct.ImVec2, ptr %2037, i32 0, i32 0
  %2039 = load float, ptr %2038, align 8, !tbaa !232
  br label %2070

2040:                                             ; preds = %2022
  %2041 = load i8, ptr %85, align 1, !tbaa !81, !range !77, !noundef !78
  %2042 = trunc i8 %2041 to i1
  br i1 %2042, label %2043, label %2048

2043:                                             ; preds = %2040
  %2044 = load ptr, ptr %10, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.ImGuiWindow, ptr %2044, i32 0, i32 8
  %2046 = getelementptr inbounds %struct.ImVec2, ptr %2045, i32 0, i32 0
  %2047 = load float, ptr %2046, align 8, !tbaa !212
  br label %2049

2048:                                             ; preds = %2040
  br label %2049

2049:                                             ; preds = %2048, %2043
  %2050 = phi float [ %2047, %2043 ], [ 0.000000e+00, %2048 ]
  %2051 = load ptr, ptr %10, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiWindow, ptr %2051, i32 0, i32 6
  %2053 = getelementptr inbounds %struct.ImVec2, ptr %2052, i32 0, i32 0
  %2054 = load float, ptr %2053, align 8, !tbaa !155
  %2055 = load ptr, ptr %10, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiWindow, ptr %2055, i32 0, i32 11
  %2057 = getelementptr inbounds %struct.ImVec2, ptr %2056, i32 0, i32 0
  %2058 = load float, ptr %2057, align 8, !tbaa !163
  %2059 = fneg float %2058
  %2060 = call float @llvm.fmuladd.f32(float %2059, float 2.000000e+00, float %2054)
  %2061 = load ptr, ptr %10, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiWindow, ptr %2061, i32 0, i32 14
  %2063 = load float, ptr %2062, align 8, !tbaa !175
  %2064 = load ptr, ptr %10, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiWindow, ptr %2064, i32 0, i32 16
  %2066 = load float, ptr %2065, align 8, !tbaa !176
  %2067 = fadd float %2063, %2066
  %2068 = fsub float %2060, %2067
  %2069 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2050, float noundef %2068)
  br label %2070

2070:                                             ; preds = %2049, %2035
  %2071 = phi float [ %2039, %2035 ], [ %2069, %2049 ]
  store float %2071, ptr %87, align 4, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #13
  %2072 = load ptr, ptr %10, align 8, !tbaa !5
  %2073 = getelementptr inbounds %struct.ImGuiWindow, ptr %2072, i32 0, i32 10
  %2074 = getelementptr inbounds %struct.ImVec2, ptr %2073, i32 0, i32 1
  %2075 = load float, ptr %2074, align 4, !tbaa !233
  %2076 = fcmp une float %2075, 0.000000e+00
  br i1 %2076, label %2077, label %2082

2077:                                             ; preds = %2070
  %2078 = load ptr, ptr %10, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.ImGuiWindow, ptr %2078, i32 0, i32 10
  %2080 = getelementptr inbounds %struct.ImVec2, ptr %2079, i32 0, i32 1
  %2081 = load float, ptr %2080, align 4, !tbaa !233
  br label %2112

2082:                                             ; preds = %2070
  %2083 = load i8, ptr %86, align 1, !tbaa !81, !range !77, !noundef !78
  %2084 = trunc i8 %2083 to i1
  br i1 %2084, label %2085, label %2090

2085:                                             ; preds = %2082
  %2086 = load ptr, ptr %10, align 8, !tbaa !5
  %2087 = getelementptr inbounds %struct.ImGuiWindow, ptr %2086, i32 0, i32 8
  %2088 = getelementptr inbounds %struct.ImVec2, ptr %2087, i32 0, i32 1
  %2089 = load float, ptr %2088, align 4, !tbaa !214
  br label %2091

2090:                                             ; preds = %2082
  br label %2091

2091:                                             ; preds = %2090, %2085
  %2092 = phi float [ %2089, %2085 ], [ 0.000000e+00, %2090 ]
  %2093 = load ptr, ptr %10, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.ImGuiWindow, ptr %2093, i32 0, i32 6
  %2095 = getelementptr inbounds %struct.ImVec2, ptr %2094, i32 0, i32 1
  %2096 = load float, ptr %2095, align 4, !tbaa !157
  %2097 = load ptr, ptr %10, align 8, !tbaa !5
  %2098 = getelementptr inbounds %struct.ImGuiWindow, ptr %2097, i32 0, i32 11
  %2099 = getelementptr inbounds %struct.ImVec2, ptr %2098, i32 0, i32 1
  %2100 = load float, ptr %2099, align 4, !tbaa !215
  %2101 = fneg float %2100
  %2102 = call float @llvm.fmuladd.f32(float %2101, float 2.000000e+00, float %2096)
  %2103 = load ptr, ptr %10, align 8, !tbaa !5
  %2104 = getelementptr inbounds %struct.ImGuiWindow, ptr %2103, i32 0, i32 15
  %2105 = load float, ptr %2104, align 4, !tbaa !177
  %2106 = load ptr, ptr %10, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.ImGuiWindow, ptr %2106, i32 0, i32 17
  %2108 = load float, ptr %2107, align 4, !tbaa !178
  %2109 = fadd float %2105, %2108
  %2110 = fsub float %2102, %2109
  %2111 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2092, float noundef %2110)
  br label %2112

2112:                                             ; preds = %2091, %2077
  %2113 = phi float [ %2081, %2077 ], [ %2111, %2091 ]
  store float %2113, ptr %88, align 4, !tbaa !118
  %2114 = load ptr, ptr %10, align 8, !tbaa !5
  %2115 = getelementptr inbounds %struct.ImGuiWindow, ptr %2114, i32 0, i32 64
  %2116 = getelementptr inbounds %struct.ImRect, ptr %2115, i32 0, i32 0
  %2117 = getelementptr inbounds %struct.ImVec2, ptr %2116, i32 0, i32 0
  %2118 = load float, ptr %2117, align 8, !tbaa !201
  %2119 = load ptr, ptr %10, align 8, !tbaa !5
  %2120 = getelementptr inbounds %struct.ImGuiWindow, ptr %2119, i32 0, i32 23
  %2121 = getelementptr inbounds %struct.ImVec2, ptr %2120, i32 0, i32 0
  %2122 = load float, ptr %2121, align 4, !tbaa !234
  %2123 = fsub float %2118, %2122
  %2124 = load ptr, ptr %10, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.ImGuiWindow, ptr %2124, i32 0, i32 11
  %2126 = getelementptr inbounds %struct.ImVec2, ptr %2125, i32 0, i32 0
  %2127 = load float, ptr %2126, align 8, !tbaa !163
  %2128 = load ptr, ptr %10, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.ImGuiWindow, ptr %2128, i32 0, i32 13
  %2130 = load float, ptr %2129, align 4, !tbaa !159
  %2131 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2127, float noundef %2130)
  %2132 = fadd float %2123, %2131
  %2133 = call noundef float @_ZL7ImFloorf(float noundef %2132)
  %2134 = load ptr, ptr %10, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ImGuiWindow, ptr %2134, i32 0, i32 66
  %2136 = getelementptr inbounds %struct.ImRect, ptr %2135, i32 0, i32 0
  %2137 = getelementptr inbounds %struct.ImVec2, ptr %2136, i32 0, i32 0
  store float %2133, ptr %2137, align 8, !tbaa !235
  %2138 = load ptr, ptr %10, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.ImGuiWindow, ptr %2138, i32 0, i32 64
  %2140 = getelementptr inbounds %struct.ImRect, ptr %2139, i32 0, i32 0
  %2141 = getelementptr inbounds %struct.ImVec2, ptr %2140, i32 0, i32 1
  %2142 = load float, ptr %2141, align 4, !tbaa !203
  %2143 = load ptr, ptr %10, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiWindow, ptr %2143, i32 0, i32 23
  %2145 = getelementptr inbounds %struct.ImVec2, ptr %2144, i32 0, i32 1
  %2146 = load float, ptr %2145, align 4, !tbaa !236
  %2147 = fsub float %2142, %2146
  %2148 = load ptr, ptr %10, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.ImGuiWindow, ptr %2148, i32 0, i32 11
  %2150 = getelementptr inbounds %struct.ImVec2, ptr %2149, i32 0, i32 1
  %2151 = load float, ptr %2150, align 4, !tbaa !215
  %2152 = load ptr, ptr %10, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiWindow, ptr %2152, i32 0, i32 13
  %2154 = load float, ptr %2153, align 4, !tbaa !159
  %2155 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2151, float noundef %2154)
  %2156 = fadd float %2147, %2155
  %2157 = call noundef float @_ZL7ImFloorf(float noundef %2156)
  %2158 = load ptr, ptr %10, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiWindow, ptr %2158, i32 0, i32 66
  %2160 = getelementptr inbounds %struct.ImRect, ptr %2159, i32 0, i32 0
  %2161 = getelementptr inbounds %struct.ImVec2, ptr %2160, i32 0, i32 1
  store float %2157, ptr %2161, align 4, !tbaa !237
  %2162 = load ptr, ptr %10, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.ImGuiWindow, ptr %2162, i32 0, i32 66
  %2164 = getelementptr inbounds %struct.ImRect, ptr %2163, i32 0, i32 0
  %2165 = getelementptr inbounds %struct.ImVec2, ptr %2164, i32 0, i32 0
  %2166 = load float, ptr %2165, align 8, !tbaa !235
  %2167 = load float, ptr %87, align 4, !tbaa !118
  %2168 = fadd float %2166, %2167
  %2169 = load ptr, ptr %10, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct.ImGuiWindow, ptr %2169, i32 0, i32 66
  %2171 = getelementptr inbounds %struct.ImRect, ptr %2170, i32 0, i32 1
  %2172 = getelementptr inbounds %struct.ImVec2, ptr %2171, i32 0, i32 0
  store float %2168, ptr %2172, align 8, !tbaa !238
  %2173 = load ptr, ptr %10, align 8, !tbaa !5
  %2174 = getelementptr inbounds %struct.ImGuiWindow, ptr %2173, i32 0, i32 66
  %2175 = getelementptr inbounds %struct.ImRect, ptr %2174, i32 0, i32 0
  %2176 = getelementptr inbounds %struct.ImVec2, ptr %2175, i32 0, i32 1
  %2177 = load float, ptr %2176, align 4, !tbaa !237
  %2178 = load float, ptr %88, align 4, !tbaa !118
  %2179 = fadd float %2177, %2178
  %2180 = load ptr, ptr %10, align 8, !tbaa !5
  %2181 = getelementptr inbounds %struct.ImGuiWindow, ptr %2180, i32 0, i32 66
  %2182 = getelementptr inbounds %struct.ImRect, ptr %2181, i32 0, i32 1
  %2183 = getelementptr inbounds %struct.ImVec2, ptr %2182, i32 0, i32 1
  store float %2179, ptr %2183, align 4, !tbaa !239
  %2184 = load ptr, ptr %10, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.ImGuiWindow, ptr %2184, i32 0, i32 66
  %2186 = load ptr, ptr %10, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiWindow, ptr %2186, i32 0, i32 67
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2187, ptr align 8 %2185, i64 16, i1 false), !tbaa.struct !143
  %2188 = load ptr, ptr %10, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.ImGuiWindow, ptr %2188, i32 0, i32 5
  %2190 = getelementptr inbounds %struct.ImVec2, ptr %2189, i32 0, i32 0
  %2191 = load float, ptr %2190, align 8, !tbaa !200
  %2192 = load ptr, ptr %10, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.ImGuiWindow, ptr %2192, i32 0, i32 23
  %2194 = getelementptr inbounds %struct.ImVec2, ptr %2193, i32 0, i32 0
  %2195 = load float, ptr %2194, align 4, !tbaa !234
  %2196 = fsub float %2191, %2195
  %2197 = load ptr, ptr %10, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.ImGuiWindow, ptr %2197, i32 0, i32 11
  %2199 = getelementptr inbounds %struct.ImVec2, ptr %2198, i32 0, i32 0
  %2200 = load float, ptr %2199, align 8, !tbaa !163
  %2201 = fadd float %2196, %2200
  %2202 = load ptr, ptr %10, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.ImGuiWindow, ptr %2202, i32 0, i32 14
  %2204 = load float, ptr %2203, align 8, !tbaa !175
  %2205 = fadd float %2201, %2204
  %2206 = load ptr, ptr %10, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.ImGuiWindow, ptr %2206, i32 0, i32 69
  %2208 = getelementptr inbounds %struct.ImRect, ptr %2207, i32 0, i32 0
  %2209 = getelementptr inbounds %struct.ImVec2, ptr %2208, i32 0, i32 0
  store float %2205, ptr %2209, align 8, !tbaa !240
  %2210 = load ptr, ptr %10, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiWindow, ptr %2210, i32 0, i32 5
  %2212 = getelementptr inbounds %struct.ImVec2, ptr %2211, i32 0, i32 1
  %2213 = load float, ptr %2212, align 4, !tbaa !202
  %2214 = load ptr, ptr %10, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.ImGuiWindow, ptr %2214, i32 0, i32 23
  %2216 = getelementptr inbounds %struct.ImVec2, ptr %2215, i32 0, i32 1
  %2217 = load float, ptr %2216, align 4, !tbaa !236
  %2218 = fsub float %2213, %2217
  %2219 = load ptr, ptr %10, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiWindow, ptr %2219, i32 0, i32 11
  %2221 = getelementptr inbounds %struct.ImVec2, ptr %2220, i32 0, i32 1
  %2222 = load float, ptr %2221, align 4, !tbaa !215
  %2223 = fadd float %2218, %2222
  %2224 = load ptr, ptr %10, align 8, !tbaa !5
  %2225 = getelementptr inbounds %struct.ImGuiWindow, ptr %2224, i32 0, i32 15
  %2226 = load float, ptr %2225, align 4, !tbaa !177
  %2227 = fadd float %2223, %2226
  %2228 = load ptr, ptr %10, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiWindow, ptr %2228, i32 0, i32 69
  %2230 = getelementptr inbounds %struct.ImRect, ptr %2229, i32 0, i32 0
  %2231 = getelementptr inbounds %struct.ImVec2, ptr %2230, i32 0, i32 1
  store float %2227, ptr %2231, align 4, !tbaa !241
  %2232 = load ptr, ptr %10, align 8, !tbaa !5
  %2233 = getelementptr inbounds %struct.ImGuiWindow, ptr %2232, i32 0, i32 69
  %2234 = getelementptr inbounds %struct.ImRect, ptr %2233, i32 0, i32 0
  %2235 = getelementptr inbounds %struct.ImVec2, ptr %2234, i32 0, i32 0
  %2236 = load float, ptr %2235, align 8, !tbaa !240
  %2237 = load ptr, ptr %10, align 8, !tbaa !5
  %2238 = getelementptr inbounds %struct.ImGuiWindow, ptr %2237, i32 0, i32 10
  %2239 = getelementptr inbounds %struct.ImVec2, ptr %2238, i32 0, i32 0
  %2240 = load float, ptr %2239, align 8, !tbaa !232
  %2241 = fcmp une float %2240, 0.000000e+00
  br i1 %2241, label %2242, label %2247

2242:                                             ; preds = %2112
  %2243 = load ptr, ptr %10, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiWindow, ptr %2243, i32 0, i32 10
  %2245 = getelementptr inbounds %struct.ImVec2, ptr %2244, i32 0, i32 0
  %2246 = load float, ptr %2245, align 8, !tbaa !232
  br label %2266

2247:                                             ; preds = %2112
  %2248 = load ptr, ptr %10, align 8, !tbaa !5
  %2249 = getelementptr inbounds %struct.ImGuiWindow, ptr %2248, i32 0, i32 6
  %2250 = getelementptr inbounds %struct.ImVec2, ptr %2249, i32 0, i32 0
  %2251 = load float, ptr %2250, align 8, !tbaa !155
  %2252 = load ptr, ptr %10, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ImGuiWindow, ptr %2252, i32 0, i32 11
  %2254 = getelementptr inbounds %struct.ImVec2, ptr %2253, i32 0, i32 0
  %2255 = load float, ptr %2254, align 8, !tbaa !163
  %2256 = fneg float %2255
  %2257 = call float @llvm.fmuladd.f32(float %2256, float 2.000000e+00, float %2251)
  %2258 = load ptr, ptr %10, align 8, !tbaa !5
  %2259 = getelementptr inbounds %struct.ImGuiWindow, ptr %2258, i32 0, i32 14
  %2260 = load float, ptr %2259, align 8, !tbaa !175
  %2261 = load ptr, ptr %10, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.ImGuiWindow, ptr %2261, i32 0, i32 16
  %2263 = load float, ptr %2262, align 8, !tbaa !176
  %2264 = fadd float %2260, %2263
  %2265 = fsub float %2257, %2264
  br label %2266

2266:                                             ; preds = %2247, %2242
  %2267 = phi float [ %2246, %2242 ], [ %2265, %2247 ]
  %2268 = fadd float %2236, %2267
  %2269 = load ptr, ptr %10, align 8, !tbaa !5
  %2270 = getelementptr inbounds %struct.ImGuiWindow, ptr %2269, i32 0, i32 69
  %2271 = getelementptr inbounds %struct.ImRect, ptr %2270, i32 0, i32 1
  %2272 = getelementptr inbounds %struct.ImVec2, ptr %2271, i32 0, i32 0
  store float %2268, ptr %2272, align 8, !tbaa !242
  %2273 = load ptr, ptr %10, align 8, !tbaa !5
  %2274 = getelementptr inbounds %struct.ImGuiWindow, ptr %2273, i32 0, i32 69
  %2275 = getelementptr inbounds %struct.ImRect, ptr %2274, i32 0, i32 0
  %2276 = getelementptr inbounds %struct.ImVec2, ptr %2275, i32 0, i32 1
  %2277 = load float, ptr %2276, align 4, !tbaa !241
  %2278 = load ptr, ptr %10, align 8, !tbaa !5
  %2279 = getelementptr inbounds %struct.ImGuiWindow, ptr %2278, i32 0, i32 10
  %2280 = getelementptr inbounds %struct.ImVec2, ptr %2279, i32 0, i32 1
  %2281 = load float, ptr %2280, align 4, !tbaa !233
  %2282 = fcmp une float %2281, 0.000000e+00
  br i1 %2282, label %2283, label %2288

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

2288:                                             ; preds = %2266
  %2289 = load ptr, ptr %10, align 8, !tbaa !5
  %2290 = getelementptr inbounds %struct.ImGuiWindow, ptr %2289, i32 0, i32 6
  %2291 = getelementptr inbounds %struct.ImVec2, ptr %2290, i32 0, i32 1
  %2292 = load float, ptr %2291, align 4, !tbaa !157
  %2293 = load ptr, ptr %10, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.ImGuiWindow, ptr %2293, i32 0, i32 11
  %2295 = getelementptr inbounds %struct.ImVec2, ptr %2294, i32 0, i32 1
  %2296 = load float, ptr %2295, align 4, !tbaa !215
  %2297 = fneg float %2296
  %2298 = call float @llvm.fmuladd.f32(float %2297, float 2.000000e+00, float %2292)
  %2299 = load ptr, ptr %10, align 8, !tbaa !5
  %2300 = getelementptr inbounds %struct.ImGuiWindow, ptr %2299, i32 0, i32 15
  %2301 = load float, ptr %2300, align 4, !tbaa !177
  %2302 = load ptr, ptr %10, align 8, !tbaa !5
  %2303 = getelementptr inbounds %struct.ImGuiWindow, ptr %2302, i32 0, i32 17
  %2304 = load float, ptr %2303, align 4, !tbaa !178
  %2305 = fadd float %2301, %2304
  %2306 = fsub float %2298, %2305
  br label %2307

2307:                                             ; preds = %2288, %2283
  %2308 = phi float [ %2287, %2283 ], [ %2306, %2288 ]
  %2309 = fadd float %2277, %2308
  %2310 = load ptr, ptr %10, align 8, !tbaa !5
  %2311 = getelementptr inbounds %struct.ImGuiWindow, ptr %2310, i32 0, i32 69
  %2312 = getelementptr inbounds %struct.ImRect, ptr %2311, i32 0, i32 1
  %2313 = getelementptr inbounds %struct.ImVec2, ptr %2312, i32 0, i32 1
  store float %2309, ptr %2313, align 4, !tbaa !243
  %2314 = load ptr, ptr %10, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.ImGuiWindow, ptr %2314, i32 0, i32 14
  %2316 = load float, ptr %2315, align 8, !tbaa !175
  %2317 = load ptr, ptr %10, align 8, !tbaa !5
  %2318 = getelementptr inbounds %struct.ImGuiWindow, ptr %2317, i32 0, i32 11
  %2319 = getelementptr inbounds %struct.ImVec2, ptr %2318, i32 0, i32 0
  %2320 = load float, ptr %2319, align 8, !tbaa !163
  %2321 = fadd float %2316, %2320
  %2322 = load ptr, ptr %10, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiWindow, ptr %2322, i32 0, i32 23
  %2324 = getelementptr inbounds %struct.ImVec2, ptr %2323, i32 0, i32 0
  %2325 = load float, ptr %2324, align 4, !tbaa !234
  %2326 = fsub float %2321, %2325
  %2327 = load ptr, ptr %10, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiWindow, ptr %2327, i32 0, i32 62
  %2329 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2328, i32 0, i32 11
  %2330 = getelementptr inbounds %struct.ImVec1, ptr %2329, i32 0, i32 0
  store float %2326, ptr %2330, align 4, !tbaa !244
  %2331 = load ptr, ptr %10, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiWindow, ptr %2331, i32 0, i32 62
  %2333 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2332, i32 0, i32 13
  %2334 = getelementptr inbounds %struct.ImVec1, ptr %2333, i32 0, i32 0
  store float 0.000000e+00, ptr %2334, align 4, !tbaa !245
  %2335 = load ptr, ptr %10, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.ImGuiWindow, ptr %2335, i32 0, i32 62
  %2337 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2336, i32 0, i32 12
  %2338 = getelementptr inbounds %struct.ImVec1, ptr %2337, i32 0, i32 0
  store float 0.000000e+00, ptr %2338, align 8, !tbaa !246
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #13
  %2339 = load ptr, ptr %10, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 5
  %2341 = getelementptr inbounds %struct.ImVec2, ptr %2340, i32 0, i32 0
  %2342 = load float, ptr %2341, align 8, !tbaa !200
  %2343 = fpext float %2342 to double
  %2344 = load ptr, ptr %10, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.ImGuiWindow, ptr %2344, i32 0, i32 11
  %2346 = getelementptr inbounds %struct.ImVec2, ptr %2345, i32 0, i32 0
  %2347 = load float, ptr %2346, align 8, !tbaa !163
  %2348 = fpext float %2347 to double
  %2349 = fadd double %2343, %2348
  %2350 = load ptr, ptr %10, align 8, !tbaa !5
  %2351 = getelementptr inbounds %struct.ImGuiWindow, ptr %2350, i32 0, i32 23
  %2352 = getelementptr inbounds %struct.ImVec2, ptr %2351, i32 0, i32 0
  %2353 = load float, ptr %2352, align 4, !tbaa !234
  %2354 = fpext float %2353 to double
  %2355 = fsub double %2349, %2354
  %2356 = load ptr, ptr %10, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.ImGuiWindow, ptr %2356, i32 0, i32 14
  %2358 = load float, ptr %2357, align 8, !tbaa !175
  %2359 = fpext float %2358 to double
  %2360 = fadd double %2355, %2359
  %2361 = load ptr, ptr %10, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ImGuiWindow, ptr %2361, i32 0, i32 62
  %2363 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2362, i32 0, i32 12
  %2364 = getelementptr inbounds %struct.ImVec1, ptr %2363, i32 0, i32 0
  %2365 = load float, ptr %2364, align 8, !tbaa !246
  %2366 = fpext float %2365 to double
  %2367 = fadd double %2360, %2366
  store double %2367, ptr %89, align 8, !tbaa !247
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #13
  %2368 = load ptr, ptr %10, align 8, !tbaa !5
  %2369 = getelementptr inbounds %struct.ImGuiWindow, ptr %2368, i32 0, i32 5
  %2370 = getelementptr inbounds %struct.ImVec2, ptr %2369, i32 0, i32 1
  %2371 = load float, ptr %2370, align 4, !tbaa !202
  %2372 = fpext float %2371 to double
  %2373 = load ptr, ptr %10, align 8, !tbaa !5
  %2374 = getelementptr inbounds %struct.ImGuiWindow, ptr %2373, i32 0, i32 11
  %2375 = getelementptr inbounds %struct.ImVec2, ptr %2374, i32 0, i32 1
  %2376 = load float, ptr %2375, align 4, !tbaa !215
  %2377 = fpext float %2376 to double
  %2378 = fadd double %2372, %2377
  %2379 = load ptr, ptr %10, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiWindow, ptr %2379, i32 0, i32 23
  %2381 = getelementptr inbounds %struct.ImVec2, ptr %2380, i32 0, i32 1
  %2382 = load float, ptr %2381, align 4, !tbaa !236
  %2383 = fpext float %2382 to double
  %2384 = fsub double %2378, %2383
  %2385 = load ptr, ptr %10, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiWindow, ptr %2385, i32 0, i32 15
  %2387 = load float, ptr %2386, align 4, !tbaa !177
  %2388 = fpext float %2387 to double
  %2389 = fadd double %2384, %2388
  store double %2389, ptr %90, align 8, !tbaa !247
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #13
  %2390 = load double, ptr %89, align 8, !tbaa !247
  %2391 = fptrunc double %2390 to float
  %2392 = load double, ptr %90, align 8, !tbaa !247
  %2393 = fptrunc double %2392 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %91, float noundef %2391, float noundef %2393)
  %2394 = load ptr, ptr %10, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiWindow, ptr %2394, i32 0, i32 62
  %2396 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2395, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2396, ptr align 4 %91, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #13
  %2397 = load double, ptr %89, align 8, !tbaa !247
  %2398 = load ptr, ptr %10, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.ImGuiWindow, ptr %2398, i32 0, i32 62
  %2400 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2399, i32 0, i32 2
  %2401 = getelementptr inbounds %struct.ImVec2, ptr %2400, i32 0, i32 0
  %2402 = load float, ptr %2401, align 8, !tbaa !248
  %2403 = fpext float %2402 to double
  %2404 = fsub double %2397, %2403
  %2405 = fptrunc double %2404 to float
  %2406 = load double, ptr %90, align 8, !tbaa !247
  %2407 = load ptr, ptr %10, align 8, !tbaa !5
  %2408 = getelementptr inbounds %struct.ImGuiWindow, ptr %2407, i32 0, i32 62
  %2409 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2408, i32 0, i32 2
  %2410 = getelementptr inbounds %struct.ImVec2, ptr %2409, i32 0, i32 1
  %2411 = load float, ptr %2410, align 4, !tbaa !249
  %2412 = fpext float %2411 to double
  %2413 = fsub double %2406, %2412
  %2414 = fptrunc double %2413 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %92, float noundef %2405, float noundef %2414)
  %2415 = load ptr, ptr %10, align 8, !tbaa !5
  %2416 = getelementptr inbounds %struct.ImGuiWindow, ptr %2415, i32 0, i32 62
  %2417 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2416, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2417, ptr align 4 %92, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #13
  %2418 = load ptr, ptr %10, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiWindow, ptr %2418, i32 0, i32 62
  %2420 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2419, i32 0, i32 2
  %2421 = load ptr, ptr %10, align 8, !tbaa !5
  %2422 = getelementptr inbounds %struct.ImGuiWindow, ptr %2421, i32 0, i32 62
  %2423 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2422, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2423, ptr align 8 %2420, i64 8, i1 false), !tbaa.struct !128
  %2424 = load ptr, ptr %10, align 8, !tbaa !5
  %2425 = getelementptr inbounds %struct.ImGuiWindow, ptr %2424, i32 0, i32 62
  %2426 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2425, i32 0, i32 0
  %2427 = load ptr, ptr %10, align 8, !tbaa !5
  %2428 = getelementptr inbounds %struct.ImGuiWindow, ptr %2427, i32 0, i32 62
  %2429 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2428, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2429, ptr align 8 %2426, i64 8, i1 false), !tbaa.struct !128
  %2430 = load ptr, ptr %10, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiWindow, ptr %2430, i32 0, i32 62
  %2432 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2431, i32 0, i32 2
  %2433 = load ptr, ptr %10, align 8, !tbaa !5
  %2434 = getelementptr inbounds %struct.ImGuiWindow, ptr %2433, i32 0, i32 62
  %2435 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2434, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2435, ptr align 8 %2432, i64 8, i1 false), !tbaa.struct !128
  %2436 = load ptr, ptr %10, align 8, !tbaa !5
  %2437 = getelementptr inbounds %struct.ImGuiWindow, ptr %2436, i32 0, i32 62
  %2438 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2437, i32 0, i32 2
  %2439 = load ptr, ptr %10, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiWindow, ptr %2439, i32 0, i32 62
  %2441 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2440, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2441, ptr align 8 %2438, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %93, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %2442 = load ptr, ptr %10, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.ImGuiWindow, ptr %2442, i32 0, i32 62
  %2444 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2443, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2444, ptr align 4 %93, i64 8, i1 false), !tbaa.struct !128
  %2445 = load ptr, ptr %10, align 8, !tbaa !5
  %2446 = getelementptr inbounds %struct.ImGuiWindow, ptr %2445, i32 0, i32 62
  %2447 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2446, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2447, ptr align 4 %2444, i64 8, i1 false), !tbaa.struct !128
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  %2448 = load ptr, ptr %10, align 8, !tbaa !5
  %2449 = getelementptr inbounds %struct.ImGuiWindow, ptr %2448, i32 0, i32 62
  %2450 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2449, i32 0, i32 8
  store float 0.000000e+00, ptr %2450, align 4, !tbaa !250
  %2451 = load ptr, ptr %10, align 8, !tbaa !5
  %2452 = getelementptr inbounds %struct.ImGuiWindow, ptr %2451, i32 0, i32 62
  %2453 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2452, i32 0, i32 7
  store float 0.000000e+00, ptr %2453, align 8, !tbaa !251
  %2454 = load ptr, ptr %10, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.ImGuiWindow, ptr %2454, i32 0, i32 62
  %2456 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2455, i32 0, i32 10
  store i8 0, ptr %2456, align 1, !tbaa !252
  %2457 = load ptr, ptr %10, align 8, !tbaa !5
  %2458 = getelementptr inbounds %struct.ImGuiWindow, ptr %2457, i32 0, i32 62
  %2459 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2458, i32 0, i32 9
  store i8 0, ptr %2459, align 8, !tbaa !253
  %2460 = load ptr, ptr %10, align 8, !tbaa !5
  %2461 = getelementptr inbounds %struct.ImGuiWindow, ptr %2460, i32 0, i32 62
  %2462 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2461, i32 0, i32 15
  store i32 0, ptr %2462, align 8, !tbaa !124
  %2463 = load ptr, ptr %10, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiWindow, ptr %2463, i32 0, i32 62
  %2465 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2464, i32 0, i32 17
  %2466 = load i16, ptr %2465, align 2, !tbaa !254
  %2467 = load ptr, ptr %10, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.ImGuiWindow, ptr %2467, i32 0, i32 62
  %2469 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2468, i32 0, i32 16
  store i16 %2466, ptr %2469, align 4, !tbaa !255
  %2470 = load ptr, ptr %10, align 8, !tbaa !5
  %2471 = getelementptr inbounds %struct.ImGuiWindow, ptr %2470, i32 0, i32 62
  %2472 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2471, i32 0, i32 17
  store i16 0, ptr %2472, align 2, !tbaa !254
  %2473 = load ptr, ptr %10, align 8, !tbaa !5
  %2474 = getelementptr inbounds %struct.ImGuiWindow, ptr %2473, i32 0, i32 62
  %2475 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2474, i32 0, i32 18
  store i8 0, ptr %2475, align 8, !tbaa !256
  %2476 = load ptr, ptr %10, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 24
  %2478 = getelementptr inbounds %struct.ImVec2, ptr %2477, i32 0, i32 1
  %2479 = load float, ptr %2478, align 4, !tbaa !216
  %2480 = fcmp ogt float %2479, 0.000000e+00
  %2481 = load ptr, ptr %10, align 8, !tbaa !5
  %2482 = getelementptr inbounds %struct.ImGuiWindow, ptr %2481, i32 0, i32 62
  %2483 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2482, i32 0, i32 19
  %2484 = zext i1 %2480 to i8
  store i8 %2484, ptr %2483, align 1, !tbaa !257
  %2485 = load ptr, ptr %10, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.ImGuiWindow, ptr %2485, i32 0, i32 62
  %2487 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2486, i32 0, i32 20
  store i8 0, ptr %2487, align 2, !tbaa !258
  %2488 = load ptr, ptr %10, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiWindow, ptr %2488, i32 0, i32 62
  %2490 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2489, i32 0, i32 22
  %2491 = load ptr, ptr %9, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiStyle, ptr %2491, i32 0, i32 15
  %2493 = getelementptr inbounds %struct.ImVec2, ptr %2492, i32 0, i32 0
  %2494 = load float, ptr %2493, align 4, !tbaa !164
  %2495 = load i8, ptr %14, align 1, !tbaa !81, !range !77, !noundef !78
  %2496 = trunc i8 %2495 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %2490, float noundef %2494, i1 noundef zeroext %2496)
  %2497 = load ptr, ptr %10, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiWindow, ptr %2497, i32 0, i32 62
  %2499 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2498, i32 0, i32 23
  store i32 0, ptr %2499, align 8, !tbaa !259
  %2500 = load ptr, ptr %10, align 8, !tbaa !5
  %2501 = getelementptr inbounds %struct.ImGuiWindow, ptr %2500, i32 0, i32 62
  %2502 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2501, i32 0, i32 24
  store i32 0, ptr %2502, align 4, !tbaa !260
  %2503 = load ptr, ptr %10, align 8, !tbaa !5
  %2504 = getelementptr inbounds %struct.ImGuiWindow, ptr %2503, i32 0, i32 62
  %2505 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2504, i32 0, i32 25
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2505, i32 noundef 0)
  %2506 = load ptr, ptr %10, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.ImGuiWindow, ptr %2506, i32 0, i32 76
  %2508 = load ptr, ptr %10, align 8, !tbaa !5
  %2509 = getelementptr inbounds %struct.ImGuiWindow, ptr %2508, i32 0, i32 62
  %2510 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2509, i32 0, i32 26
  store ptr %2507, ptr %2510, align 8, !tbaa !261
  %2511 = load ptr, ptr %10, align 8, !tbaa !5
  %2512 = getelementptr inbounds %struct.ImGuiWindow, ptr %2511, i32 0, i32 62
  %2513 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2512, i32 0, i32 27
  store ptr null, ptr %2513, align 8, !tbaa !262
  %2514 = load ptr, ptr %10, align 8, !tbaa !5
  %2515 = getelementptr inbounds %struct.ImGuiWindow, ptr %2514, i32 0, i32 62
  %2516 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2515, i32 0, i32 29
  store i32 1, ptr %2516, align 4, !tbaa !263
  %2517 = load ptr, ptr %17, align 8, !tbaa !5
  %2518 = icmp ne ptr %2517, null
  br i1 %2518, label %2519, label %2524

2519:                                             ; preds = %2307
  %2520 = load ptr, ptr %17, align 8, !tbaa !5
  %2521 = getelementptr inbounds %struct.ImGuiWindow, ptr %2520, i32 0, i32 62
  %2522 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2521, i32 0, i32 29
  %2523 = load i32, ptr %2522, align 4, !tbaa !263
  br label %2525

2524:                                             ; preds = %2307
  br label %2525

2525:                                             ; preds = %2524, %2519
  %2526 = phi i32 [ %2523, %2519 ], [ 1, %2524 ]
  %2527 = load ptr, ptr %10, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.ImGuiWindow, ptr %2527, i32 0, i32 62
  %2529 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2528, i32 0, i32 30
  store i32 %2526, ptr %2529, align 8, !tbaa !264
  %2530 = load ptr, ptr %10, align 8, !tbaa !5
  %2531 = getelementptr inbounds %struct.ImGuiWindow, ptr %2530, i32 0, i32 74
  %2532 = load float, ptr %2531, align 8, !tbaa !211
  %2533 = load ptr, ptr %10, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiWindow, ptr %2533, i32 0, i32 62
  %2535 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2534, i32 0, i32 31
  store float %2532, ptr %2535, align 4, !tbaa !265
  %2536 = load ptr, ptr %10, align 8, !tbaa !5
  %2537 = getelementptr inbounds %struct.ImGuiWindow, ptr %2536, i32 0, i32 62
  %2538 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2537, i32 0, i32 32
  store float -1.000000e+00, ptr %2538, align 8, !tbaa !266
  %2539 = load ptr, ptr %10, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiWindow, ptr %2539, i32 0, i32 62
  %2541 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2540, i32 0, i32 33
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2541, i32 noundef 0)
  %2542 = load ptr, ptr %10, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.ImGuiWindow, ptr %2542, i32 0, i32 62
  %2544 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2543, i32 0, i32 34
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2544, i32 noundef 0)
  %2545 = load ptr, ptr %10, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.ImGuiWindow, ptr %2545, i32 0, i32 49
  %2547 = load i8, ptr %2546, align 8, !tbaa !181
  %2548 = sext i8 %2547 to i32
  %2549 = icmp sgt i32 %2548, 0
  br i1 %2549, label %2550, label %2555

2550:                                             ; preds = %2525
  %2551 = load ptr, ptr %10, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiWindow, ptr %2551, i32 0, i32 49
  %2553 = load i8, ptr %2552, align 8, !tbaa !181
  %2554 = add i8 %2553, -1
  store i8 %2554, ptr %2552, align 8, !tbaa !181
  br label %2555

2555:                                             ; preds = %2550, %2525
  %2556 = load ptr, ptr %10, align 8, !tbaa !5
  %2557 = getelementptr inbounds %struct.ImGuiWindow, ptr %2556, i32 0, i32 50
  %2558 = load i8, ptr %2557, align 1, !tbaa !182
  %2559 = sext i8 %2558 to i32
  %2560 = icmp sgt i32 %2559, 0
  br i1 %2560, label %2561, label %2566

2561:                                             ; preds = %2555
  %2562 = load ptr, ptr %10, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiWindow, ptr %2562, i32 0, i32 50
  %2564 = load i8, ptr %2563, align 1, !tbaa !182
  %2565 = add i8 %2564, -1
  store i8 %2565, ptr %2563, align 1, !tbaa !182
  br label %2566

2566:                                             ; preds = %2561, %2555
  %2567 = load i8, ptr %55, align 1, !tbaa !81, !range !77, !noundef !78
  %2568 = trunc i8 %2567 to i1
  br i1 %2568, label %2569, label %2572

2569:                                             ; preds = %2566
  %2570 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %2570)
  %2571 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %2571, i1 noundef zeroext false)
  br label %2572

2572:                                             ; preds = %2569, %2566
  %2573 = load i32, ptr %7, align 4, !tbaa !9
  %2574 = and i32 %2573, 1
  %2575 = icmp ne i32 %2574, 0
  br i1 %2575, label %2600, label %2576

2576:                                             ; preds = %2572
  %2577 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #13
  %2578 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2579 = getelementptr inbounds %struct.ImVec2, ptr %2578, i32 0, i32 0
  %2580 = load float, ptr %2579, align 4, !tbaa !267
  %2581 = load ptr, ptr %10, align 8, !tbaa !5
  %2582 = getelementptr inbounds %struct.ImGuiWindow, ptr %2581, i32 0, i32 13
  %2583 = load float, ptr %2582, align 4, !tbaa !159
  %2584 = fadd float %2580, %2583
  %2585 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2586 = getelementptr inbounds %struct.ImVec2, ptr %2585, i32 0, i32 1
  %2587 = load float, ptr %2586, align 4, !tbaa !268
  %2588 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2589 = getelementptr inbounds %struct.ImVec2, ptr %2588, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !269
  %2591 = load ptr, ptr %10, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiWindow, ptr %2591, i32 0, i32 13
  %2593 = load float, ptr %2592, align 4, !tbaa !159
  %2594 = fsub float %2590, %2593
  %2595 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2596 = getelementptr inbounds %struct.ImVec2, ptr %2595, i32 0, i32 1
  %2597 = load float, ptr %2596, align 4, !tbaa !270
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %94, float noundef %2584, float noundef %2587, float noundef %2594, float noundef %2597)
  %2598 = load ptr, ptr %5, align 8, !tbaa !5
  %2599 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %2577, ptr noundef nonnull align 4 dereferenceable(16) %94, ptr noundef %2598, ptr noundef %2599)
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #13
  br label %2600

2600:                                             ; preds = %2576, %2572
  %2601 = load ptr, ptr %10, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiWindow, ptr %2601, i32 0, i32 70
  %2603 = getelementptr inbounds %struct.ImVec2ih, ptr %2602, i32 0, i32 1
  store i16 0, ptr %2603, align 2, !tbaa !271
  %2604 = load ptr, ptr %10, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiWindow, ptr %2604, i32 0, i32 70
  %2606 = getelementptr inbounds %struct.ImVec2ih, ptr %2605, i32 0, i32 0
  store i16 0, ptr %2606, align 8, !tbaa !272
  %2607 = load ptr, ptr %10, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.ImGuiWindow, ptr %2607, i32 0, i32 21
  %2609 = load i32, ptr %2608, align 4, !tbaa !273
  %2610 = load ptr, ptr %8, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiContext, ptr %2610, i32 0, i32 69
  %2612 = load i32, ptr %2611, align 8, !tbaa !274
  %2613 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2614 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2615 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2613, ptr noundef nonnull align 4 dereferenceable(8) %2614, i1 noundef zeroext false)
  %2616 = zext i1 %2615 to i64
  %2617 = select i1 %2615, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %2609, i32 noundef %2612, i32 noundef %2617, ptr noundef nonnull align 4 dereferenceable(16) %72)
  %2618 = load ptr, ptr %8, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.ImGuiContext, ptr %2618, i32 0, i32 70
  %2620 = load i32, ptr %2619, align 4, !tbaa !275
  %2621 = icmp ne i32 %2620, 0
  br i1 %2621, label %2622, label %2639

2622:                                             ; preds = %2600
  %2623 = load ptr, ptr %10, align 8, !tbaa !5
  %2624 = getelementptr inbounds %struct.ImGuiWindow, ptr %2623, i32 0, i32 2
  %2625 = load i32, ptr %2624, align 8, !tbaa !121
  %2626 = load ptr, ptr %8, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.ImGuiContext, ptr %2626, i32 0, i32 70
  %2628 = load i32, ptr %2627, align 4, !tbaa !275
  %2629 = icmp eq i32 %2625, %2628
  br i1 %2629, label %2638, label %2630

2630:                                             ; preds = %2622
  %2631 = load ptr, ptr %10, align 8, !tbaa !5
  %2632 = getelementptr inbounds %struct.ImGuiWindow, ptr %2631, i32 0, i32 21
  %2633 = load i32, ptr %2632, align 4, !tbaa !273
  %2634 = load ptr, ptr %8, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiContext, ptr %2634, i32 0, i32 70
  %2636 = load i32, ptr %2635, align 4, !tbaa !275
  %2637 = icmp eq i32 %2633, %2636
  br i1 %2637, label %2638, label %2639

2638:                                             ; preds = %2630, %2622
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %2639

2639:                                             ; preds = %2638, %2630, %2600
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #13
  br label %2642

2640:                                             ; preds = %621
  %2641 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %2641)
  br label %2642

2642:                                             ; preds = %2640, %2639
  %2643 = load ptr, ptr %10, align 8, !tbaa !5
  %2644 = getelementptr inbounds %struct.ImGuiWindow, ptr %2643, i32 0, i32 65
  %2645 = getelementptr inbounds %struct.ImRect, ptr %2644, i32 0, i32 0
  %2646 = load ptr, ptr %10, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiWindow, ptr %2646, i32 0, i32 65
  %2648 = getelementptr inbounds %struct.ImRect, ptr %2647, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2645, ptr noundef nonnull align 4 dereferenceable(8) %2648, i1 noundef zeroext true)
  %2649 = load ptr, ptr %10, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiWindow, ptr %2649, i32 0, i32 33
  store i8 0, ptr %2650, align 8, !tbaa !276
  %2651 = load ptr, ptr %10, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.ImGuiWindow, ptr %2651, i32 0, i32 43
  %2653 = load i16, ptr %2652, align 2, !tbaa !277
  %2654 = add i16 %2653, 1
  store i16 %2654, ptr %2652, align 2, !tbaa !277
  %2655 = load ptr, ptr %8, align 8, !tbaa !5
  %2656 = getelementptr inbounds %struct.ImGuiContext, ptr %2655, i32 0, i32 73
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %2656)
  %2657 = load i8, ptr %13, align 1, !tbaa !81, !range !77, !noundef !78
  %2658 = trunc i8 %2657 to i1
  br i1 %2658, label %2659, label %2875

2659:                                             ; preds = %2642
  %2660 = load i32, ptr %7, align 4, !tbaa !9
  %2661 = and i32 %2660, 16777216
  %2662 = icmp ne i32 %2661, 0
  br i1 %2662, label %2663, label %2786

2663:                                             ; preds = %2659
  %2664 = load i32, ptr %7, align 4, !tbaa !9
  %2665 = and i32 %2664, 1
  %2666 = icmp ne i32 %2665, 0
  br i1 %2666, label %2667, label %2668

2667:                                             ; preds = %2663
  br label %2670

2668:                                             ; preds = %2663
  call void @__assert_fail(ptr noundef @.str.134, ptr noundef @.str.3, i32 noundef 6713, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

2669:                                             ; No predecessors!
  br label %2670

2670:                                             ; preds = %2669, %2667
  %2671 = load i32, ptr %7, align 4, !tbaa !9
  %2672 = and i32 %2671, 64
  %2673 = icmp ne i32 %2672, 0
  br i1 %2673, label %2751, label %2674

2674:                                             ; preds = %2670
  %2675 = load ptr, ptr %10, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiWindow, ptr %2675, i32 0, i32 49
  %2677 = load i8, ptr %2676, align 8, !tbaa !181
  %2678 = sext i8 %2677 to i32
  %2679 = icmp sle i32 %2678, 0
  br i1 %2679, label %2680, label %2751

2680:                                             ; preds = %2674
  %2681 = load ptr, ptr %10, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.ImGuiWindow, ptr %2681, i32 0, i32 50
  %2683 = load i8, ptr %2682, align 1, !tbaa !182
  %2684 = sext i8 %2683 to i32
  %2685 = icmp sle i32 %2684, 0
  br i1 %2685, label %2686, label %2751

2686:                                             ; preds = %2680
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #13
  %2687 = load i32, ptr %7, align 4, !tbaa !9
  %2688 = and i32 %2687, 8388608
  %2689 = icmp ne i32 %2688, 0
  br i1 %2689, label %2690, label %2712

2690:                                             ; preds = %2686
  %2691 = load ptr, ptr %8, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiContext, ptr %2691, i32 0, i32 102
  %2693 = load i8, ptr %2692, align 8, !tbaa !278, !range !77, !noundef !78
  %2694 = trunc i8 %2693 to i1
  br i1 %2694, label %2695, label %2710

2695:                                             ; preds = %2690
  %2696 = load ptr, ptr %8, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.ImGuiContext, ptr %2696, i32 0, i32 84
  %2698 = load ptr, ptr %2697, align 8, !tbaa !230
  %2699 = icmp ne ptr %2698, null
  br i1 %2699, label %2700, label %2710

2700:                                             ; preds = %2695
  %2701 = load ptr, ptr %8, align 8, !tbaa !5
  %2702 = getelementptr inbounds %struct.ImGuiContext, ptr %2701, i32 0, i32 84
  %2703 = load ptr, ptr %2702, align 8, !tbaa !230
  %2704 = getelementptr inbounds %struct.ImGuiWindow, ptr %2703, i32 0, i32 87
  %2705 = load ptr, ptr %2704, align 8, !tbaa !279
  %2706 = load ptr, ptr %10, align 8, !tbaa !5
  %2707 = getelementptr inbounds %struct.ImGuiWindow, ptr %2706, i32 0, i32 87
  %2708 = load ptr, ptr %2707, align 8, !tbaa !279
  %2709 = icmp eq ptr %2705, %2708
  br label %2710

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

2712:                                             ; preds = %2710, %2686
  %2713 = phi i1 [ false, %2686 ], [ %2711, %2710 ]
  %2714 = zext i1 %2713 to i8
  store i8 %2714, ptr %95, align 1, !tbaa !81
  %2715 = load ptr, ptr %8, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiContext, ptr %2715, i32 0, i32 207
  %2717 = load i8, ptr %2716, align 8, !tbaa !280, !range !77, !noundef !78
  %2718 = trunc i8 %2717 to i1
  br i1 %2718, label %2750, label %2719

2719:                                             ; preds = %2712
  %2720 = load i8, ptr %95, align 1, !tbaa !81, !range !77, !noundef !78
  %2721 = trunc i8 %2720 to i1
  br i1 %2721, label %2750, label %2722

2722:                                             ; preds = %2719
  %2723 = load ptr, ptr %10, align 8, !tbaa !5
  %2724 = getelementptr inbounds %struct.ImGuiWindow, ptr %2723, i32 0, i32 63
  %2725 = getelementptr inbounds %struct.ImRect, ptr %2724, i32 0, i32 0
  %2726 = getelementptr inbounds %struct.ImVec2, ptr %2725, i32 0, i32 0
  %2727 = load float, ptr %2726, align 8, !tbaa !281
  %2728 = load ptr, ptr %10, align 8, !tbaa !5
  %2729 = getelementptr inbounds %struct.ImGuiWindow, ptr %2728, i32 0, i32 63
  %2730 = getelementptr inbounds %struct.ImRect, ptr %2729, i32 0, i32 1
  %2731 = getelementptr inbounds %struct.ImVec2, ptr %2730, i32 0, i32 0
  %2732 = load float, ptr %2731, align 8, !tbaa !282
  %2733 = fcmp oge float %2727, %2732
  br i1 %2733, label %2746, label %2734

2734:                                             ; preds = %2722
  %2735 = load ptr, ptr %10, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiWindow, ptr %2735, i32 0, i32 63
  %2737 = getelementptr inbounds %struct.ImRect, ptr %2736, i32 0, i32 0
  %2738 = getelementptr inbounds %struct.ImVec2, ptr %2737, i32 0, i32 1
  %2739 = load float, ptr %2738, align 4, !tbaa !283
  %2740 = load ptr, ptr %10, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.ImGuiWindow, ptr %2740, i32 0, i32 63
  %2742 = getelementptr inbounds %struct.ImRect, ptr %2741, i32 0, i32 1
  %2743 = getelementptr inbounds %struct.ImVec2, ptr %2742, i32 0, i32 1
  %2744 = load float, ptr %2743, align 4, !tbaa !284
  %2745 = fcmp oge float %2739, %2744
  br i1 %2745, label %2746, label %2749

2746:                                             ; preds = %2734, %2722
  %2747 = load ptr, ptr %10, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.ImGuiWindow, ptr %2747, i32 0, i32 54
  store i8 1, ptr %2748, align 8, !tbaa !152
  br label %2749

2749:                                             ; preds = %2746, %2734
  br label %2750

2750:                                             ; preds = %2749, %2719, %2712
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  br label %2751

2751:                                             ; preds = %2750, %2680, %2674, %2670
  %2752 = load ptr, ptr %17, align 8, !tbaa !5
  %2753 = icmp ne ptr %2752, null
  br i1 %2753, label %2754, label %2768

2754:                                             ; preds = %2751
  %2755 = load ptr, ptr %17, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.ImGuiWindow, ptr %2755, i32 0, i32 34
  %2757 = load i8, ptr %2756, align 1, !tbaa !174, !range !77, !noundef !78
  %2758 = trunc i8 %2757 to i1
  br i1 %2758, label %2765, label %2759

2759:                                             ; preds = %2754
  %2760 = load ptr, ptr %17, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.ImGuiWindow, ptr %2760, i32 0, i32 54
  %2762 = load i8, ptr %2761, align 8, !tbaa !152
  %2763 = sext i8 %2762 to i32
  %2764 = icmp sgt i32 %2763, 0
  br i1 %2764, label %2765, label %2768

2765:                                             ; preds = %2759, %2754
  %2766 = load ptr, ptr %10, align 8, !tbaa !5
  %2767 = getelementptr inbounds %struct.ImGuiWindow, ptr %2766, i32 0, i32 54
  store i8 1, ptr %2767, align 8, !tbaa !152
  br label %2768

2768:                                             ; preds = %2765, %2759, %2751
  %2769 = load ptr, ptr %17, align 8, !tbaa !5
  %2770 = icmp ne ptr %2769, null
  br i1 %2770, label %2771, label %2785

2771:                                             ; preds = %2768
  %2772 = load ptr, ptr %17, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.ImGuiWindow, ptr %2772, i32 0, i32 34
  %2774 = load i8, ptr %2773, align 1, !tbaa !174, !range !77, !noundef !78
  %2775 = trunc i8 %2774 to i1
  br i1 %2775, label %2782, label %2776

2776:                                             ; preds = %2771
  %2777 = load ptr, ptr %17, align 8, !tbaa !5
  %2778 = getelementptr inbounds %struct.ImGuiWindow, ptr %2777, i32 0, i32 55
  %2779 = load i8, ptr %2778, align 1, !tbaa !140
  %2780 = sext i8 %2779 to i32
  %2781 = icmp sgt i32 %2780, 0
  br i1 %2781, label %2782, label %2785

2782:                                             ; preds = %2776, %2771
  %2783 = load ptr, ptr %10, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.ImGuiWindow, ptr %2783, i32 0, i32 55
  store i8 1, ptr %2784, align 1, !tbaa !140
  br label %2785

2785:                                             ; preds = %2782, %2776, %2768
  br label %2786

2786:                                             ; preds = %2785, %2659
  %2787 = load ptr, ptr %9, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiStyle, ptr %2787, i32 0, i32 0
  %2789 = load float, ptr %2788, align 4, !tbaa !285
  %2790 = fcmp ole float %2789, 0.000000e+00
  br i1 %2790, label %2791, label %2794

2791:                                             ; preds = %2786
  %2792 = load ptr, ptr %10, align 8, !tbaa !5
  %2793 = getelementptr inbounds %struct.ImGuiWindow, ptr %2792, i32 0, i32 54
  store i8 1, ptr %2793, align 8, !tbaa !152
  br label %2794

2794:                                             ; preds = %2791, %2786
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #13
  %2795 = load ptr, ptr %10, align 8, !tbaa !5
  %2796 = getelementptr inbounds %struct.ImGuiWindow, ptr %2795, i32 0, i32 54
  %2797 = load i8, ptr %2796, align 8, !tbaa !152
  %2798 = sext i8 %2797 to i32
  %2799 = icmp sgt i32 %2798, 0
  br i1 %2799, label %2806, label %2800

2800:                                             ; preds = %2794
  %2801 = load ptr, ptr %10, align 8, !tbaa !5
  %2802 = getelementptr inbounds %struct.ImGuiWindow, ptr %2801, i32 0, i32 55
  %2803 = load i8, ptr %2802, align 1, !tbaa !140
  %2804 = sext i8 %2803 to i32
  %2805 = icmp sgt i32 %2804, 0
  br label %2806

2806:                                             ; preds = %2800, %2794
  %2807 = phi i1 [ true, %2794 ], [ %2805, %2800 ]
  %2808 = zext i1 %2807 to i8
  store i8 %2808, ptr %96, align 1, !tbaa !81
  %2809 = load i8, ptr %96, align 1, !tbaa !81, !range !77, !noundef !78
  %2810 = trunc i8 %2809 to i1
  br i1 %2810, label %2817, label %2811

2811:                                             ; preds = %2806
  %2812 = load ptr, ptr %10, align 8, !tbaa !5
  %2813 = getelementptr inbounds %struct.ImGuiWindow, ptr %2812, i32 0, i32 56
  %2814 = load i8, ptr %2813, align 2, !tbaa !153
  %2815 = sext i8 %2814 to i32
  %2816 = icmp sgt i32 %2815, 0
  br label %2817

2817:                                             ; preds = %2811, %2806
  %2818 = phi i1 [ true, %2806 ], [ %2816, %2811 ]
  %2819 = load ptr, ptr %10, align 8, !tbaa !5
  %2820 = getelementptr inbounds %struct.ImGuiWindow, ptr %2819, i32 0, i32 38
  %2821 = zext i1 %2818 to i8
  store i8 %2821, ptr %2820, align 1, !tbaa !286
  %2822 = load ptr, ptr %10, align 8, !tbaa !5
  %2823 = getelementptr inbounds %struct.ImGuiWindow, ptr %2822, i32 0, i32 57
  %2824 = load i8, ptr %2823, align 1, !tbaa !287
  %2825 = sext i8 %2824 to i32
  %2826 = icmp sgt i32 %2825, 0
  br i1 %2826, label %2827, label %2836

2827:                                             ; preds = %2817
  %2828 = load ptr, ptr %10, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.ImGuiWindow, ptr %2828, i32 0, i32 57
  %2830 = load i8, ptr %2829, align 1, !tbaa !287
  %2831 = add i8 %2830, -1
  store i8 %2831, ptr %2829, align 1, !tbaa !287
  %2832 = load ptr, ptr %10, align 8, !tbaa !5
  %2833 = getelementptr inbounds %struct.ImGuiWindow, ptr %2832, i32 0, i32 3
  %2834 = load i32, ptr %2833, align 4, !tbaa !105
  %2835 = or i32 %2834, 786944
  store i32 %2835, ptr %2833, align 4, !tbaa !105
  br label %2836

2836:                                             ; preds = %2827, %2817
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #13
  store i8 0, ptr %97, align 1, !tbaa !81
  %2837 = load ptr, ptr %10, align 8, !tbaa !5
  %2838 = getelementptr inbounds %struct.ImGuiWindow, ptr %2837, i32 0, i32 34
  %2839 = load i8, ptr %2838, align 1, !tbaa !174, !range !77, !noundef !78
  %2840 = trunc i8 %2839 to i1
  br i1 %2840, label %2849, label %2841

2841:                                             ; preds = %2836
  %2842 = load ptr, ptr %10, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.ImGuiWindow, ptr %2842, i32 0, i32 31
  %2844 = load i8, ptr %2843, align 2, !tbaa !141, !range !77, !noundef !78
  %2845 = trunc i8 %2844 to i1
  br i1 %2845, label %2846, label %2849

2846:                                             ; preds = %2841
  %2847 = load i8, ptr %96, align 1, !tbaa !81, !range !77, !noundef !78
  %2848 = trunc i8 %2847 to i1
  br i1 %2848, label %2849, label %2869

2849:                                             ; preds = %2846, %2841, %2836
  %2850 = load ptr, ptr %10, align 8, !tbaa !5
  %2851 = getelementptr inbounds %struct.ImGuiWindow, ptr %2850, i32 0, i32 49
  %2852 = load i8, ptr %2851, align 8, !tbaa !181
  %2853 = sext i8 %2852 to i32
  %2854 = icmp sle i32 %2853, 0
  br i1 %2854, label %2855, label %2868

2855:                                             ; preds = %2849
  %2856 = load ptr, ptr %10, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.ImGuiWindow, ptr %2856, i32 0, i32 50
  %2858 = load i8, ptr %2857, align 1, !tbaa !182
  %2859 = sext i8 %2858 to i32
  %2860 = icmp sle i32 %2859, 0
  br i1 %2860, label %2861, label %2868

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

2867:                                             ; preds = %2861
  store i8 1, ptr %97, align 1, !tbaa !81
  br label %2868

2868:                                             ; preds = %2867, %2861, %2855, %2849
  br label %2869

2869:                                             ; preds = %2868, %2846
  %2870 = load i8, ptr %97, align 1, !tbaa !81, !range !77, !noundef !78
  %2871 = trunc i8 %2870 to i1
  %2872 = load ptr, ptr %10, align 8, !tbaa !5
  %2873 = getelementptr inbounds %struct.ImGuiWindow, ptr %2872, i32 0, i32 36
  %2874 = zext i1 %2871 to i8
  store i8 %2874, ptr %2873, align 1, !tbaa !288
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  br label %2875

2875:                                             ; preds = %2869, %2642
  %2876 = load ptr, ptr %10, align 8, !tbaa !5
  %2877 = getelementptr inbounds %struct.ImGuiWindow, ptr %2876, i32 0, i32 39
  %2878 = load i8, ptr %2877, align 2, !tbaa !98, !range !77, !noundef !78
  %2879 = trunc i8 %2878 to i1
  br i1 %2879, label %2928, label %2880

2880:                                             ; preds = %2875
  %2881 = load ptr, ptr %8, align 8, !tbaa !5
  %2882 = getelementptr inbounds %struct.ImGuiContext, ptr %2881, i32 0, i32 2
  %2883 = getelementptr inbounds %struct.ImGuiIO, ptr %2882, i32 0, i32 29
  %2884 = load i8, ptr %2883, align 4, !tbaa !289, !range !77, !noundef !78
  %2885 = trunc i8 %2884 to i1
  br i1 %2885, label %2886, label %2889

2886:                                             ; preds = %2880
  %2887 = load i8, ptr %11, align 1, !tbaa !81, !range !77, !noundef !78
  %2888 = trunc i8 %2887 to i1
  br i1 %2888, label %2905, label %2889

2889:                                             ; preds = %2886, %2880
  %2890 = load ptr, ptr %8, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiContext, ptr %2890, i32 0, i32 2
  %2892 = getelementptr inbounds %struct.ImGuiIO, ptr %2891, i32 0, i32 30
  %2893 = load i8, ptr %2892, align 1, !tbaa !290, !range !77, !noundef !78
  %2894 = trunc i8 %2893 to i1
  br i1 %2894, label %2895, label %2928

2895:                                             ; preds = %2889
  %2896 = load ptr, ptr %8, align 8, !tbaa !5
  %2897 = getelementptr inbounds %struct.ImGuiContext, ptr %2896, i32 0, i32 223
  %2898 = load i8, ptr %2897, align 2, !tbaa !291
  %2899 = sext i8 %2898 to i32
  %2900 = load ptr, ptr %8, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiContext, ptr %2900, i32 0, i32 23
  %2902 = getelementptr inbounds %struct.ImVector.3, ptr %2901, i32 0, i32 0
  %2903 = load i32, ptr %2902, align 8, !tbaa !96
  %2904 = icmp eq i32 %2899, %2903
  br i1 %2904, label %2905, label %2928

2905:                                             ; preds = %2895, %2886
  %2906 = load ptr, ptr %10, align 8, !tbaa !5
  %2907 = getelementptr inbounds %struct.ImGuiWindow, ptr %2906, i32 0, i32 49
  %2908 = load i8, ptr %2907, align 8, !tbaa !181
  %2909 = sext i8 %2908 to i32
  %2910 = icmp sgt i32 %2909, 0
  br i1 %2910, label %2911, label %2916

2911:                                             ; preds = %2905
  %2912 = load ptr, ptr %10, align 8, !tbaa !5
  %2913 = getelementptr inbounds %struct.ImGuiWindow, ptr %2912, i32 0, i32 49
  %2914 = load i8, ptr %2913, align 8, !tbaa !181
  %2915 = add i8 %2914, 1
  store i8 %2915, ptr %2913, align 8, !tbaa !181
  br label %2916

2916:                                             ; preds = %2911, %2905
  %2917 = load ptr, ptr %10, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.ImGuiWindow, ptr %2917, i32 0, i32 50
  %2919 = load i8, ptr %2918, align 1, !tbaa !182
  %2920 = sext i8 %2919 to i32
  %2921 = icmp sgt i32 %2920, 0
  br i1 %2921, label %2922, label %2927

2922:                                             ; preds = %2916
  %2923 = load ptr, ptr %10, align 8, !tbaa !5
  %2924 = getelementptr inbounds %struct.ImGuiWindow, ptr %2923, i32 0, i32 50
  %2925 = load i8, ptr %2924, align 1, !tbaa !182
  %2926 = add i8 %2925, 1
  store i8 %2926, ptr %2924, align 1, !tbaa !182
  br label %2927

2927:                                             ; preds = %2922, %2916
  store i1 false, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %2934

2928:                                             ; preds = %2895, %2889, %2875
  %2929 = load ptr, ptr %10, align 8, !tbaa !5
  %2930 = getelementptr inbounds %struct.ImGuiWindow, ptr %2929, i32 0, i32 36
  %2931 = load i8, ptr %2930, align 1, !tbaa !288, !range !77, !noundef !78
  %2932 = trunc i8 %2931 to i1
  %2933 = xor i1 %2932, true
  store i1 %2933, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %2934

2934:                                             ; preds = %2928, %2927
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 88, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #13
  %2935 = load i1, ptr %4, align 1
  ret i1 %2935
}

; 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: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui15GetMainViewportEv() #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), 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(981)) #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !14, i64 15956}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !20, i64 14288, !20, i64 14304, !21, i64 14320, !6, i64 15392, !17, i64 15400, !17, i64 15404, !22, i64 15408, !25, i64 15936, !10, i64 15944, !10, i64 15948, !10, i64 15952, !14, i64 15956, !14, i64 15957, !14, i64 15958, !14, i64 15959, !14, i64 15960, !6, i64 15968, !26, i64 15976, !26, i64 15992, !26, i64 16008, !27, i64 16024, !28, i64 16040, !10, i64 16056, !16, i64 16060, !6, i64 16072, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !16, i64 16112, !10, i64 16120, !17, i64 16124, !16, i64 16128, !16, i64 16136, !10, i64 16144, !10, i64 16148, !10, i64 16152, !14, i64 16156, !14, i64 16157, !17, i64 16160, !17, i64 16164, !10, i64 16168, !10, i64 16172, !17, i64 16176, !14, i64 16180, !14, i64 16181, !14, i64 16182, !14, i64 16183, !14, i64 16184, !14, i64 16185, !16, i64 16188, !6, i64 16200, !30, i64 16208, !10, i64 16212, !10, i64 16216, !14, i64 16220, !14, i64 16221, !6, i64 16224, !10, i64 16232, !17, i64 16236, !7, i64 16240, !31, i64 17920, !10, i64 18232, !14, i64 18236, !10, i64 18240, !10, i64 18244, !10, i64 18248, !10, i64 18252, !33, i64 18256, !34, i64 18276, !36, i64 18336, !37, i64 18448, !38, i64 18464, !39, i64 18480, !40, i64 18496, !41, i64 18512, !42, i64 18528, !43, i64 18544, !43, i64 18560, !10, i64 18576, !44, i64 18584, !6, i64 18600, !10, i64 18608, !10, i64 18612, !10, i64 18616, !10, i64 18620, !10, i64 18624, !10, i64 18628, !10, i64 18632, !10, i64 18636, !10, i64 18640, !10, i64 18644, !10, i64 18648, !30, i64 18652, !45, i64 18656, !14, i64 18660, !14, i64 18661, !14, i64 18662, !14, i64 18663, !14, i64 18664, !14, i64 18665, !14, i64 18666, !10, i64 18668, !35, i64 18672, !14, i64 18688, !14, i64 18689, !14, i64 18690, !10, i64 18692, !10, i64 18696, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !35, i64 18716, !35, i64 18732, !10, i64 18748, !10, i64 18752, !10, i64 18756, !46, i64 18760, !46, i64 18808, !46, i64 18856, !46, i64 18904, !10, i64 18952, !10, i64 18956, !6, i64 18960, !6, i64 18968, !6, i64 18976, !17, i64 18984, !17, i64 18988, !14, i64 18992, !16, i64 18996, !16, i64 19004, !17, i64 19012, !10, i64 19016, !14, i64 19020, !14, i64 19021, !14, i64 19022, !10, i64 19024, !10, i64 19028, !10, i64 19032, !47, i64 19040, !35, i64 19104, !10, i64 19120, !10, i64 19124, !17, i64 19128, !10, i64 19132, !10, i64 19136, !10, i64 19140, !10, i64 19144, !48, i64 19152, !7, i64 19168, !10, i64 19184, !49, i64 19192, !6, i64 19208, !10, i64 19216, !50, i64 19224, !51, i64 19240, !53, i64 19280, !54, i64 19296, !6, i64 19312, !55, i64 19320, !57, i64 19360, !58, i64 19376, !10, i64 19392, !10, i64 19396, !17, i64 19400, !17, i64 19404, !16, i64 19408, !59, i64 19416, !63, i64 23144, !10, i64 23264, !10, i64 23268, !10, i64 23272, !10, i64 23276, !17, i64 23280, !17, i64 23284, !10, i64 23288, !23, i64 23292, !65, i64 23308, !17, i64 23356, !17, i64 23360, !14, i64 23364, !14, i64 23365, !17, i64 23368, !17, i64 23372, !17, i64 23376, !17, i64 23380, !18, i64 23384, !18, i64 23386, !60, i64 23392, !40, i64 23408, !66, i64 23424, !66, i64 23440, !7, i64 23456, !14, i64 23457, !17, i64 23460, !67, i64 23464, !68, i64 23480, !69, i64 23496, !70, i64 23512, !71, i64 23528, !10, i64 23544, !7, i64 23552, !14, i64 23608, !72, i64 23612, !6, i64 23616, !67, i64 23624, !6, i64 23640, !6, i64 23648, !17, i64 23656, !14, i64 23660, !10, i64 23664, !10, i64 23668, !10, i64 23672, !10, i64 23676, !67, i64 23680, !73, i64 23696, !7, i64 23720, !7, i64 23721, !7, i64 23722, !14, i64 23723, !7, i64 23724, !10, i64 23728, !74, i64 23732, !75, i64 23752, !7, i64 23792, !10, i64 24032, !10, i64 24036, !17, i64 24040, !10, i64 24044, !10, i64 24048, !10, i64 24052, !60, i64 24056}
!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, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !17, i64 60, !17, i64 64, !6, i64 72, !6, i64 80, !17, i64 88, !14, i64 92, !6, i64 96, !16, i64 104, !14, i64 112, !14, i64 113, !14, i64 114, !14, i64 115, !14, i64 116, !14, i64 117, !14, i64 118, !14, i64 119, !17, i64 120, !14, i64 124, !14, i64 125, !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, !14, i64 208, !14, i64 209, !14, i64 210, !14, i64 211, !14, i64 212, !14, i64 213, !14, i64 214, !17, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !16, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !16, i64 3584, !7, i64 3592, !17, i64 3600, !17, i64 3604, !14, i64 3608, !14, i64 3609, !14, i64 3610, !14, i64 3611, !10, i64 3612, !7, i64 3616, !14, i64 14048, !16, i64 14052, !7, i64 14060, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !7, i64 14192, !7, i64 14212, !7, i64 14232, !17, i64 14252, !14, i64 14256, !14, i64 14257, !7, i64 14258, !14, i64 14259, !18, i64 14260, !19, i64 14264}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS10ImGuiStyle", !17, i64 0, !17, i64 4, !16, i64 8, !17, i64 16, !17, i64 20, !16, i64 24, !16, i64 32, !10, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56, !16, i64 60, !17, i64 68, !17, i64 72, !16, i64 76, !16, i64 84, !16, i64 92, !16, i64 100, !17, i64 108, !17, i64 112, !17, i64 116, !17, i64 120, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !10, i64 148, !16, i64 152, !16, i64 160, !17, i64 168, !16, i64 172, !16, i64 180, !16, i64 188, !16, i64 196, !17, i64 204, !14, i64 208, !14, i64 209, !14, i64 210, !17, i64 212, !17, i64 216, !7, i64 220}
!22 = !{!"_ZTS20ImDrawListSharedData", !16, i64 0, !6, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !23, i64 28, !10, i64 44, !24, i64 48, !7, i64 64, !17, i64 448, !7, i64 452, !6, i64 520}
!23 = !{!"_ZTS6ImVec4", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12}
!24 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !32, i64 280, !32, i64 296}
!32 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!34 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !35, i64 12, !35, i64 28, !35, i64 44}
!35 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!36 = !{!"_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, !14, i64 56, !35, i64 60, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100}
!37 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!46 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !35, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44}
!47 = !{!"_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}
!48 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS6ImPoolI10ImGuiTableE", !52, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!52 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !56, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!56 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !19, i64 24, !60, i64 40, !60, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !61, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720}
!60 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_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, !62, i64 32}
!62 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !10, i64 3588, !10, i64 3592}
!63 = !{!"_ZTS6ImFont", !53, i64 0, !17, i64 16, !17, i64 20, !19, i64 24, !64, 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}
!64 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS21ImGuiComboPreviewData", !35, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!66 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!67 = !{!"_ZTS15ImGuiTextBuffer", !60, i64 0}
!68 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !60, i64 0}
!70 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !60, i64 0}
!71 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!73 = !{!"_ZTS14ImGuiTextIndex", !41, i64 0, !10, i64 16}
!74 = !{!"_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, !10, i64 8, !10, i64 12}
!75 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !76, i64 16, !14, i64 32, !17, i64 36}
!76 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{i8 0, i8 2}
!78 = !{}
!79 = !{!13, !10, i64 15948}
!80 = !{!13, !10, i64 15944}
!81 = !{!14, !14, i64 0}
!82 = !{!83, !10, i64 608}
!83 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !17, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !17, i64 112, !17, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !16, i64 132, !16, i64 140, !16, i64 148, !16, i64 156, !16, i64 164, !16, i64 172, !14, i64 180, !14, i64 181, !14, i64 182, !14, i64 183, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !7, i64 193, !18, i64 194, !18, i64 196, !18, i64 198, !18, i64 200, !18, i64 202, !10, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !14, i64 211, !10, i64 212, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !10, i64 220, !10, i64 221, !10, i64 222, !16, i64 224, !16, i64 232, !40, i64 240, !84, i64 256, !35, i64 488, !35, i64 504, !35, i64 520, !35, i64 536, !35, i64 552, !35, i64 568, !35, i64 584, !87, i64 600, !87, i64 604, !10, i64 608, !17, i64 612, !17, i64 616, !28, i64 624, !88, i64 640, !17, i64 656, !10, i64 660, !6, i64 664, !89, i64 672, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 936, !10, i64 968, !10, i64 972, !10, i64 976, !14, i64 980}
!84 = !{!"_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, !85, i64 68, !85, i64 72, !85, i64 76, !16, i64 80, !45, i64 88, !18, i64 92, !18, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !16, i64 100, !86, i64 108, !10, i64 136, !10, i64 140, !26, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !17, i64 188, !17, i64 192, !53, i64 200, !53, i64 216}
!85 = !{!"_ZTS6ImVec1", !17, i64 0}
!86 = !{!"_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}
!87 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!88 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS10ImDrawList", !90, i64 0, !19, i64 16, !91, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !92, i64 88, !93, i64 104, !24, i64 120, !94, i64 136, !95, i64 168, !17, i64 192}
!90 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!92 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!93 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!94 = !{!"_ZTS15ImDrawCmdHeader", !23, i64 0, !6, i64 16, !10, i64 24}
!95 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !54, i64 8}
!96 = !{!13, !10, i64 16024}
!97 = !{!13, !14, i64 15957}
!98 = !{!83, !14, i64 190}
!99 = !{!13, !10, i64 18560}
!100 = !{!83, !10, i64 204}
!101 = !{!102, !10, i64 0}
!102 = !{!"_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}
!103 = !{!102, !6, i64 8}
!104 = !{!83, !14, i64 188}
!105 = !{!83, !10, i64 20}
!106 = !{!13, !25, i64 15936}
!107 = !{!83, !17, i64 612}
!108 = !{!83, !18, i64 198}
!109 = !{!13, !10, i64 16056}
!110 = !{!83, !18, i64 200}
!111 = !{!112, !6, i64 0}
!112 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !34, i64 8, !113, i64 68}
!113 = !{!"_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}
!114 = !{!83, !6, i64 872}
!115 = !{!83, !10, i64 240}
!116 = !{!13, !6, i64 16072}
!117 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !118, i64 16, i64 4, !118, i64 20, i64 4, !118, i64 24, i64 4, !118, i64 28, i64 4, !118, i64 32, i64 4, !118, i64 36, i64 4, !118, i64 40, i64 4, !118, i64 44, i64 4, !118, i64 48, i64 4, !118, i64 52, i64 4, !118, i64 56, i64 4, !118}
!118 = !{!17, !17, i64 0}
!119 = !{!13, !10, i64 18576}
!120 = !{!83, !6, i64 880}
!121 = !{!83, !10, i64 16}
!122 = !{!13, !10, i64 18244}
!123 = !{!83, !10, i64 968}
!124 = !{!83, !45, i64 344}
!125 = !{!102, !10, i64 24}
!126 = !{!13, !10, i64 18336}
!127 = !{!13, !10, i64 18340}
!128 = !{i64 0, i64 4, !118, i64 4, i64 4, !118}
!129 = !{!13, !10, i64 18344}
!130 = !{!13, !17, i64 18368}
!131 = !{!13, !17, i64 18372}
!132 = !{!13, !17, i64 18384}
!133 = !{!83, !17, i64 148}
!134 = !{!83, !17, i64 156}
!135 = !{!13, !17, i64 18388}
!136 = !{!83, !17, i64 152}
!137 = !{!83, !17, i64 160}
!138 = !{!13, !14, i64 18392}
!139 = !{!13, !10, i64 18348}
!140 = !{!83, !7, i64 217}
!141 = !{!83, !14, i64 182}
!142 = !{!83, !14, i64 192}
!143 = !{i64 0, i64 4, !118, i64 4, i64 4, !118, i64 8, i64 4, !118, i64 12, i64 4, !118}
!144 = !{!83, !6, i64 664}
!145 = !{!83, !10, i64 432}
!146 = !{!83, !14, i64 980}
!147 = !{!13, !6, i64 18976}
!148 = !{!83, !6, i64 8}
!149 = !{!83, !10, i64 120}
!150 = !{!151, !151, i64 0}
!151 = !{!"long", !7, i64 0}
!152 = !{!83, !7, i64 216}
!153 = !{!83, !7, i64 218}
!154 = !{!83, !17, i64 48}
!155 = !{!83, !17, i64 40}
!156 = !{!83, !17, i64 52}
!157 = !{!83, !17, i64 44}
!158 = !{!21, !17, i64 48}
!159 = !{!83, !17, i64 92}
!160 = !{!21, !17, i64 56}
!161 = !{!21, !17, i64 20}
!162 = !{!21, !17, i64 12}
!163 = !{!83, !17, i64 80}
!164 = !{!21, !17, i64 76}
!165 = !{!13, !17, i64 18436}
!166 = !{!83, !17, i64 356}
!167 = !{!13, !17, i64 18440}
!168 = !{!83, !17, i64 360}
!169 = !{!13, !6, i64 16080}
!170 = !{!13, !10, i64 16148}
!171 = !{!13, !10, i64 16152}
!172 = !{!18, !18, i64 0}
!173 = !{!83, !14, i64 186}
!174 = !{!83, !14, i64 185}
!175 = !{!83, !17, i64 96}
!176 = !{!83, !17, i64 104}
!177 = !{!83, !17, i64 100}
!178 = !{!83, !17, i64 108}
!179 = !{!16, !17, i64 0}
!180 = !{!16, !17, i64 4}
!181 = !{!83, !7, i64 208}
!182 = !{!83, !7, i64 209}
!183 = !{!83, !14, i64 211}
!184 = !{!83, !10, i64 212}
!185 = !{!83, !10, i64 400}
!186 = !{!83, !17, i64 224}
!187 = !{!21, !17, i64 44}
!188 = !{!21, !17, i64 52}
!189 = !{!21, !17, i64 16}
!190 = !{!83, !17, i64 88}
!191 = !{!83, !6, i64 888}
!192 = !{!13, !14, i64 126}
!193 = !{!13, !17, i64 15400}
!194 = !{!83, !7, i64 193}
!195 = !{!83, !14, i64 181}
!196 = !{!21, !17, i64 116}
!197 = !{!83, !14, i64 180}
!198 = !{!83, !17, i64 172}
!199 = !{!83, !17, i64 176}
!200 = !{!83, !17, i64 32}
!201 = !{!83, !17, i64 504}
!202 = !{!83, !17, i64 36}
!203 = !{!83, !17, i64 508}
!204 = !{!83, !17, i64 512}
!205 = !{!83, !17, i64 516}
!206 = !{!21, !17, i64 72}
!207 = !{!83, !17, i64 520}
!208 = !{!83, !17, i64 524}
!209 = !{!83, !17, i64 528}
!210 = !{!83, !17, i64 532}
!211 = !{!83, !17, i64 616}
!212 = !{!83, !17, i64 56}
!213 = !{!83, !17, i64 140}
!214 = !{!83, !17, i64 60}
!215 = !{!83, !17, i64 84}
!216 = !{!83, !17, i64 144}
!217 = !{!83, !17, i64 116}
!218 = !{!83, !17, i64 112}
!219 = !{!89, !10, i64 0}
!220 = !{!221, !10, i64 32}
!221 = !{!"_ZTS9ImDrawCmd", !23, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!222 = !{!13, !6, i64 15392}
!223 = !{!63, !6, i64 64}
!224 = !{!225, !6, i64 8}
!225 = !{!"_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, !39, i64 88, !226, i64 104, !227, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!226 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!227 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!228 = !{!89, !10, i64 32}
!229 = !{!13, !6, i64 18960}
!230 = !{!13, !6, i64 18600}
!231 = !{!83, !6, i64 904}
!232 = !{!83, !17, i64 72}
!233 = !{!83, !17, i64 76}
!234 = !{!83, !17, i64 132}
!235 = !{!83, !17, i64 536}
!236 = !{!83, !17, i64 136}
!237 = !{!83, !17, i64 540}
!238 = !{!83, !17, i64 544}
!239 = !{!83, !17, i64 548}
!240 = !{!83, !17, i64 584}
!241 = !{!83, !17, i64 588}
!242 = !{!83, !17, i64 592}
!243 = !{!83, !17, i64 596}
!244 = !{!83, !17, i64 324}
!245 = !{!83, !17, i64 332}
!246 = !{!83, !17, i64 328}
!247 = !{!25, !25, i64 0}
!248 = !{!83, !17, i64 272}
!249 = !{!83, !17, i64 276}
!250 = !{!83, !17, i64 316}
!251 = !{!83, !17, i64 312}
!252 = !{!83, !14, i64 321}
!253 = !{!83, !14, i64 320}
!254 = !{!83, !18, i64 350}
!255 = !{!83, !18, i64 348}
!256 = !{!83, !14, i64 352}
!257 = !{!83, !14, i64 353}
!258 = !{!83, !14, i64 354}
!259 = !{!83, !10, i64 392}
!260 = !{!83, !10, i64 396}
!261 = !{!83, !6, i64 416}
!262 = !{!83, !6, i64 424}
!263 = !{!83, !10, i64 436}
!264 = !{!83, !10, i64 440}
!265 = !{!83, !17, i64 444}
!266 = !{!83, !17, i64 448}
!267 = !{!35, !17, i64 0}
!268 = !{!35, !17, i64 4}
!269 = !{!35, !17, i64 8}
!270 = !{!35, !17, i64 12}
!271 = !{!83, !18, i64 602}
!272 = !{!83, !18, i64 600}
!273 = !{!83, !10, i64 124}
!274 = !{!13, !10, i64 18248}
!275 = !{!13, !10, i64 18252}
!276 = !{!83, !14, i64 184}
!277 = !{!83, !18, i64 194}
!278 = !{!13, !14, i64 18664}
!279 = !{!83, !6, i64 912}
!280 = !{!13, !14, i64 23608}
!281 = !{!83, !17, i64 488}
!282 = !{!83, !17, i64 496}
!283 = !{!83, !17, i64 492}
!284 = !{!83, !17, i64 500}
!285 = !{!21, !17, i64 0}
!286 = !{!83, !14, i64 189}
!287 = !{!83, !7, i64 219}
!288 = !{!83, !14, i64 187}
!289 = !{!13, !14, i64 132}
!290 = !{!13, !14, i64 133}
!291 = !{!13, !7, i64 23722}


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

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

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.126 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.134 = 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> @_ZL7ImFloorRK6ImVec2(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 @_ZL7ImFloorf(float noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

; Function Attrs: 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(184)) local_unnamed_addr #8 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr 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(981)) local_unnamed_addr #8 align 2

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

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

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

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

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

; Function Attrs: 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
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 [4 x i32], align 16
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImVec2, align 8
  %32 = alloca %struct.ImRect, align 4
  %33 = alloca %struct.ImRect, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImRect, align 8
  %36 = alloca %struct.ImRect, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImVec2, align 8
  %40 = alloca %struct.ImRect, align 4
  %41 = load ptr, ptr @GImGui, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %41, i64 14320
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.critedge, label %43

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

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

45:                                               ; preds = %43
  %46 = getelementptr inbounds i8, ptr %41, i64 15956
  %47 = load i8, ptr %46, align 4, !tbaa !10, !range !76, !noundef !77
  %48 = trunc nuw i8 %47 to i1
  br i1 %48, label %50, label %49

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

50:                                               ; preds = %45
  %51 = getelementptr inbounds i8, ptr %41, i64 15948
  %52 = load i32, ptr %51, align 4, !tbaa !78
  %53 = getelementptr inbounds i8, ptr %41, i64 15944
  %54 = load i32, ptr %53, align 8, !tbaa !79
  %.not334 = icmp eq i32 %52, %54
  br i1 %.not334, label %55, label %56

55:                                               ; preds = %50
  tail call void @__assert_fail(ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.3, i32 noundef 6070, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

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

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

61:                                               ; preds = %59, %56
  %62 = phi ptr [ %60, %59 ], [ %57, %56 ]
  %63 = and i32 %2, 786944
  %64 = icmp eq i32 %63, 786944
  %65 = or i32 %2, 6
  %spec.select = select i1 %64, i32 %65, i32 %2
  %66 = and i32 %spec.select, 25165824
  %or.cond = icmp eq i32 %66, 8388608
  br i1 %or.cond, label %67, label %68

67:                                               ; preds = %61
  tail call void @__assert_fail(ptr noundef nonnull @.str.129, ptr noundef nonnull @.str.3, i32 noundef 6083, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

68:                                               ; preds = %61
  %69 = load i32, ptr %53, align 8, !tbaa !79
  %70 = getelementptr inbounds i8, ptr %62, i64 608
  %71 = load i32, ptr %70, align 8, !tbaa !80
  %.not337 = icmp eq i32 %71, %69
  %72 = getelementptr inbounds i8, ptr %41, i64 16024
  %73 = load i32, ptr %72, align 8, !tbaa !94
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %78

75:                                               ; preds = %68
  %76 = getelementptr inbounds i8, ptr %41, i64 15957
  %77 = load i8, ptr %76, align 1, !tbaa !95, !range !76, !noundef !77
  br label %78

78:                                               ; preds = %75, %68
  %79 = phi i8 [ 0, %68 ], [ %77, %75 ]
  %80 = getelementptr inbounds i8, ptr %62, i64 190
  store i8 %79, ptr %80, align 2, !tbaa !96
  %81 = add nsw i32 %69, -1
  %82 = icmp slt i32 %71, %81
  %83 = and i32 %spec.select, 67108864
  %.not338 = icmp eq i32 %83, 0
  br i1 %.not338, label %100, label %84

84:                                               ; preds = %78
  %85 = getelementptr inbounds i8, ptr %41, i64 18544
  %86 = getelementptr inbounds i8, ptr %41, i64 18560
  %87 = load i32, ptr %86, align 8, !tbaa !97
  %88 = tail call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %85, i32 noundef %87)
  %89 = getelementptr inbounds i8, ptr %62, i64 204
  %90 = load i32, ptr %89, align 4, !tbaa !98
  %91 = load i32, ptr %88, align 8, !tbaa !99
  %92 = icmp ne i32 %90, %91
  %93 = getelementptr inbounds i8, ptr %88, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !101
  %95 = icmp ne ptr %62, %94
  %96 = or i1 %92, %95
  %97 = or i1 %82, %96
  %98 = getelementptr inbounds i8, ptr %62, i64 188
  %99 = zext i1 %97 to i8
  store i8 %99, ptr %98, align 4, !tbaa !102
  br i1 %97, label %103, label %104

100:                                              ; preds = %78
  %101 = getelementptr inbounds i8, ptr %62, i64 188
  %102 = zext i1 %82 to i8
  store i8 %102, ptr %101, align 4, !tbaa !102
  br i1 %82, label %103, label %104

103:                                              ; preds = %84, %100
  tail call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %62, i32 noundef 8, i1 noundef zeroext true)
  br label %104

104:                                              ; preds = %84, %103, %100
  %.0295.in440 = phi i1 [ false, %84 ], [ true, %103 ], [ false, %100 ]
  br i1 %.not337, label %117, label %105

105:                                              ; preds = %104
  tail call void @_ZL28UpdateWindowInFocusOrderListP11ImGuiWindowbi(ptr noundef nonnull %62, i1 noundef zeroext %58, i32 noundef %spec.select)
  %106 = getelementptr inbounds i8, ptr %62, i64 20
  store i32 %spec.select, ptr %106, align 4, !tbaa !103
  store i32 %69, ptr %70, align 8, !tbaa !80
  %107 = getelementptr inbounds i8, ptr %41, i64 15936
  %108 = load double, ptr %107, align 8, !tbaa !104
  %109 = fptrunc double %108 to float
  %110 = getelementptr inbounds i8, ptr %62, i64 612
  store float %109, ptr %110, align 4, !tbaa !105
  %111 = getelementptr inbounds i8, ptr %62, i64 198
  store i16 0, ptr %111, align 2, !tbaa !106
  %112 = getelementptr inbounds i8, ptr %41, i64 16056
  %113 = load i32, ptr %112, align 8, !tbaa !107
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %112, align 8, !tbaa !107
  %115 = trunc i32 %113 to i16
  %116 = getelementptr inbounds i8, ptr %62, i64 200
  store i16 %115, ptr %116, align 8, !tbaa !108
  br label %120

117:                                              ; preds = %104
  %118 = getelementptr inbounds i8, ptr %62, i64 20
  %119 = load i32, ptr %118, align 4, !tbaa !103
  br label %120

120:                                              ; preds = %117, %105
  %.1 = phi i32 [ %spec.select, %105 ], [ %119, %117 ]
  %121 = tail call noundef zeroext i1 @_ZNK8ImVectorI20ImGuiWindowStackDataE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
  br i1 %121, label %125, label %122

122:                                              ; preds = %120
  %123 = tail call noundef nonnull align 8 dereferenceable(86) ptr @_ZN8ImVectorI20ImGuiWindowStackDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %72)
  %124 = load ptr, ptr %123, align 8, !tbaa !109
  br label %125

125:                                              ; preds = %120, %122
  %126 = phi ptr [ %124, %122 ], [ null, %120 ]
  br i1 %.not337, label %130, label %127

127:                                              ; preds = %125
  %128 = and i32 %.1, 83886080
  %.not339 = icmp eq i32 %128, 0
  %129 = select i1 %.not339, ptr null, ptr %126
  br label %133

130:                                              ; preds = %125
  %131 = getelementptr inbounds i8, ptr %62, i64 872
  %132 = load ptr, ptr %131, align 8, !tbaa !112
  br label %133

133:                                              ; preds = %130, %127
  %134 = phi ptr [ %129, %127 ], [ %132, %130 ]
  %135 = icmp eq ptr %134, null
  %136 = and i32 %.1, 16777216
  %137 = icmp ne i32 %136, 0
  %.not341 = select i1 %135, i1 %137, i1 false
  br i1 %.not341, label %138, label %139

138:                                              ; preds = %133
  tail call void @__assert_fail(ptr noundef nonnull @.str.130, ptr noundef nonnull @.str.3, i32 noundef 6119, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

139:                                              ; preds = %133
  %140 = getelementptr inbounds i8, ptr %62, i64 240
  %141 = load i32, ptr %140, align 8, !tbaa !113
  %142 = icmp eq i32 %141, 0
  br i1 %142, label %143, label %145

143:                                              ; preds = %139
  %144 = getelementptr inbounds i8, ptr %62, i64 16
  tail call void @_ZN8ImVectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef nonnull align 4 dereferenceable(4) %144)
  br label %145

145:                                              ; preds = %143, %139
  %146 = getelementptr inbounds i8, ptr %41, i64 16072
  store ptr %62, ptr %146, align 8, !tbaa !114
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %5) #14
  call void @_ZN20ImGuiWindowStackDataC2Ev(ptr noundef nonnull align 8 dereferenceable(86) %5)
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %147, ptr %5, align 8, !tbaa !109
  %148 = getelementptr inbounds i8, ptr %41, i64 18276
  %149 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(60) %149, ptr noundef nonnull align 4 dereferenceable(60) %148, i64 60, i1 false), !tbaa.struct !115
  %150 = getelementptr inbounds i8, ptr %5, i64 68
  call void @_ZN15ImGuiStackSizes17SetToContextStateEP12ImGuiContext(ptr noundef nonnull align 2 dereferenceable(18) %150, ptr noundef nonnull %41)
  call void @_ZN8ImVectorI20ImGuiWindowStackDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %72, ptr noundef nonnull align 8 dereferenceable(86) %5)
  %151 = and i32 %.1, 268435456
  %.not342 = icmp eq i32 %151, 0
  br i1 %.not342, label %156, label %152

152:                                              ; preds = %145
  %153 = getelementptr inbounds i8, ptr %41, i64 18576
  %154 = load i32, ptr %153, align 8, !tbaa !118
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %153, align 8, !tbaa !118
  br label %156

156:                                              ; preds = %152, %145
  %.pre = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not337, label %160, label %157

157:                                              ; preds = %156
  call void @_ZN5ImGui30UpdateWindowParentAndRootLinksEP11ImGuiWindowiS1_(ptr noundef %.pre, i32 noundef %.1, ptr noundef %134)
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %158, i64 880
  store ptr %126, ptr %159, align 8, !tbaa !119
  br label %160

160:                                              ; preds = %157, %156
  %161 = phi ptr [ %158, %157 ], [ %.pre, %156 ]
  %162 = getelementptr inbounds i8, ptr %161, i64 16
  %163 = load i32, ptr %162, align 8, !tbaa !120
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %163)
  %164 = getelementptr inbounds i8, ptr %41, i64 18244
  %165 = load i32, ptr %164, align 4, !tbaa !121
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 968
  store i32 %165, ptr %167, align 8, !tbaa !122
  store ptr null, ptr %146, align 8, !tbaa !114
  %168 = and i32 %.1, 67108864
  %.not343 = icmp eq i32 %168, 0
  br i1 %.not343, label %182, label %169

169:                                              ; preds = %160
  %170 = getelementptr inbounds i8, ptr %41, i64 18544
  %171 = getelementptr inbounds i8, ptr %41, i64 18560
  %172 = load i32, ptr %171, align 8, !tbaa !97
  %173 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %170, i32 noundef %172)
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %173, i64 8
  store ptr %174, ptr %175, align 8, !tbaa !101
  %176 = getelementptr inbounds i8, ptr %126, i64 344
  %177 = load i32, ptr %176, align 8, !tbaa !123
  %178 = getelementptr inbounds i8, ptr %173, i64 24
  store i32 %177, ptr %178, align 8, !tbaa !124
  call void @_ZN8ImVectorI14ImGuiPopupDataE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %171, ptr noundef nonnull align 8 dereferenceable(52) %173)
  %179 = load i32, ptr %173, align 8, !tbaa !99
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 204
  store i32 %179, ptr %181, align 4, !tbaa !98
  br label %182

182:                                              ; preds = %169, %160
  %183 = phi ptr [ %180, %169 ], [ %166, %160 ]
  %184 = getelementptr inbounds i8, ptr %41, i64 18336
  %185 = load i32, ptr %184, align 8, !tbaa !125
  %186 = and i32 %185, 1
  %.not344 = icmp eq i32 %186, 0
  br i1 %.not344, label %213, label %187

187:                                              ; preds = %182
  %188 = getelementptr inbounds i8, ptr %183, i64 220
  %189 = load i32, ptr %188, align 4
  %190 = shl i32 %189, 24
  %191 = ashr exact i32 %190, 24
  %192 = getelementptr inbounds i8, ptr %41, i64 18340
  %193 = load i32, ptr %192, align 4, !tbaa !126
  %194 = and i32 %191, %193
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %209

196:                                              ; preds = %187
  %197 = getelementptr inbounds i8, ptr %41, i64 18360
  %198 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %197)
  %199 = fcmp ogt float %198, 0x3EE4F8B580000000
  %.pre478 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %199, label %200, label %._crit_edge

._crit_edge:                                      ; preds = %196
  %.pre479 = load i32, ptr %192, align 4, !tbaa !126
  br label %209

200:                                              ; preds = %196
  %201 = getelementptr inbounds i8, ptr %41, i64 18352
  %202 = getelementptr inbounds i8, ptr %.pre478, i64 224
  %203 = load i64, ptr %201, align 8
  store i64 %203, ptr %202, align 8
  %204 = getelementptr inbounds i8, ptr %.pre478, i64 232
  %205 = load i64, ptr %197, align 8
  store i64 %205, ptr %204, align 8
  %206 = getelementptr inbounds i8, ptr %.pre478, i64 220
  %207 = load i32, ptr %206, align 4
  %208 = and i32 %207, -15
  store i32 %208, ptr %206, align 4
  br label %213

209:                                              ; preds = %._crit_edge, %187
  %210 = phi i32 [ %.pre479, %._crit_edge ], [ %193, %187 ]
  %211 = phi ptr [ %.pre478, %._crit_edge ], [ %183, %187 ]
  %212 = getelementptr inbounds i8, ptr %41, i64 18352
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef %211, ptr noundef nonnull align 4 dereferenceable(8) %212, i32 noundef %210)
  br label %213

213:                                              ; preds = %200, %209, %182
  %.0296.shrunk = phi i1 [ true, %200 ], [ %195, %209 ], [ false, %182 ]
  %214 = load i32, ptr %184, align 8, !tbaa !125
  %215 = and i32 %214, 2
  %.not345 = icmp eq i32 %215, 0
  br i1 %.not345, label %235, label %216

216:                                              ; preds = %213
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds i8, ptr %217, i64 220
  %219 = load i32, ptr %218, align 4
  %220 = shl i32 %219, 16
  %221 = ashr i32 %220, 24
  %222 = getelementptr inbounds i8, ptr %41, i64 18344
  %223 = load i32, ptr %222, align 8, !tbaa !127
  %224 = and i32 %221, %223
  %.not346 = icmp eq i32 %224, 0
  br i1 %.not346, label %.thread, label %225

225:                                              ; preds = %216
  %226 = getelementptr inbounds i8, ptr %41, i64 18368
  %227 = load float, ptr %226, align 8, !tbaa !128
  %228 = fcmp ogt float %227, 0.000000e+00
  %229 = getelementptr inbounds i8, ptr %41, i64 18372
  %230 = load float, ptr %229, align 4, !tbaa !129
  %231 = fcmp ogt float %230, 0.000000e+00
  br label %.thread

.thread:                                          ; preds = %216, %225
  %232 = phi i1 [ %228, %225 ], [ false, %216 ]
  %233 = phi i1 [ %231, %225 ], [ false, %216 ]
  %234 = getelementptr inbounds i8, ptr %41, i64 18368
  call void @_ZN5ImGui13SetWindowSizeEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %217, ptr noundef nonnull align 4 dereferenceable(8) %234, i32 noundef %223)
  %.pre480 = load i32, ptr %184, align 8, !tbaa !125
  br label %235

235:                                              ; preds = %.thread, %213
  %236 = phi i32 [ %.pre480, %.thread ], [ %214, %213 ]
  %.0298 = phi i1 [ %233, %.thread ], [ false, %213 ]
  %.0297 = phi i1 [ %232, %.thread ], [ false, %213 ]
  %237 = and i32 %236, 128
  %.not348 = icmp eq i32 %237, 0
  br i1 %.not348, label %254, label %238

238:                                              ; preds = %235
  %239 = getelementptr inbounds i8, ptr %41, i64 18384
  %240 = load float, ptr %239, align 8, !tbaa !130
  %241 = fcmp ult float %240, 0.000000e+00
  br i1 %241, label %246, label %242

242:                                              ; preds = %238
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  %244 = getelementptr inbounds i8, ptr %243, i64 148
  store float %240, ptr %244, align 4, !tbaa !131
  %245 = getelementptr inbounds i8, ptr %243, i64 156
  store float 0.000000e+00, ptr %245, align 4, !tbaa !132
  br label %246

246:                                              ; preds = %242, %238
  %247 = getelementptr inbounds i8, ptr %41, i64 18388
  %248 = load float, ptr %247, align 4, !tbaa !133
  %249 = fcmp ult float %248, 0.000000e+00
  br i1 %249, label %254, label %250

250:                                              ; preds = %246
  %251 = load ptr, ptr %4, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 152
  store float %248, ptr %252, align 4, !tbaa !134
  %253 = getelementptr inbounds i8, ptr %251, i64 160
  store float 0.000000e+00, ptr %253, align 4, !tbaa !135
  br label %254

254:                                              ; preds = %246, %250, %235
  %255 = and i32 %236, 4
  %.not349 = icmp eq i32 %255, 0
  br i1 %.not349, label %261, label %256

256:                                              ; preds = %254
  %257 = getelementptr inbounds i8, ptr %41, i64 18376
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 72
  %260 = load i64, ptr %257, align 8
  store i64 %260, ptr %259, align 8
  br label %266

261:                                              ; preds = %254
  br i1 %.not337, label %._crit_edge522, label %262

._crit_edge522:                                   ; preds = %261
  %.pre483.pre517.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %266

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %263 = load ptr, ptr %4, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i64 72
  %265 = load i64, ptr %6, align 8
  store i64 %265, ptr %264, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #14
  br label %266

266:                                              ; preds = %._crit_edge522, %262, %256
  %.pre483.pre517 = phi ptr [ %.pre483.pre517.pre, %._crit_edge522 ], [ %263, %262 ], [ %258, %256 ]
  %267 = load i32, ptr %184, align 8, !tbaa !125
  %268 = and i32 %267, 8
  %.not350 = icmp eq i32 %268, 0
  br i1 %.not350, label %275, label %269

269:                                              ; preds = %266
  %270 = getelementptr inbounds i8, ptr %41, i64 18392
  %271 = load i8, ptr %270, align 8, !tbaa !136, !range !76, !noundef !77
  %272 = trunc nuw i8 %271 to i1
  %273 = getelementptr inbounds i8, ptr %41, i64 18348
  %274 = load i32, ptr %273, align 4, !tbaa !137
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre483.pre517, i1 noundef zeroext %272, i32 noundef %274)
  %.pre481 = load i32, ptr %184, align 8, !tbaa !125
  %.pre483.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %275

275:                                              ; preds = %269, %266
  %.pre483 = phi ptr [ %.pre483.pre, %269 ], [ %.pre483.pre517, %266 ]
  %276 = phi i32 [ %.pre481, %269 ], [ %267, %266 ]
  %277 = and i32 %276, 32
  %.not351 = icmp eq i32 %277, 0
  br i1 %.not351, label %279, label %278

278:                                              ; preds = %275
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %.pre483)
  %.pre482 = load ptr, ptr %4, align 8, !tbaa !5
  br label %279

279:                                              ; preds = %278, %275
  %280 = phi ptr [ %.pre482, %278 ], [ %.pre483, %275 ]
  %281 = getelementptr inbounds i8, ptr %280, i64 188
  %282 = load i8, ptr %281, align 4, !tbaa !102, !range !76, !noundef !77
  %283 = trunc nuw i8 %282 to i1
  br i1 %283, label %284, label %285

284:                                              ; preds = %279
  call void @_ZL28SetWindowConditionAllowFlagsP11ImGuiWindowib(ptr noundef nonnull %280, i32 noundef 8, i1 noundef zeroext false)
  br label %285

285:                                              ; preds = %284, %279
  br i1 %.not337, label %1267, label %286

286:                                              ; preds = %285
  %287 = and i32 %.1, 33554432
  %.not352 = icmp eq i32 %287, 0
  %288 = and i32 %.1, 50331648
  %289 = icmp eq i32 %288, 50331648
  %290 = load ptr, ptr %4, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 217
  %292 = load i8, ptr %291, align 1, !tbaa !138
  %293 = icmp slt i8 %292, 1
  %294 = getelementptr inbounds i8, ptr %290, i64 182
  store i8 1, ptr %294, align 2, !tbaa !139
  %295 = icmp ne ptr %1, null
  %296 = getelementptr inbounds i8, ptr %290, i64 192
  %297 = zext i1 %295 to i8
  store i8 %297, ptr %296, align 8, !tbaa !140
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #14
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 0xC7EFFFFFE0000000, float noundef 0xC7EFFFFFE0000000, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8)
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %298, i64 568
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %299, ptr noundef nonnull align 4 dereferenceable(16) %7, i64 16, i1 false), !tbaa.struct !141
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #14
  %300 = getelementptr inbounds i8, ptr %298, i64 240
  call void @_ZN8ImVectorIjE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %300, i32 noundef 1)
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds i8, ptr %301, i64 664
  %303 = load ptr, ptr %302, align 8, !tbaa !142
  call void @_ZN10ImDrawList17_ResetForNewFrameEv(ptr noundef nonnull align 8 dereferenceable(196) %303)
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = getelementptr inbounds i8, ptr %304, i64 432
  store i32 -1, ptr %305, align 8, !tbaa !143
  %306 = getelementptr inbounds i8, ptr %304, i64 980
  %307 = load i8, ptr %306, align 4, !tbaa !144, !range !76, !noundef !77
  %308 = trunc nuw i8 %307 to i1
  br i1 %308, label %309, label %310

309:                                              ; preds = %286
  call void @_ZN5ImGui29GcAwakeTransientWindowBuffersEP11ImGuiWindow(ptr noundef nonnull %304)
  %.pre484.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %310

310:                                              ; preds = %309, %286
  %.pre484 = phi ptr [ %.pre484.pre, %309 ], [ %304, %286 ]
  %311 = getelementptr inbounds i8, ptr %41, i64 18976
  %312 = load ptr, ptr %311, align 8, !tbaa !145
  %.not353 = icmp eq ptr %312, null
  br i1 %.not353, label %.critedge388, label %313

313:                                              ; preds = %310
  %314 = getelementptr inbounds i8, ptr %.pre484, i64 20
  %315 = load i32, ptr %314, align 4, !tbaa !103
  %316 = and i32 %315, 524288
  %317 = icmp ne i32 %316, 0
  %brmerge = or i1 %58, %317
  br i1 %brmerge, label %.critedge388, label %318

318:                                              ; preds = %313
  %319 = getelementptr inbounds i8, ptr %.pre484, i64 8
  %320 = load ptr, ptr %319, align 8, !tbaa !146
  %321 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %0, ptr noundef nonnull dereferenceable(1) %320) #15
  %.not354 = icmp eq i32 %321, 0
  br i1 %.not354, label %.critedge388, label %322

322:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %323 = getelementptr inbounds i8, ptr %.pre484, i64 120
  %324 = load i32, ptr %323, align 8, !tbaa !147
  %325 = sext i32 %324 to i64
  store i64 %325, ptr %9, align 8, !tbaa !148
  %326 = call noundef ptr @_Z11ImStrdupcpyPcPmPKc(ptr noundef %320, ptr noundef nonnull %9, ptr noundef nonnull %0)
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %327, i64 8
  store ptr %326, ptr %328, align 8, !tbaa !146
  %329 = load i64, ptr %9, align 8, !tbaa !148
  %330 = trunc i64 %329 to i32
  %331 = getelementptr inbounds i8, ptr %327, i64 120
  store i32 %330, ptr %331, align 8, !tbaa !147
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %.critedge388

.critedge388:                                     ; preds = %310, %313, %322, %318
  %332 = phi ptr [ %.pre484, %310 ], [ %.pre484, %313 ], [ %327, %322 ], [ %.pre484, %318 ]
  %333 = getelementptr inbounds i8, ptr %332, i64 56
  %334 = getelementptr inbounds i8, ptr %332, i64 64
  call void @_ZL22CalcWindowContentSizesP11ImGuiWindowP6ImVec2S2_(ptr noundef %332, ptr noundef nonnull %333, ptr noundef nonnull %334)
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds i8, ptr %335, i64 216
  %337 = load i8, ptr %336, align 8, !tbaa !150
  %338 = icmp sgt i8 %337, 0
  br i1 %338, label %339, label %341

339:                                              ; preds = %.critedge388
  %340 = add nsw i8 %337, -1
  store i8 %340, ptr %336, align 8, !tbaa !150
  br label %341

341:                                              ; preds = %339, %.critedge388
  %342 = getelementptr inbounds i8, ptr %335, i64 217
  %343 = load i8, ptr %342, align 1, !tbaa !138
  %344 = icmp sgt i8 %343, 0
  br i1 %344, label %345, label %347

345:                                              ; preds = %341
  %346 = add nsw i8 %343, -1
  store i8 %346, ptr %342, align 1, !tbaa !138
  br label %347

347:                                              ; preds = %345, %341
  %348 = getelementptr inbounds i8, ptr %335, i64 218
  %349 = load i8, ptr %348, align 2, !tbaa !151
  %350 = icmp sgt i8 %349, 0
  br i1 %350, label %351, label %353

351:                                              ; preds = %347
  %352 = add nsw i8 %349, -1
  store i8 %352, ptr %348, align 2, !tbaa !151
  br label %353

353:                                              ; preds = %351, %347
  %.not476 = xor i1 %58, true
  %354 = select i1 %.0297, i1 %.0298, i1 false
  %or.cond477 = select i1 %.not476, i1 true, i1 %354
  br i1 %or.cond477, label %356, label %355

355:                                              ; preds = %353
  store i8 1, ptr %342, align 1, !tbaa !138
  br label %356

356:                                              ; preds = %355, %353
  %357 = and i32 %.1, 100663296
  %.not355 = icmp ne i32 %357, 0
  %or.cond390.not = select i1 %.0295.in440, i1 %.not355, i1 false
  br i1 %or.cond390.not, label %358, label %373

358:                                              ; preds = %356
  store i8 1, ptr %342, align 1, !tbaa !138
  %359 = and i32 %.1, 64
  %.not356 = icmp eq i32 %359, 0
  br i1 %.not356, label %373, label %360

360:                                              ; preds = %358
  br i1 %.0297, label %364, label %361

361:                                              ; preds = %360
  %362 = getelementptr inbounds i8, ptr %335, i64 48
  store float 0.000000e+00, ptr %362, align 8, !tbaa !152
  %363 = getelementptr inbounds i8, ptr %335, i64 40
  store float 0.000000e+00, ptr %363, align 8, !tbaa !153
  br label %364

364:                                              ; preds = %361, %360
  br i1 %.0298, label %368, label %365

365:                                              ; preds = %364
  %366 = getelementptr inbounds i8, ptr %335, i64 52
  store float 0.000000e+00, ptr %366, align 4, !tbaa !154
  %367 = getelementptr inbounds i8, ptr %335, i64 44
  store float 0.000000e+00, ptr %367, align 4, !tbaa !155
  br label %368

368:                                              ; preds = %365, %364
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %369 = load ptr, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %369, i64 64
  %371 = load i64, ptr %10, align 8
  store i64 %371, ptr %370, align 8
  %372 = getelementptr inbounds i8, ptr %369, i64 56
  store i64 %371, ptr %372, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  br label %373

373:                                              ; preds = %358, %368, %356
  %374 = call noundef ptr @_ZN5ImGui15GetMainViewportEv()
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui17SetWindowViewportEP11ImGuiWindowP14ImGuiViewportP(ptr noundef %375, ptr noundef %374)
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %376)
  br i1 %137, label %384, label %.thread442

.thread442:                                       ; preds = %373
  %377 = and i32 %.1, 134217728
  %.not358 = icmp eq i32 %377, 0
  %or.cond391 = and i1 %.not355, %.not358
  %.in.v = select i1 %or.cond391, i64 14376, i64 14340
  %.in = getelementptr inbounds i8, ptr %41, i64 %.in.v
  %378 = load float, ptr %.in, align 4, !tbaa !117
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i64 92
  store float %378, ptr %380, align 4, !tbaa !156
  %381 = getelementptr inbounds i8, ptr %41, i64 14328
  %382 = getelementptr inbounds i8, ptr %379, i64 80
  %383 = load i64, ptr %381, align 4
  store i64 %383, ptr %382, align 8
  br label %404

384:                                              ; preds = %373
  %385 = getelementptr inbounds i8, ptr %41, i64 14368
  %386 = load float, ptr %385, align 4, !tbaa !157
  %387 = load ptr, ptr %4, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 92
  store float %386, ptr %388, align 4, !tbaa !156
  %389 = getelementptr inbounds i8, ptr %41, i64 14328
  %390 = getelementptr inbounds i8, ptr %387, i64 80
  %391 = load i64, ptr %389, align 4
  store i64 %391, ptr %390, align 8
  %392 = and i32 %.1, 83951616
  %or.cond392 = icmp eq i32 %392, 16777216
  %393 = fcmp oeq float %386, 0.000000e+00
  %or.cond534 = select i1 %or.cond392, i1 %393, i1 false
  br i1 %or.cond534, label %394, label %404

394:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #14
  %395 = and i32 %.1, 1024
  %.not360 = icmp eq i32 %395, 0
  br i1 %.not360, label %399, label %396

396:                                              ; preds = %394
  %397 = getelementptr inbounds i8, ptr %41, i64 14332
  %398 = load float, ptr %397, align 4, !tbaa !158
  br label %399

399:                                              ; preds = %394, %396
  %400 = phi float [ %398, %396 ], [ 0.000000e+00, %394 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef 0.000000e+00, float noundef %400)
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %401, i64 80
  %403 = load i64, ptr %11, align 8
  store i64 %403, ptr %402, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #14
  br label %404

404:                                              ; preds = %.thread442, %399, %384
  %.in527.in = phi i64 [ %383, %.thread442 ], [ %403, %399 ], [ %391, %384 ]
  %.in527 = trunc i64 %.in527.in to i32
  %405 = bitcast i32 %.in527 to float
  %406 = getelementptr inbounds i8, ptr %41, i64 14396
  %407 = load float, ptr %406, align 4, !tbaa !159
  %408 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %405, float noundef %407)
  %409 = getelementptr inbounds i8, ptr %41, i64 18436
  %410 = load float, ptr %409, align 4, !tbaa !160
  %411 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %408, float noundef %410)
  %412 = load ptr, ptr %4, align 8, !tbaa !5
  %413 = getelementptr inbounds i8, ptr %412, i64 356
  store float %411, ptr %413, align 4, !tbaa !161
  %414 = getelementptr inbounds i8, ptr %41, i64 18440
  %415 = load float, ptr %414, align 4, !tbaa !162
  %416 = getelementptr inbounds i8, ptr %412, i64 360
  store float %415, ptr %416, align 4, !tbaa !163
  %417 = and i32 %.1, 1
  %.not361 = icmp eq i32 %417, 0
  %418 = and i32 %.1, 33
  %or.cond393 = icmp eq i32 %418, 0
  br i1 %or.cond393, label %419, label %454

419:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #14
  %420 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %412)
  %421 = extractvalue { <2 x float>, <2 x float> } %420, 0
  store <2 x float> %421, ptr %12, align 8
  %422 = getelementptr inbounds i8, ptr %12, i64 8
  %423 = extractvalue { <2 x float>, <2 x float> } %420, 1
  store <2 x float> %423, ptr %422, align 8
  %424 = getelementptr inbounds i8, ptr %41, i64 16080
  %425 = load ptr, ptr %424, align 8, !tbaa !164
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = icmp eq ptr %425, %426
  br i1 %427, label %428, label %444

428:                                              ; preds = %419
  %429 = getelementptr inbounds i8, ptr %41, i64 16148
  %430 = load i32, ptr %429, align 4, !tbaa !165
  %431 = icmp eq i32 %430, 0
  br i1 %431, label %432, label %444

432:                                              ; preds = %428
  %433 = getelementptr inbounds i8, ptr %41, i64 16152
  %434 = load i32, ptr %433, align 8, !tbaa !166
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %444

436:                                              ; preds = %432
  %437 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %12, ptr noundef nonnull align 4 dereferenceable(8) %422, i1 noundef zeroext true)
  br i1 %437, label %438, label %._crit_edge485

._crit_edge485:                                   ; preds = %436
  %.pre486 = load ptr, ptr %4, align 8, !tbaa !5
  br label %444

438:                                              ; preds = %436
  %439 = getelementptr inbounds i8, ptr %41, i64 14162
  %440 = load i16, ptr %439, align 2, !tbaa !167
  %441 = icmp eq i16 %440, 2
  %.pre487 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %441, label %442, label %444

442:                                              ; preds = %438
  %443 = getelementptr inbounds i8, ptr %.pre487, i64 186
  store i8 1, ptr %443, align 2, !tbaa !168
  br label %444

444:                                              ; preds = %._crit_edge485, %442, %438, %432, %428, %419
  %445 = phi ptr [ %.pre486, %._crit_edge485 ], [ %.pre487, %442 ], [ %.pre487, %438 ], [ %426, %432 ], [ %426, %428 ], [ %426, %419 ]
  %446 = getelementptr inbounds i8, ptr %445, i64 186
  %447 = load i8, ptr %446, align 2, !tbaa !168, !range !76, !noundef !77
  %448 = trunc nuw i8 %447 to i1
  br i1 %448, label %449, label %453

449:                                              ; preds = %444
  %450 = getelementptr inbounds i8, ptr %445, i64 185
  %451 = load i8, ptr %450, align 1, !tbaa !169, !range !76, !noundef !77
  %452 = xor i8 %451, 1
  store i8 %452, ptr %450, align 1, !tbaa !169
  %.not469.not = icmp ne i8 %451, 0
  %spec.select394 = or i1 %.not469.not, %58
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %445)
  %.pre488.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %449, %444
  %.pre488 = phi ptr [ %.pre488.pre, %449 ], [ %445, %444 ]
  %.1303 = phi i1 [ %spec.select394, %449 ], [ %58, %444 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #14
  br label %456

454:                                              ; preds = %404
  %455 = getelementptr inbounds i8, ptr %412, i64 185
  store i8 0, ptr %455, align 1, !tbaa !169
  br label %456

456:                                              ; preds = %454, %453
  %457 = phi ptr [ %412, %454 ], [ %.pre488, %453 ]
  %.2304 = phi i1 [ %58, %454 ], [ %.1303, %453 ]
  %458 = getelementptr inbounds i8, ptr %457, i64 186
  store i8 0, ptr %458, align 2, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  %459 = getelementptr inbounds i8, ptr %457, i64 172
  %460 = load i64, ptr %459, align 4
  store i64 %460, ptr %13, align 8
  %461 = getelementptr inbounds i8, ptr %457, i64 96
  store float 0.000000e+00, ptr %461, align 8, !tbaa !170
  %462 = getelementptr inbounds i8, ptr %457, i64 104
  store float 0.000000e+00, ptr %462, align 8, !tbaa !171
  %463 = call noundef float @_ZNK11ImGuiWindow14TitleBarHeightEv(ptr noundef nonnull align 8 dereferenceable(981) %457)
  %464 = load ptr, ptr %4, align 8, !tbaa !5
  %465 = call noundef float @_ZNK11ImGuiWindow13MenuBarHeightEv(ptr noundef nonnull align 8 dereferenceable(981) %464)
  %466 = fadd float %463, %465
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %467, i64 100
  store float %466, ptr %468, align 4, !tbaa !172
  %469 = getelementptr inbounds i8, ptr %467, i64 108
  store float 0.000000e+00, ptr %469, align 4, !tbaa !173
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %470 = load ptr, ptr %4, align 8, !tbaa !5
  %471 = getelementptr inbounds i8, ptr %470, i64 172
  %472 = load i64, ptr %14, align 8
  store i64 %472, ptr %471, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %473 = getelementptr inbounds i8, ptr %470, i64 64
  %474 = call <2 x float> @_ZL21CalcWindowAutoFitSizeP11ImGuiWindowRK6ImVec2(ptr noundef %470, ptr noundef nonnull align 4 dereferenceable(8) %473)
  store <2 x float> %474, ptr %15, align 8
  %475 = and i32 %.1, 64
  %.not363 = icmp ne i32 %475, 0
  %476 = extractelement <2 x float> %474, i64 0
  %477 = extractelement <2 x float> %474, i64 1
  %.pre489 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not363, label %478, label %488

478:                                              ; preds = %456
  %479 = getelementptr inbounds i8, ptr %.pre489, i64 185
  %480 = load i8, ptr %479, align 1, !tbaa !169, !range !76, !noundef !77
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %488, label %482

482:                                              ; preds = %478
  br i1 %.0297, label %485, label %483

483:                                              ; preds = %482
  %484 = getelementptr inbounds i8, ptr %.pre489, i64 48
  store float %476, ptr %484, align 8, !tbaa !152
  br label %485

485:                                              ; preds = %483, %482
  %.0300 = phi i1 [ %58, %482 ], [ true, %483 ]
  br i1 %.0298, label %537, label %486

486:                                              ; preds = %485
  %487 = getelementptr inbounds i8, ptr %.pre489, i64 52
  store float %477, ptr %487, align 4, !tbaa !154
  br label %537

488:                                              ; preds = %478, %456
  %489 = getelementptr inbounds i8, ptr %.pre489, i64 208
  %490 = load i8, ptr %489, align 8, !tbaa !174
  %491 = icmp sgt i8 %490, 0
  br i1 %491, label %496, label %492

492:                                              ; preds = %488
  %493 = getelementptr inbounds i8, ptr %.pre489, i64 209
  %494 = load i8, ptr %493, align 1, !tbaa !175
  %495 = icmp sgt i8 %494, 0
  br i1 %495, label %.thread446, label %537

496:                                              ; preds = %488
  br i1 %.0297, label %.thread446, label %497

497:                                              ; preds = %496
  %498 = getelementptr inbounds i8, ptr %.pre489, i64 211
  %499 = load i8, ptr %498, align 1, !tbaa !176, !range !76, !noundef !77
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %501, label %505

501:                                              ; preds = %497
  %502 = getelementptr inbounds i8, ptr %.pre489, i64 48
  %503 = load float, ptr %502, align 8, !tbaa !152
  %504 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %503, float noundef %476)
  %.pre490 = load ptr, ptr %4, align 8, !tbaa !5
  br label %505

505:                                              ; preds = %497, %501
  %506 = phi ptr [ %.pre490, %501 ], [ %.pre489, %497 ]
  %507 = phi float [ %504, %501 ], [ %476, %497 ]
  %508 = getelementptr inbounds i8, ptr %506, i64 48
  store float %507, ptr %508, align 8, !tbaa !152
  br label %.thread446

.thread446:                                       ; preds = %492, %505, %496
  %509 = phi ptr [ %.pre489, %496 ], [ %506, %505 ], [ %.pre489, %492 ]
  %.1301 = phi i1 [ %58, %496 ], [ true, %505 ], [ %58, %492 ]
  br i1 %.0298, label %531, label %510

510:                                              ; preds = %.thread446
  %511 = getelementptr inbounds i8, ptr %509, i64 209
  %512 = load i8, ptr %511, align 1, !tbaa !175
  %513 = icmp sgt i8 %512, 0
  br i1 %513, label %514, label %531

514:                                              ; preds = %510
  %515 = getelementptr inbounds i8, ptr %509, i64 211
  %516 = load i8, ptr %515, align 1, !tbaa !176, !range !76, !noundef !77
  %517 = trunc nuw i8 %516 to i1
  br i1 %517, label %518, label %524

518:                                              ; preds = %514
  %519 = getelementptr inbounds i8, ptr %509, i64 52
  %520 = load float, ptr %519, align 4, !tbaa !154
  %521 = getelementptr inbounds i8, ptr %15, i64 4
  %522 = load float, ptr %521, align 4, !tbaa !177
  %523 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %520, float noundef %522)
  %.pre491 = load ptr, ptr %4, align 8, !tbaa !5
  br label %527

524:                                              ; preds = %514
  %525 = getelementptr inbounds i8, ptr %15, i64 4
  %526 = load float, ptr %525, align 4, !tbaa !177
  br label %527

527:                                              ; preds = %524, %518
  %528 = phi ptr [ %.pre491, %518 ], [ %509, %524 ]
  %529 = phi float [ %523, %518 ], [ %526, %524 ]
  %530 = getelementptr inbounds i8, ptr %528, i64 52
  store float %529, ptr %530, align 4, !tbaa !154
  br label %531

531:                                              ; preds = %527, %510, %.thread446
  %532 = phi ptr [ %509, %.thread446 ], [ %528, %527 ], [ %509, %510 ]
  %.3305 = phi i1 [ %.2304, %.thread446 ], [ true, %527 ], [ %.2304, %510 ]
  %533 = getelementptr inbounds i8, ptr %532, i64 185
  %534 = load i8, ptr %533, align 1, !tbaa !169, !range !76, !noundef !77
  %535 = trunc nuw i8 %534 to i1
  br i1 %535, label %537, label %536

536:                                              ; preds = %531
  call void @_ZN5ImGui20MarkIniSettingsDirtyEP11ImGuiWindow(ptr noundef nonnull %532)
  %.pre492 = load ptr, ptr %4, align 8, !tbaa !5
  br label %537

537:                                              ; preds = %492, %536, %531, %485, %486
  %538 = phi ptr [ %532, %531 ], [ %.pre492, %536 ], [ %.pre489, %492 ], [ %.pre489, %485 ], [ %.pre489, %486 ]
  %.4 = phi i1 [ %.3305, %531 ], [ %.3305, %536 ], [ %.2304, %492 ], [ %.2304, %485 ], [ true, %486 ]
  %.2 = phi i1 [ %.1301, %531 ], [ %.1301, %536 ], [ %58, %492 ], [ %.0300, %485 ], [ %.0300, %486 ]
  %539 = getelementptr inbounds i8, ptr %538, i64 48
  %540 = call <2 x float> @_ZL29CalcWindowSizeAfterConstraintP11ImGuiWindowRK6ImVec2(ptr noundef %538, ptr noundef nonnull align 4 dereferenceable(8) %539)
  %541 = load ptr, ptr %4, align 8, !tbaa !5
  %542 = getelementptr inbounds i8, ptr %541, i64 48
  store <2 x float> %540, ptr %542, align 8
  %543 = getelementptr inbounds i8, ptr %541, i64 185
  %544 = load i8, ptr %543, align 1, !tbaa !169, !range !76, !noundef !77
  %545 = trunc nuw i8 %544 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #14
  %.not395 = xor i1 %545, true
  %brmerge396 = select i1 %.not395, i1 true, i1 %137
  br i1 %brmerge396, label %552, label %546

546:                                              ; preds = %537
  %547 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %541)
  %548 = extractvalue { <2 x float>, <2 x float> } %547, 0
  store <2 x float> %548, ptr %16, align 8
  %549 = getelementptr inbounds i8, ptr %16, i64 8
  %550 = extractvalue { <2 x float>, <2 x float> } %547, 1
  store <2 x float> %550, ptr %549, align 8
  %551 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %16)
  %.pre493 = load ptr, ptr %4, align 8, !tbaa !5
  br label %552

552:                                              ; preds = %537, %546
  %553 = phi ptr [ %.pre493, %546 ], [ %541, %537 ]
  %.sroa.044.0 = phi <2 x float> [ %551, %546 ], [ %540, %537 ]
  %554 = getelementptr inbounds i8, ptr %553, i64 40
  store <2 x float> %.sroa.044.0, ptr %554, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #14
  br i1 %.0295.in440, label %555, label %565

555:                                              ; preds = %552
  %556 = getelementptr inbounds i8, ptr %553, i64 212
  store i32 -1, ptr %556, align 4, !tbaa !178
  %557 = and i32 %.1, 201326592
  %or.cond397.not470 = icmp ne i32 %557, 67108864
  %brmerge398 = or i1 %or.cond397.not470, %.0296.shrunk
  br i1 %brmerge398, label %565, label %558

558:                                              ; preds = %555
  %559 = getelementptr inbounds i8, ptr %41, i64 18560
  %560 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZN8ImVectorI14ImGuiPopupDataE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %559)
  %561 = getelementptr inbounds i8, ptr %560, i64 36
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = getelementptr inbounds i8, ptr %562, i64 32
  %564 = load i64, ptr %561, align 4
  store i64 %564, ptr %563, align 8
  br label %565

565:                                              ; preds = %555, %558, %552
  %566 = phi ptr [ %553, %555 ], [ %562, %558 ], [ %553, %552 ]
  br i1 %137, label %567, label %581

567:                                              ; preds = %565
  br i1 %135, label %.critedge2, label %568

568:                                              ; preds = %567
  %569 = getelementptr inbounds i8, ptr %134, i64 182
  %570 = load i8, ptr %569, align 2, !tbaa !139, !range !76, !noundef !77
  %571 = trunc nuw i8 %570 to i1
  br i1 %571, label %572, label %.critedge2

.critedge2:                                       ; preds = %567, %568
  call void @__assert_fail(ptr noundef nonnull @.str.131, ptr noundef nonnull @.str.3, i32 noundef 6375, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

572:                                              ; preds = %568
  %573 = getelementptr inbounds i8, ptr %134, i64 400
  %574 = load i32, ptr %573, align 8, !tbaa !179
  %575 = trunc i32 %574 to i16
  %576 = getelementptr inbounds i8, ptr %566, i64 198
  store i16 %575, ptr %576, align 2, !tbaa !106
  call void @_ZN8ImVectorIP11ImGuiWindowE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %573, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %.not343.not399 = xor i1 %.not343, true
  %brmerge400 = or i1 %.0296.shrunk, %.not343.not399
  %brmerge401 = select i1 %brmerge400, i1 true, i1 %289
  %.pre494 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %brmerge401, label %581, label %577

577:                                              ; preds = %572
  %578 = getelementptr inbounds i8, ptr %134, i64 256
  %579 = getelementptr inbounds i8, ptr %.pre494, i64 32
  %580 = load i64, ptr %578, align 8
  store i64 %580, ptr %579, align 8
  br label %581

581:                                              ; preds = %572, %577, %565
  %582 = phi ptr [ %.pre494, %572 ], [ %.pre494, %577 ], [ %566, %565 ]
  %583 = getelementptr inbounds i8, ptr %582, i64 224
  %584 = load float, ptr %583, align 8, !tbaa !180
  %585 = fcmp une float %584, 0x47EFFFFFE0000000
  br i1 %585, label %586, label %.critedge403

586:                                              ; preds = %581
  %587 = getelementptr inbounds i8, ptr %582, i64 217
  %588 = load i8, ptr %587, align 1, !tbaa !138
  %589 = icmp eq i8 %588, 0
  br i1 %589, label %590, label %.critedge403

590:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  %591 = getelementptr inbounds i8, ptr %582, i64 40
  %592 = getelementptr inbounds i8, ptr %582, i64 232
  %593 = call <2 x float> @_ZmlRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %591, ptr noundef nonnull align 4 dereferenceable(8) %592)
  store <2 x float> %593, ptr %18, align 8
  %594 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %583, ptr noundef nonnull align 4 dereferenceable(8) %18)
  store <2 x float> %594, ptr %17, align 8
  call void @_ZN5ImGui12SetWindowPosEP11ImGuiWindowRK6ImVec2i(ptr noundef nonnull %582, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  br label %609

.critedge403:                                     ; preds = %581, %586
  br i1 %.not342, label %599, label %595

595:                                              ; preds = %.critedge403
  %596 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %582)
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds i8, ptr %597, i64 32
  store <2 x float> %596, ptr %598, align 8
  br label %609

599:                                              ; preds = %.critedge403
  %brmerge404 = or i1 %.not343, %.0296.shrunk
  %brmerge406 = select i1 %brmerge404, i1 true, i1 %293
  br i1 %brmerge406, label %604, label %600

600:                                              ; preds = %599
  %601 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %582)
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds i8, ptr %602, i64 32
  store <2 x float> %601, ptr %603, align 8
  br label %609

604:                                              ; preds = %599
  %brmerge407 = or i1 %.not352, %.0296.shrunk
  %brmerge408 = select i1 %brmerge407, i1 true, i1 %289
  br i1 %brmerge408, label %609, label %605

605:                                              ; preds = %604
  %606 = call <2 x float> @_ZN5ImGui25FindBestWindowPosForPopupEP11ImGuiWindow(ptr noundef nonnull %582)
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  %608 = getelementptr inbounds i8, ptr %607, i64 32
  store <2 x float> %606, ptr %608, align 8
  br label %609

609:                                              ; preds = %604, %595, %605, %600, %590
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #14
  %610 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetMainRectEv(ptr noundef nonnull align 8 dereferenceable(184) %374)
  %611 = extractvalue { <2 x float>, <2 x float> } %610, 0
  store <2 x float> %611, ptr %19, align 8
  %612 = getelementptr inbounds i8, ptr %19, i64 8
  %613 = extractvalue { <2 x float>, <2 x float> } %610, 1
  store <2 x float> %613, ptr %612, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #14
  %614 = call { <2 x float>, <2 x float> } @_ZNK14ImGuiViewportP11GetWorkRectEv(ptr noundef nonnull align 8 dereferenceable(184) %374)
  %615 = extractvalue { <2 x float>, <2 x float> } %614, 0
  store <2 x float> %615, ptr %20, align 8
  %616 = getelementptr inbounds i8, ptr %20, i64 8
  %617 = extractvalue { <2 x float>, <2 x float> } %614, 1
  store <2 x float> %617, ptr %616, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #14
  %618 = getelementptr inbounds i8, ptr %41, i64 14508
  %619 = getelementptr inbounds i8, ptr %41, i64 14516
  %620 = call <2 x float> @_ZL5ImMaxRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %618, ptr noundef nonnull align 4 dereferenceable(8) %619)
  store <2 x float> %620, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #14
  %621 = 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> %621, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #14
  %622 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %616, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %622, 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) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #14
  %brmerge409 = select i1 %.0296.shrunk, i1 true, i1 %137
  br i1 %brmerge409, label %631, label %623

623:                                              ; preds = %609
  %624 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %625 = fcmp ogt float %624, 0.000000e+00
  br i1 %625, label %626, label %631

626:                                              ; preds = %623
  %627 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %19)
  %628 = fcmp ogt float %627, 0.000000e+00
  br i1 %628, label %629, label %631

629:                                              ; preds = %626
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL14ClampWindowPosP11ImGuiWindowRK6ImRect(ptr noundef %630, ptr noundef nonnull align 4 dereferenceable(16) %22)
  br label %631

631:                                              ; preds = %609, %623, %626, %629
  %632 = load ptr, ptr %4, align 8, !tbaa !5
  %633 = getelementptr inbounds i8, ptr %632, i64 32
  %634 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %633)
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds i8, ptr %635, i64 32
  store <2 x float> %634, ptr %636, align 8
  %637 = and i32 %.1, 201326592
  %or.cond411.not.not = icmp eq i32 %637, 67108864
  %. = select i1 %or.cond411.not.not, i64 14372, i64 14336
  %.sink = select i1 %137, i64 14364, i64 %.
  %638 = getelementptr inbounds i8, ptr %41, i64 %.sink
  %639 = load float, ptr %638, align 4, !tbaa !117
  %640 = getelementptr inbounds i8, ptr %635, i64 88
  store float %639, ptr %640, align 8, !tbaa !181
  %641 = and i32 %.1, 4096
  %.not367 = icmp eq i32 %641, 0
  %or.cond412 = select i1 %.0295.in440, i1 %.not367, i1 false
  br i1 %or.cond412, label %642, label %656

642:                                              ; preds = %631
  %643 = icmp eq i32 %288, 0
  %not..not343 = xor i1 %.not343, true
  %narrow = select i1 %not..not343, i1 true, i1 %643
  %644 = call noundef ptr @_ZN5ImGui20GetTopMostPopupModalEv()
  %.not368 = icmp eq ptr %644, null
  %.pre496 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not368, label %656, label %645

645:                                              ; preds = %642
  %646 = call noundef zeroext i1 @_ZN5ImGui26IsWindowWithinBeginStackOfEP11ImGuiWindowS1_(ptr noundef %.pre496, ptr noundef nonnull %644)
  %.pre497 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %646, label %656, label %647

647:                                              ; preds = %645
  %648 = getelementptr inbounds i8, ptr %.pre497, i64 888
  %649 = load ptr, ptr %648, align 8, !tbaa !182
  %650 = icmp eq ptr %.pre497, %649
  br i1 %650, label %651, label %656

651:                                              ; preds = %647
  %652 = call noundef ptr @_ZN5ImGuiL17FindBlockingModalEP11ImGuiWindow(ptr noundef nonnull %.pre497)
  %.not369 = icmp eq ptr %652, null
  br i1 %.not369, label %653, label %654

653:                                              ; preds = %651
  call void @__assert_fail(ptr noundef nonnull @.str.132, ptr noundef nonnull @.str.3, i32 noundef 6434, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

654:                                              ; preds = %651
  %655 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui26BringWindowToDisplayBehindEP11ImGuiWindowS1_(ptr noundef %655, ptr noundef nonnull %652)
  %.pre495 = load ptr, ptr %4, align 8, !tbaa !5
  br label %656

656:                                              ; preds = %642, %645, %654, %647, %631
  %657 = phi ptr [ %635, %631 ], [ %.pre497, %645 ], [ %.pre495, %654 ], [ %.pre497, %647 ], [ %.pre496, %642 ]
  %.2308.shrunk = phi i1 [ false, %631 ], [ %narrow, %645 ], [ false, %654 ], [ false, %647 ], [ %narrow, %642 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #14
  store i32 -1, ptr %25, align 4, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #14
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %26, i8 0, i64 16, i1 false)
  %658 = getelementptr inbounds i8, ptr %41, i64 126
  %659 = load i8, ptr %658, align 2, !tbaa !183, !range !76, !noundef !77
  %660 = trunc nuw i8 %659 to i1
  %661 = select i1 %660, i32 2, i32 1
  %662 = getelementptr inbounds i8, ptr %41, i64 15400
  %663 = load float, ptr %662, align 8, !tbaa !184
  %664 = fmul float %663, 0x3FF19999A0000000
  %665 = getelementptr inbounds i8, ptr %657, i64 88
  %666 = load float, ptr %665, align 8, !tbaa !181
  %667 = fadd float %666, 1.000000e+00
  %668 = call float @llvm.fmuladd.f32(float %663, float 0x3FC99999A0000000, float %667)
  %669 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %664, float noundef %668)
  %670 = fptosi float %669 to i32
  %671 = sitofp i32 %670 to float
  %672 = load ptr, ptr %4, align 8, !tbaa !5
  %673 = getelementptr inbounds i8, ptr %672, i64 185
  %674 = load i8, ptr %673, align 1, !tbaa !169, !range !76, !noundef !77
  %675 = trunc nuw i8 %674 to i1
  br i1 %675, label %678, label %676

676:                                              ; preds = %656
  %677 = call noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef nonnull %672, ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull %25, i32 noundef %661, ptr noundef nonnull %26, ptr noundef nonnull align 4 dereferenceable(16) %22)
  %spec.select414 = or i1 %677, %.4
  %spec.select415 = or i1 %677, %.2
  %.pre498 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre498, i64 185
  %.pre499 = load i8, ptr %.phi.trans.insert, align 1, !tbaa !169, !range !76
  br label %678

678:                                              ; preds = %676, %656
  %679 = phi i8 [ %674, %656 ], [ %.pre499, %676 ]
  %680 = phi ptr [ %672, %656 ], [ %.pre498, %676 ]
  %.5 = phi i1 [ %.4, %656 ], [ %spec.select414, %676 ]
  %.3 = phi i1 [ %.2, %656 ], [ %spec.select415, %676 ]
  %681 = load i32, ptr %25, align 4, !tbaa !116
  %682 = trunc i32 %681 to i8
  %683 = getelementptr inbounds i8, ptr %680, i64 193
  store i8 %682, ptr %683, align 1, !tbaa !185
  %684 = trunc nuw i8 %679 to i1
  br i1 %684, label %786, label %685

685:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  %686 = getelementptr inbounds i8, ptr %680, i64 48
  %687 = load float, ptr %686, align 8, !tbaa !152
  %688 = getelementptr inbounds i8, ptr %680, i64 52
  %689 = load float, ptr %688, align 4, !tbaa !154
  %690 = getelementptr inbounds i8, ptr %680, i64 100
  %691 = load float, ptr %690, align 4, !tbaa !172
  %692 = getelementptr inbounds i8, ptr %680, i64 108
  %693 = load float, ptr %692, align 4, !tbaa !173
  %694 = fadd float %691, %693
  %695 = fsub float %689, %694
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %687, float noundef %695)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #14
  %696 = load ptr, ptr %4, align 8, !tbaa !5
  %697 = getelementptr inbounds i8, ptr %696, i64 504
  %698 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %697)
  store <2 x float> %698, ptr %28, align 8
  %699 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  br i1 %58, label %700, label %701

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

701:                                              ; preds = %685
  %702 = load ptr, ptr %4, align 8, !tbaa !5
  %703 = getelementptr inbounds i8, ptr %702, i64 56
  %704 = getelementptr inbounds i8, ptr %702, i64 80
  %705 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %704, float noundef 2.000000e+00)
  store <2 x float> %705, ptr %30, align 8
  %706 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %703, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %706, ptr %29, align 8
  br label %707

707:                                              ; preds = %701, %700
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  %708 = load float, ptr %27, align 4
  %.sroa.029.0.vec.extract = extractelement <2 x float> %699, i64 0
  %709 = select i1 %.3, float %708, float %.sroa.029.0.vec.extract
  %710 = getelementptr inbounds i8, ptr %27, i64 4
  %711 = load float, ptr %710, align 4
  %.sroa.029.4.vec.extract = extractelement <2 x float> %699, i64 1
  %712 = select i1 %.5, float %711, float %.sroa.029.4.vec.extract
  %713 = and i32 %.1, 16384
  %.not370 = icmp eq i32 %713, 0
  br i1 %.not370, label %714, label %.thread447

714:                                              ; preds = %707
  %715 = getelementptr inbounds i8, ptr %29, i64 4
  %716 = load float, ptr %715, align 4, !tbaa !177
  %717 = fcmp ogt float %716, %712
  %718 = and i32 %.1, 8
  %.not371 = icmp eq i32 %718, 0
  %719 = select i1 %717, i1 %.not371, i1 false
  %720 = load ptr, ptr %4, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 181
  %722 = zext i1 %719 to i8
  store i8 %722, ptr %721, align 1, !tbaa !186
  %723 = and i32 %.1, 32768
  %.not372 = icmp eq i32 %723, 0
  br i1 %.not372, label %729, label %.thread452

.thread447:                                       ; preds = %707
  %724 = load ptr, ptr %4, align 8, !tbaa !5
  %725 = getelementptr inbounds i8, ptr %724, i64 181
  store i8 1, ptr %725, align 1, !tbaa !186
  %726 = and i32 %.1, 32768
  %.not372448 = icmp eq i32 %726, 0
  br i1 %.not372448, label %.thread449, label %.thread452.thread

.thread452.thread:                                ; preds = %.thread447
  %727 = getelementptr inbounds i8, ptr %724, i64 180
  store i8 1, ptr %727, align 4, !tbaa !187
  br label %.thread533

.thread449:                                       ; preds = %.thread447
  %728 = load float, ptr %29, align 8, !tbaa !188
  %.pre526 = and i32 %.1, 8
  br label %731

729:                                              ; preds = %714
  %730 = load float, ptr %29, align 8, !tbaa !188
  br i1 %719, label %731, label %737

731:                                              ; preds = %.thread449, %729
  %.pre524.pre-phi = phi i32 [ %.pre526, %.thread449 ], [ 0, %729 ]
  %732 = phi float [ %728, %.thread449 ], [ %730, %729 ]
  %733 = phi ptr [ %724, %.thread449 ], [ %720, %729 ]
  %734 = phi ptr [ %725, %.thread449 ], [ %721, %729 ]
  %735 = getelementptr inbounds i8, ptr %41, i64 14436
  %736 = load float, ptr %735, align 4, !tbaa !189
  br label %737

737:                                              ; preds = %729, %731
  %.pre-phi = phi i32 [ %718, %729 ], [ %.pre524.pre-phi, %731 ]
  %738 = phi i8 [ 0, %729 ], [ 1, %731 ]
  %739 = phi float [ %730, %729 ], [ %732, %731 ]
  %740 = phi i1 [ false, %729 ], [ true, %731 ]
  %741 = phi ptr [ %720, %729 ], [ %733, %731 ]
  %742 = phi ptr [ %721, %729 ], [ %734, %731 ]
  %743 = phi float [ 0.000000e+00, %729 ], [ %736, %731 ]
  %744 = fsub float %709, %743
  %745 = fcmp ogt float %739, %744
  %.not373 = icmp eq i32 %.pre-phi, 0
  %or.cond416 = select i1 %745, i1 %.not373, i1 false
  br i1 %or.cond416, label %748, label %.thread453

.thread453:                                       ; preds = %737
  %746 = getelementptr inbounds i8, ptr %741, i64 180
  store i8 0, ptr %746, align 4, !tbaa !187
  br label %760

.thread452:                                       ; preds = %714
  %747 = getelementptr inbounds i8, ptr %720, i64 180
  store i8 1, ptr %747, align 4, !tbaa !187
  br i1 %719, label %.thread533, label %752

748:                                              ; preds = %737
  %749 = and i32 %.1, 2048
  %.not471 = icmp eq i32 %749, 0
  %750 = getelementptr inbounds i8, ptr %741, i64 180
  %.lobit = lshr exact i32 %749, 11
  %751 = trunc nuw nsw i32 %.lobit to i8
  store i8 %751, ptr %750, align 4, !tbaa !187
  %brmerge467 = or i1 %.not471, %740
  %not..not471 = xor i1 %.not471, true
  br i1 %brmerge467, label %760, label %._crit_edge500

._crit_edge500:                                   ; preds = %748
  %.phi.trans.insert501 = getelementptr inbounds i8, ptr %29, i64 4
  %.pre502 = load float, ptr %.phi.trans.insert501, align 4, !tbaa !177
  br label %752

752:                                              ; preds = %._crit_edge500, %.thread452
  %.pre-phi525 = phi i32 [ 0, %._crit_edge500 ], [ %718, %.thread452 ]
  %753 = phi float [ %.pre502, %._crit_edge500 ], [ %716, %.thread452 ]
  %754 = phi ptr [ %742, %._crit_edge500 ], [ %721, %.thread452 ]
  %755 = fcmp ogt float %753, %712
  %.not374 = icmp eq i32 %.pre-phi525, 0
  %756 = select i1 %755, i1 %.not374, i1 false
  %757 = zext i1 %756 to i8
  store i8 %757, ptr %754, align 1, !tbaa !186
  br label %760

.thread533:                                       ; preds = %.thread452.thread, %.thread452
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %758 = getelementptr inbounds i8, ptr %41, i64 14436
  %759 = load float, ptr %758, align 4, !tbaa !189
  br label %768

760:                                              ; preds = %748, %.thread453, %752
  %761 = phi i8 [ %757, %752 ], [ %738, %748 ], [ %738, %.thread453 ]
  %762 = phi i1 [ true, %752 ], [ %not..not471, %748 ], [ false, %.thread453 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %763 = trunc nuw i8 %761 to i1
  br i1 %763, label %764, label %767

764:                                              ; preds = %760
  %765 = getelementptr inbounds i8, ptr %41, i64 14436
  %766 = load float, ptr %765, align 4, !tbaa !189
  br i1 %762, label %768, label %772

767:                                              ; preds = %760
  br i1 %762, label %768, label %772

768:                                              ; preds = %.thread533, %764, %767
  %769 = phi float [ %766, %764 ], [ 0.000000e+00, %767 ], [ %759, %.thread533 ]
  %770 = getelementptr inbounds i8, ptr %41, i64 14436
  %771 = load float, ptr %770, align 4, !tbaa !189
  br label %772

772:                                              ; preds = %764, %767, %768
  %773 = phi float [ %769, %768 ], [ 0.000000e+00, %767 ], [ %766, %764 ]
  %774 = phi float [ %771, %768 ], [ 0.000000e+00, %767 ], [ 0.000000e+00, %764 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %773, float noundef %774)
  %775 = load ptr, ptr %4, align 8, !tbaa !5
  %776 = getelementptr inbounds i8, ptr %775, i64 172
  %777 = load i64, ptr %31, align 8
  store i64 %777, ptr %776, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  %778 = getelementptr inbounds i8, ptr %775, i64 104
  %779 = lshr i64 %777, 32
  %780 = insertelement <2 x i64> poison, i64 %777, i64 0
  %781 = insertelement <2 x i64> %780, i64 %779, i64 1
  %782 = trunc <2 x i64> %781 to <2 x i32>
  %783 = bitcast <2 x i32> %782 to <2 x float>
  %784 = load <2 x float>, ptr %778, align 8, !tbaa !117
  %785 = fadd <2 x float> %784, %783
  store <2 x float> %785, ptr %778, align 8, !tbaa !117
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  br label %786

786:                                              ; preds = %772, %678
  %787 = phi ptr [ %775, %772 ], [ %680, %678 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #14
  %788 = and i32 %.1, 83886080
  %brmerge419.demorgan = icmp ne i32 %788, 16777216
  %789 = getelementptr inbounds i8, ptr %134, i64 568
  %790 = or i1 %brmerge419.demorgan, %289
  %791 = select i1 %790, ptr %19, ptr %789
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %791, i64 16, i1 false), !tbaa.struct !141
  %792 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %787)
  %793 = extractvalue { <2 x float>, <2 x float> } %792, 0
  %794 = extractvalue { <2 x float>, <2 x float> } %792, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #14
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow12TitleBarRectEv(ptr noundef nonnull align 8 dereferenceable(981) %795)
  %797 = extractvalue { <2 x float>, <2 x float> } %796, 0
  store <2 x float> %797, ptr %33, align 8
  %798 = getelementptr inbounds i8, ptr %33, i64 8
  %799 = extractvalue { <2 x float>, <2 x float> } %796, 1
  store <2 x float> %799, ptr %798, align 8
  %800 = load ptr, ptr %4, align 8, !tbaa !5
  %801 = getelementptr inbounds i8, ptr %800, i64 488
  store <2 x float> %793, ptr %801, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %800, i64 496
  store <2 x float> %794, ptr %.sroa.4.0..sroa_idx, align 8
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %801, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %802 = load ptr, ptr %4, align 8
  %803 = getelementptr inbounds i8, ptr %802, i64 32
  %804 = getelementptr inbounds i8, ptr %802, i64 96
  %805 = getelementptr inbounds i8, ptr %802, i64 504
  %806 = getelementptr inbounds i8, ptr %802, i64 40
  %807 = load <2 x float>, ptr %803, align 8, !tbaa !117
  %808 = load <2 x float>, ptr %806, align 8, !tbaa !117
  %809 = fadd <2 x float> %807, %808
  %810 = load <4 x float>, ptr %804, align 8, !tbaa !117
  %811 = shufflevector <2 x float> %807, <2 x float> %809, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %812 = fadd <4 x float> %811, %810
  %813 = fsub <4 x float> %811, %810
  %814 = shufflevector <4 x float> %812, <4 x float> %813, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  store <4 x float> %814, ptr %805, align 8, !tbaa !117
  %815 = and i32 %.1, 1025
  %brmerge421.not = icmp eq i32 %815, 1
  %816 = getelementptr inbounds i8, ptr %41, i64 14392
  %817 = getelementptr inbounds i8, ptr %802, i64 92
  %.in376 = select i1 %brmerge421.not, ptr %817, ptr %816
  %818 = load float, ptr %.in376, align 4, !tbaa !117
  %819 = extractelement <4 x float> %812, i64 0
  %820 = fadd float %819, 5.000000e-01
  %821 = getelementptr inbounds i8, ptr %802, i64 80
  %822 = load float, ptr %821, align 8, !tbaa !190
  %823 = fmul float %822, 5.000000e-01
  %824 = call noundef float @_ZL7ImFloorf(float noundef %823)
  %825 = load ptr, ptr %4, align 8, !tbaa !5
  %826 = getelementptr inbounds i8, ptr %825, i64 92
  %827 = load float, ptr %826, align 4, !tbaa !156
  %828 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %824, float noundef %827)
  %829 = fadd float %820, %828
  %830 = call noundef float @_ZL7ImFloorf(float noundef %829)
  %831 = load ptr, ptr %4, align 8, !tbaa !5
  %832 = getelementptr inbounds i8, ptr %831, i64 520
  store float %830, ptr %832, align 8, !tbaa !191
  %833 = getelementptr inbounds i8, ptr %831, i64 508
  %834 = load float, ptr %833, align 4, !tbaa !192
  %835 = fadd float %834, 5.000000e-01
  %836 = fadd float %818, %835
  %837 = call noundef float @_ZL7ImFloorf(float noundef %836)
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds i8, ptr %838, i64 524
  store float %837, ptr %839, align 4, !tbaa !193
  %840 = getelementptr inbounds i8, ptr %838, i64 512
  %841 = load float, ptr %840, align 8, !tbaa !194
  %842 = fadd float %841, 5.000000e-01
  %843 = getelementptr inbounds i8, ptr %838, i64 80
  %844 = load float, ptr %843, align 8, !tbaa !190
  %845 = fmul float %844, 5.000000e-01
  %846 = call noundef float @_ZL7ImFloorf(float noundef %845)
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  %848 = getelementptr inbounds i8, ptr %847, i64 92
  %849 = load float, ptr %848, align 4, !tbaa !156
  %850 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %846, float noundef %849)
  %851 = fsub float %842, %850
  %852 = call noundef float @_ZL7ImFloorf(float noundef %851)
  %853 = load ptr, ptr %4, align 8, !tbaa !5
  %854 = getelementptr inbounds i8, ptr %853, i64 528
  store float %852, ptr %854, align 8, !tbaa !195
  %855 = getelementptr inbounds i8, ptr %853, i64 516
  %856 = load float, ptr %855, align 4, !tbaa !196
  %857 = fadd float %856, 5.000000e-01
  %858 = getelementptr inbounds i8, ptr %853, i64 92
  %859 = load float, ptr %858, align 4, !tbaa !156
  %860 = fsub float %857, %859
  %861 = call noundef float @_ZL7ImFloorf(float noundef %860)
  %862 = load ptr, ptr %4, align 8, !tbaa !5
  %863 = getelementptr inbounds i8, ptr %862, i64 532
  store float %861, ptr %863, align 4, !tbaa !197
  %864 = getelementptr inbounds i8, ptr %862, i64 520
  call void @_ZN6ImRect12ClipWithFullERKS_(ptr noundef nonnull align 4 dereferenceable(16) %864, ptr noundef nonnull align 4 dereferenceable(16) %32)
  %865 = load ptr, ptr %4, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i64 40
  %867 = load float, ptr %866, align 8, !tbaa !153
  %868 = fcmp ule float %867, 0.000000e+00
  %.not352.not = xor i1 %.not352, true
  %brmerge423 = select i1 %868, i1 true, i1 %.not352.not
  %brmerge424 = or i1 %.not363, %brmerge423
  br i1 %brmerge424, label %871, label %869

869:                                              ; preds = %786
  %870 = fmul float %867, 0x3FE4CCCCC0000000
  br label %874

871:                                              ; preds = %786
  %872 = load float, ptr %662, align 8, !tbaa !184
  %873 = fmul float %872, 1.600000e+01
  br label %874

874:                                              ; preds = %871, %869
  %.sink538 = phi float [ %873, %871 ], [ %870, %869 ]
  %875 = call noundef float @_ZL7ImFloorf(float noundef %.sink538)
  %.sink537 = load ptr, ptr %4, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %.sink537, i64 616
  store float %875, ptr %876, align 8, !tbaa !198
  %877 = getelementptr inbounds i8, ptr %.sink537, i64 56
  %878 = load float, ptr %877, align 8, !tbaa !199
  %879 = getelementptr inbounds i8, ptr %.sink537, i64 80
  %880 = load float, ptr %879, align 8, !tbaa !190
  %881 = call float @llvm.fmuladd.f32(float %880, float 2.000000e+00, float %878)
  %882 = getelementptr inbounds i8, ptr %.sink537, i64 504
  %883 = call noundef float @_ZNK6ImRect8GetWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %882)
  %884 = fsub float %881, %883
  %885 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %884)
  %886 = load ptr, ptr %4, align 8, !tbaa !5
  %887 = getelementptr inbounds i8, ptr %886, i64 140
  store float %885, ptr %887, align 4, !tbaa !200
  %888 = getelementptr inbounds i8, ptr %886, i64 60
  %889 = load float, ptr %888, align 4, !tbaa !201
  %890 = getelementptr inbounds i8, ptr %886, i64 84
  %891 = load float, ptr %890, align 4, !tbaa !202
  %892 = call float @llvm.fmuladd.f32(float %891, float 2.000000e+00, float %889)
  %893 = getelementptr inbounds i8, ptr %886, i64 504
  %894 = call noundef float @_ZNK6ImRect9GetHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %893)
  %895 = fsub float %892, %894
  %896 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %895)
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = getelementptr inbounds i8, ptr %897, i64 144
  store float %896, ptr %898, align 4, !tbaa !203
  %899 = call <2 x float> @_ZL38CalcNextScrollFromScrollTargetAndClampP11ImGuiWindow(ptr noundef %897)
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds i8, ptr %900, i64 132
  store <2 x float> %899, ptr %901, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef 0x47EFFFFFE0000000, float noundef 0x47EFFFFFE0000000)
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds i8, ptr %902, i64 148
  %904 = load i64, ptr %34, align 8
  store i64 %904, ptr %903, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  %905 = getelementptr inbounds i8, ptr %902, i64 112
  store <2 x float> zeroinitializer, ptr %905, align 8, !tbaa !117
  %906 = getelementptr inbounds i8, ptr %902, i64 664
  %907 = load ptr, ptr %906, align 8, !tbaa !142
  %908 = load i32, ptr %907, align 8, !tbaa !204
  %909 = icmp eq i32 %908, 1
  br i1 %909, label %910, label %.critedge4

910:                                              ; preds = %874
  %911 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdEixEi(ptr noundef nonnull align 8 dereferenceable(16) %907, i32 noundef 0)
  %912 = getelementptr inbounds i8, ptr %911, i64 32
  %913 = load i32, ptr %912, align 8, !tbaa !205
  %914 = icmp eq i32 %913, 0
  br i1 %914, label %915, label %.critedge4

.critedge4:                                       ; preds = %874, %910
  call void @__assert_fail(ptr noundef nonnull @.str.133, ptr noundef nonnull @.str.3, i32 noundef 6549, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

915:                                              ; preds = %910
  %916 = load ptr, ptr %4, align 8, !tbaa !5
  %917 = getelementptr inbounds i8, ptr %916, i64 664
  %918 = load ptr, ptr %917, align 8, !tbaa !142
  %919 = getelementptr inbounds i8, ptr %41, i64 15392
  %920 = load ptr, ptr %919, align 8, !tbaa !207
  %921 = getelementptr inbounds i8, ptr %920, i64 64
  %922 = load ptr, ptr %921, align 8, !tbaa !208
  %923 = getelementptr inbounds i8, ptr %922, i64 8
  %924 = load ptr, ptr %923, align 8, !tbaa !209
  call void @_ZN10ImDrawList13PushTextureIDEPv(ptr noundef nonnull align 8 dereferenceable(196) %918, ptr noundef %924)
  %925 = getelementptr inbounds i8, ptr %32, i64 8
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %925, i1 noundef zeroext false)
  br i1 %790, label %.thread457, label %926

926:                                              ; preds = %915
  %927 = getelementptr inbounds i8, ptr %134, i64 400
  %928 = load i32, ptr %927, align 8, !tbaa !179
  %929 = icmp sgt i32 %928, 1
  br i1 %929, label %930, label %.thread454

.thread454:                                       ; preds = %926
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  br label %945

930:                                              ; preds = %926
  %931 = add nsw i32 %928, -2
  %932 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP11ImGuiWindowEixEi(ptr noundef nonnull align 8 dereferenceable(16) %927, i32 noundef %931)
  %933 = load ptr, ptr %932, align 8, !tbaa !5
  %.not377 = icmp eq ptr %933, null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  br i1 %.not377, label %945, label %934

934:                                              ; preds = %930
  %935 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %933)
  %936 = extractvalue { <2 x float>, <2 x float> } %935, 0
  store <2 x float> %936, ptr %35, align 8
  %937 = getelementptr inbounds i8, ptr %35, i64 8
  %938 = extractvalue { <2 x float>, <2 x float> } %935, 1
  store <2 x float> %938, ptr %937, align 8
  %939 = load ptr, ptr %4, align 8, !tbaa !5
  %940 = call { <2 x float>, <2 x float> } @_ZNK11ImGuiWindow4RectEv(ptr noundef nonnull align 8 dereferenceable(981) %939)
  %941 = extractvalue { <2 x float>, <2 x float> } %940, 0
  store <2 x float> %941, ptr %36, align 8
  %942 = getelementptr inbounds i8, ptr %36, i64 8
  %943 = extractvalue { <2 x float>, <2 x float> } %940, 1
  store <2 x float> %943, ptr %942, align 8
  %944 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %35, ptr noundef nonnull align 4 dereferenceable(16) %36)
  br label %945

945:                                              ; preds = %.thread454, %930, %934
  %946 = phi i1 [ %944, %934 ], [ false, %930 ], [ false, %.thread454 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #14
  %947 = getelementptr inbounds i8, ptr %134, i64 664
  %948 = load ptr, ptr %947, align 8, !tbaa !142
  %949 = getelementptr inbounds i8, ptr %948, i64 32
  %950 = load i32, ptr %949, align 8, !tbaa !213
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  %952 = getelementptr inbounds i8, ptr %951, i64 664
  %953 = load ptr, ptr %952, align 8, !tbaa !142
  %954 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN8ImVectorI9ImDrawCmdE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %953)
  %955 = getelementptr inbounds i8, ptr %954, i64 32
  %956 = load i32, ptr %955, align 8, !tbaa !205
  %957 = icmp ne i32 %956, 0
  %958 = icmp slt i32 %950, 1
  %or.cond429.not474 = select i1 %957, i1 true, i1 %958
  %or.cond468.not = or i1 %946, %or.cond429.not474
  br i1 %or.cond468.not, label %.thread457, label %959

959:                                              ; preds = %945
  %960 = load ptr, ptr %947, align 8, !tbaa !142
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = getelementptr inbounds i8, ptr %961, i64 664
  store ptr %960, ptr %962, align 8, !tbaa !142
  br label %.thread457

.thread457:                                       ; preds = %945, %915, %959
  %.1310459 = phi i1 [ true, %959 ], [ false, %915 ], [ false, %945 ]
  %963 = getelementptr inbounds i8, ptr %41, i64 18960
  %964 = load ptr, ptr %963, align 8, !tbaa !214
  %.not378 = icmp eq ptr %964, null
  br i1 %.not378, label %965, label %968

965:                                              ; preds = %.thread457
  %966 = getelementptr inbounds i8, ptr %41, i64 18600
  %967 = load ptr, ptr %966, align 8, !tbaa !215
  br label %968

968:                                              ; preds = %.thread457, %965
  %969 = phi ptr [ %967, %965 ], [ %964, %.thread457 ]
  br i1 %.2308.shrunk, label %._crit_edge503, label %970

._crit_edge503:                                   ; preds = %968
  %.pre504 = load ptr, ptr %4, align 8, !tbaa !5
  br label %977

970:                                              ; preds = %968
  %.not379 = icmp eq ptr %969, null
  %.pre505 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.not379, label %977, label %971

971:                                              ; preds = %970
  %972 = getelementptr inbounds i8, ptr %.pre505, i64 904
  %973 = load ptr, ptr %972, align 8, !tbaa !216
  %974 = getelementptr inbounds i8, ptr %969, i64 904
  %975 = load ptr, ptr %974, align 8, !tbaa !216
  %976 = icmp eq ptr %973, %975
  br label %977

977:                                              ; preds = %._crit_edge503, %970, %971
  %978 = phi ptr [ %.pre504, %._crit_edge503 ], [ %.pre505, %970 ], [ %.pre505, %971 ]
  %979 = phi i1 [ true, %._crit_edge503 ], [ false, %970 ], [ %976, %971 ]
  call void @_ZN5ImGuiL23RenderWindowDecorationsEP11ImGuiWindowRK6ImRectbbiPKjf(ptr noundef %978, ptr noundef nonnull align 4 dereferenceable(16) %33, i1 noundef zeroext %979, i1 noundef zeroext true, i32 noundef %661, ptr noundef nonnull %26, float noundef %671)
  %.pre506 = load ptr, ptr %4, align 8, !tbaa !5
  br i1 %.1310459, label %980, label %983

980:                                              ; preds = %977
  %981 = getelementptr inbounds i8, ptr %.pre506, i64 672
  %982 = getelementptr inbounds i8, ptr %.pre506, i64 664
  store ptr %981, ptr %982, align 8, !tbaa !142
  br label %983

983:                                              ; preds = %980, %977
  %984 = and i32 %.1, 8
  %.not380 = icmp eq i32 %984, 0
  %985 = getelementptr inbounds i8, ptr %.pre506, i64 72
  %986 = load float, ptr %985, align 8, !tbaa !217
  %987 = fcmp une float %986, 0.000000e+00
  br i1 %987, label %1009, label %988

988:                                              ; preds = %983
  %989 = and i32 %.1, 2056
  %990 = icmp eq i32 %989, 2048
  br i1 %990, label %991, label %994

991:                                              ; preds = %988
  %992 = getelementptr inbounds i8, ptr %.pre506, i64 56
  %993 = load float, ptr %992, align 8, !tbaa !199
  br label %994

994:                                              ; preds = %988, %991
  %995 = phi float [ %993, %991 ], [ 0.000000e+00, %988 ]
  %996 = getelementptr inbounds i8, ptr %.pre506, i64 40
  %997 = load float, ptr %996, align 8, !tbaa !153
  %998 = getelementptr inbounds i8, ptr %.pre506, i64 80
  %999 = load float, ptr %998, align 8, !tbaa !190
  %1000 = fneg float %999
  %1001 = call float @llvm.fmuladd.f32(float %1000, float 2.000000e+00, float %997)
  %1002 = getelementptr inbounds i8, ptr %.pre506, i64 96
  %1003 = load float, ptr %1002, align 8, !tbaa !170
  %1004 = getelementptr inbounds i8, ptr %.pre506, i64 104
  %1005 = load float, ptr %1004, align 8, !tbaa !171
  %1006 = fadd float %1003, %1005
  %1007 = fsub float %1001, %1006
  %1008 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %995, float noundef %1007)
  %.pre507 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1009

1009:                                             ; preds = %983, %994
  %1010 = phi ptr [ %.pre507, %994 ], [ %.pre506, %983 ]
  %1011 = phi float [ %1008, %994 ], [ %986, %983 ]
  %1012 = getelementptr inbounds i8, ptr %1010, i64 76
  %1013 = load float, ptr %1012, align 4, !tbaa !218
  %1014 = fcmp une float %1013, 0.000000e+00
  br i1 %1014, label %1034, label %1015

1015:                                             ; preds = %1009
  br i1 %.not380, label %1016, label %1019

1016:                                             ; preds = %1015
  %1017 = getelementptr inbounds i8, ptr %1010, i64 60
  %1018 = load float, ptr %1017, align 4, !tbaa !201
  br label %1019

1019:                                             ; preds = %1015, %1016
  %1020 = phi float [ %1018, %1016 ], [ 0.000000e+00, %1015 ]
  %1021 = getelementptr inbounds i8, ptr %1010, i64 44
  %1022 = load float, ptr %1021, align 4, !tbaa !155
  %1023 = getelementptr inbounds i8, ptr %1010, i64 84
  %1024 = load float, ptr %1023, align 4, !tbaa !202
  %1025 = fneg float %1024
  %1026 = call float @llvm.fmuladd.f32(float %1025, float 2.000000e+00, float %1022)
  %1027 = getelementptr inbounds i8, ptr %1010, i64 100
  %1028 = load float, ptr %1027, align 4, !tbaa !172
  %1029 = getelementptr inbounds i8, ptr %1010, i64 108
  %1030 = load float, ptr %1029, align 4, !tbaa !173
  %1031 = fadd float %1028, %1030
  %1032 = fsub float %1026, %1031
  %1033 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1020, float noundef %1032)
  %.pre508 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1034

1034:                                             ; preds = %1009, %1019
  %1035 = phi ptr [ %.pre508, %1019 ], [ %1010, %1009 ]
  %1036 = phi float [ %1033, %1019 ], [ %1013, %1009 ]
  %1037 = getelementptr inbounds i8, ptr %1035, i64 504
  %1038 = load float, ptr %1037, align 8, !tbaa !219
  %1039 = getelementptr inbounds i8, ptr %1035, i64 132
  %1040 = load float, ptr %1039, align 4, !tbaa !220
  %1041 = fsub float %1038, %1040
  %1042 = getelementptr inbounds i8, ptr %1035, i64 80
  %1043 = load float, ptr %1042, align 8, !tbaa !190
  %1044 = getelementptr inbounds i8, ptr %1035, i64 92
  %1045 = load float, ptr %1044, align 4, !tbaa !156
  %1046 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1043, float noundef %1045)
  %1047 = fadd float %1041, %1046
  %1048 = call noundef float @_ZL7ImFloorf(float noundef %1047)
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds i8, ptr %1049, i64 536
  store float %1048, ptr %1050, align 8, !tbaa !221
  %1051 = getelementptr inbounds i8, ptr %1049, i64 508
  %1052 = load float, ptr %1051, align 4, !tbaa !192
  %1053 = getelementptr inbounds i8, ptr %1049, i64 136
  %1054 = load float, ptr %1053, align 4, !tbaa !222
  %1055 = fsub float %1052, %1054
  %1056 = getelementptr inbounds i8, ptr %1049, i64 84
  %1057 = load float, ptr %1056, align 4, !tbaa !202
  %1058 = getelementptr inbounds i8, ptr %1049, i64 92
  %1059 = load float, ptr %1058, align 4, !tbaa !156
  %1060 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1057, float noundef %1059)
  %1061 = fadd float %1055, %1060
  %1062 = call noundef float @_ZL7ImFloorf(float noundef %1061)
  %1063 = load ptr, ptr %4, align 8, !tbaa !5
  %1064 = getelementptr inbounds i8, ptr %1063, i64 540
  store float %1062, ptr %1064, align 4, !tbaa !223
  %1065 = getelementptr inbounds i8, ptr %1063, i64 536
  %1066 = load float, ptr %1065, align 8, !tbaa !221
  %1067 = getelementptr inbounds i8, ptr %1063, i64 544
  %1068 = insertelement <2 x float> poison, float %1011, i64 0
  %1069 = insertelement <2 x float> %1068, float %1036, i64 1
  %1070 = insertelement <2 x float> poison, float %1066, i64 0
  %1071 = insertelement <2 x float> %1070, float %1062, i64 1
  %1072 = fadd <2 x float> %1069, %1071
  store <2 x float> %1072, ptr %1067, align 8, !tbaa !117
  %1073 = getelementptr inbounds i8, ptr %1063, i64 552
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1073, ptr noundef nonnull align 8 dereferenceable(16) %1065, i64 16, i1 false), !tbaa.struct !141
  %1074 = getelementptr inbounds i8, ptr %1063, i64 32
  %1075 = getelementptr inbounds i8, ptr %1063, i64 132
  %1076 = getelementptr inbounds i8, ptr %1063, i64 80
  %1077 = getelementptr inbounds i8, ptr %1063, i64 96
  %1078 = getelementptr inbounds i8, ptr %1063, i64 584
  %1079 = load <2 x float>, ptr %1074, align 8, !tbaa !117
  %1080 = load <2 x float>, ptr %1075, align 4, !tbaa !117
  %1081 = fsub <2 x float> %1079, %1080
  %1082 = load <2 x float>, ptr %1076, align 8, !tbaa !117
  %1083 = fadd <2 x float> %1081, %1082
  %1084 = load <2 x float>, ptr %1077, align 8, !tbaa !117
  %1085 = fadd <2 x float> %1083, %1084
  store <2 x float> %1085, ptr %1078, align 8, !tbaa !117
  %1086 = getelementptr inbounds i8, ptr %1063, i64 72
  %1087 = load float, ptr %1086, align 8, !tbaa !217
  %1088 = fcmp une float %1087, 0.000000e+00
  br i1 %1088, label %1100, label %1089

1089:                                             ; preds = %1034
  %1090 = getelementptr inbounds i8, ptr %1063, i64 40
  %1091 = load float, ptr %1090, align 8, !tbaa !153
  %1092 = extractelement <2 x float> %1082, i64 0
  %1093 = fneg float %1092
  %1094 = call float @llvm.fmuladd.f32(float %1093, float 2.000000e+00, float %1091)
  %1095 = getelementptr inbounds i8, ptr %1063, i64 104
  %1096 = load float, ptr %1095, align 8, !tbaa !171
  %1097 = extractelement <2 x float> %1084, i64 0
  %1098 = fadd float %1097, %1096
  %1099 = fsub float %1094, %1098
  br label %1100

1100:                                             ; preds = %1034, %1089
  %1101 = phi float [ %1099, %1089 ], [ %1087, %1034 ]
  %1102 = extractelement <2 x float> %1085, i64 0
  %1103 = fadd float %1102, %1101
  %1104 = getelementptr inbounds i8, ptr %1063, i64 592
  store float %1103, ptr %1104, align 8, !tbaa !224
  %1105 = getelementptr inbounds i8, ptr %1063, i64 76
  %1106 = load float, ptr %1105, align 4, !tbaa !218
  %1107 = fcmp une float %1106, 0.000000e+00
  br i1 %1107, label %1119, label %1108

1108:                                             ; preds = %1100
  %1109 = getelementptr inbounds i8, ptr %1063, i64 44
  %1110 = load float, ptr %1109, align 4, !tbaa !155
  %1111 = extractelement <2 x float> %1082, i64 1
  %1112 = fneg float %1111
  %1113 = call float @llvm.fmuladd.f32(float %1112, float 2.000000e+00, float %1110)
  %1114 = getelementptr inbounds i8, ptr %1063, i64 108
  %1115 = load float, ptr %1114, align 4, !tbaa !173
  %1116 = extractelement <2 x float> %1084, i64 1
  %1117 = fadd float %1116, %1115
  %1118 = fsub float %1113, %1117
  br label %1119

1119:                                             ; preds = %1100, %1108
  %1120 = phi float [ %1118, %1108 ], [ %1106, %1100 ]
  %1121 = extractelement <2 x float> %1085, i64 1
  %1122 = fadd float %1121, %1120
  %1123 = getelementptr inbounds i8, ptr %1063, i64 596
  store float %1122, ptr %1123, align 4, !tbaa !225
  %1124 = extractelement <2 x float> %1082, i64 0
  %1125 = extractelement <2 x float> %1084, i64 0
  %1126 = fadd <2 x float> %1082, %1084
  %1127 = extractelement <2 x float> %1080, i64 0
  %1128 = fsub <2 x float> %1126, %1080
  %1129 = extractelement <2 x float> %1128, i64 0
  %1130 = getelementptr inbounds i8, ptr %1063, i64 324
  store float %1129, ptr %1130, align 4, !tbaa !226
  %1131 = getelementptr inbounds i8, ptr %1063, i64 328
  store <2 x float> zeroinitializer, ptr %1131, align 8, !tbaa !117
  %1132 = extractelement <2 x float> %1079, i64 0
  %1133 = fpext float %1132 to double
  %1134 = fpext float %1124 to double
  %1135 = fadd double %1133, %1134
  %1136 = fpext float %1127 to double
  %1137 = fsub double %1135, %1136
  %1138 = fpext float %1125 to double
  %1139 = fadd double %1137, %1138
  %1140 = fadd double %1139, 0.000000e+00
  %1141 = extractelement <2 x float> %1079, i64 1
  %1142 = fpext float %1141 to double
  %1143 = extractelement <2 x float> %1082, i64 1
  %1144 = fpext float %1143 to double
  %1145 = fadd double %1142, %1144
  %1146 = extractelement <2 x float> %1080, i64 1
  %1147 = fpext float %1146 to double
  %1148 = fsub double %1145, %1147
  %1149 = extractelement <2 x float> %1084, i64 1
  %1150 = fpext float %1149 to double
  %1151 = fadd double %1148, %1150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  %1152 = fptrunc double %1140 to float
  %1153 = fptrunc double %1151 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef %1152, float noundef %1153)
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds i8, ptr %1154, i64 272
  %1156 = load i64, ptr %37, align 8
  store i64 %1156, ptr %1155, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  %1157 = trunc i64 %1156 to i32
  %1158 = bitcast i32 %1157 to float
  %1159 = fpext float %1158 to double
  %1160 = fsub double %1140, %1159
  %1161 = fptrunc double %1160 to float
  %1162 = lshr i64 %1156, 32
  %1163 = trunc nuw i64 %1162 to i32
  %1164 = bitcast i32 %1163 to float
  %1165 = fpext float %1164 to double
  %1166 = fsub double %1151, %1165
  %1167 = fptrunc double %1166 to float
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef %1161, float noundef %1167)
  %1168 = load ptr, ptr %4, align 8, !tbaa !5
  %1169 = getelementptr inbounds i8, ptr %1168, i64 336
  %1170 = load i64, ptr %38, align 8
  store i64 %1170, ptr %1169, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  %1171 = getelementptr inbounds i8, ptr %1168, i64 256
  %1172 = getelementptr inbounds i8, ptr %1168, i64 272
  %1173 = load i64, ptr %1172, align 8
  store i64 %1173, ptr %1171, align 8
  %1174 = getelementptr inbounds i8, ptr %1168, i64 264
  store i64 %1173, ptr %1174, align 8
  %1175 = getelementptr inbounds i8, ptr %1168, i64 280
  store i64 %1173, ptr %1175, align 8
  %1176 = getelementptr inbounds i8, ptr %1168, i64 288
  store i64 %1173, ptr %1176, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1177 = load ptr, ptr %4, align 8, !tbaa !5
  %1178 = getelementptr inbounds i8, ptr %1177, i64 304
  %1179 = load i64, ptr %39, align 8
  store i64 %1179, ptr %1178, align 8
  %1180 = getelementptr inbounds i8, ptr %1177, i64 296
  store i64 %1179, ptr %1180, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #14
  %1181 = getelementptr inbounds i8, ptr %1177, i64 312
  %1182 = getelementptr inbounds i8, ptr %1177, i64 344
  store i32 0, ptr %1182, align 8, !tbaa !123
  %1183 = getelementptr inbounds i8, ptr %1177, i64 350
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %1181, i8 0, i64 10, i1 false)
  %1184 = load i16, ptr %1183, align 2, !tbaa !227
  %1185 = getelementptr inbounds i8, ptr %1177, i64 348
  store i16 %1184, ptr %1185, align 4, !tbaa !228
  store i16 0, ptr %1183, align 2, !tbaa !227
  %1186 = getelementptr inbounds i8, ptr %1177, i64 352
  store i8 0, ptr %1186, align 8, !tbaa !229
  %1187 = getelementptr inbounds i8, ptr %1177, i64 144
  %1188 = load float, ptr %1187, align 4, !tbaa !203
  %1189 = fcmp ogt float %1188, 0.000000e+00
  %1190 = getelementptr inbounds i8, ptr %1177, i64 353
  %1191 = zext i1 %1189 to i8
  store i8 %1191, ptr %1190, align 1, !tbaa !230
  %1192 = getelementptr inbounds i8, ptr %1177, i64 354
  store i8 0, ptr %1192, align 2, !tbaa !231
  %1193 = getelementptr inbounds i8, ptr %1177, i64 364
  %1194 = load float, ptr %406, align 4, !tbaa !159
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1193, float noundef %1194, i1 noundef zeroext %.0295.in440)
  %1195 = load ptr, ptr %4, align 8, !tbaa !5
  %1196 = getelementptr inbounds i8, ptr %1195, i64 392
  store i32 0, ptr %1196, align 8, !tbaa !232
  %1197 = getelementptr inbounds i8, ptr %1195, i64 396
  store i32 0, ptr %1197, align 4, !tbaa !233
  %1198 = getelementptr inbounds i8, ptr %1195, i64 400
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1198, i32 noundef 0)
  %1199 = load ptr, ptr %4, align 8, !tbaa !5
  %1200 = getelementptr inbounds i8, ptr %1199, i64 624
  %1201 = getelementptr inbounds i8, ptr %1199, i64 416
  store ptr %1200, ptr %1201, align 8, !tbaa !234
  %1202 = getelementptr inbounds i8, ptr %1199, i64 424
  store ptr null, ptr %1202, align 8, !tbaa !235
  %1203 = getelementptr inbounds i8, ptr %1199, i64 436
  store i32 1, ptr %1203, align 4, !tbaa !236
  br i1 %135, label %1207, label %1204

1204:                                             ; preds = %1119
  %1205 = getelementptr inbounds i8, ptr %134, i64 436
  %1206 = load i32, ptr %1205, align 4, !tbaa !236
  br label %1207

1207:                                             ; preds = %1119, %1204
  %1208 = phi i32 [ %1206, %1204 ], [ 1, %1119 ]
  %1209 = getelementptr inbounds i8, ptr %1199, i64 440
  store i32 %1208, ptr %1209, align 8, !tbaa !237
  %1210 = getelementptr inbounds i8, ptr %1199, i64 616
  %1211 = load float, ptr %1210, align 8, !tbaa !198
  %1212 = getelementptr inbounds i8, ptr %1199, i64 444
  store float %1211, ptr %1212, align 4, !tbaa !238
  %1213 = getelementptr inbounds i8, ptr %1199, i64 448
  store float -1.000000e+00, ptr %1213, align 8, !tbaa !239
  %1214 = getelementptr inbounds i8, ptr %1199, i64 456
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1214, i32 noundef 0)
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  %1216 = getelementptr inbounds i8, ptr %1215, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1216, i32 noundef 0)
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds i8, ptr %1217, i64 208
  %1219 = load i8, ptr %1218, align 8, !tbaa !174
  %1220 = icmp sgt i8 %1219, 0
  br i1 %1220, label %1221, label %1223

1221:                                             ; preds = %1207
  %1222 = add nsw i8 %1219, -1
  store i8 %1222, ptr %1218, align 8, !tbaa !174
  br label %1223

1223:                                             ; preds = %1221, %1207
  %1224 = getelementptr inbounds i8, ptr %1217, i64 209
  %1225 = load i8, ptr %1224, align 1, !tbaa !175
  %1226 = icmp sgt i8 %1225, 0
  br i1 %1226, label %1227, label %1229

1227:                                             ; preds = %1223
  %1228 = add nsw i8 %1225, -1
  store i8 %1228, ptr %1224, align 1, !tbaa !175
  br label %1229

1229:                                             ; preds = %1227, %1223
  br i1 %.2308.shrunk, label %1230, label %1232

1230:                                             ; preds = %1229
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %1217)
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN5ImGui13NavInitWindowEP11ImGuiWindowb(ptr noundef %1231, i1 noundef zeroext false)
  %.pre510.pre = load ptr, ptr %4, align 8, !tbaa !5
  br label %1232

1232:                                             ; preds = %1230, %1229
  %.pre510 = phi ptr [ %.pre510.pre, %1230 ], [ %1217, %1229 ]
  br i1 %.not361, label %1233, label %1244

1233:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #14
  %1234 = load float, ptr %33, align 8, !tbaa !240
  %1235 = getelementptr inbounds i8, ptr %.pre510, i64 92
  %1236 = load float, ptr %1235, align 4, !tbaa !156
  %1237 = fadd float %1234, %1236
  %1238 = getelementptr inbounds i8, ptr %33, i64 4
  %1239 = load float, ptr %1238, align 4, !tbaa !241
  %1240 = load float, ptr %798, align 8, !tbaa !242
  %1241 = fsub float %1240, %1236
  %1242 = getelementptr inbounds i8, ptr %33, i64 12
  %1243 = load float, ptr %1242, align 4, !tbaa !243
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %40, float noundef %1237, float noundef %1239, float noundef %1241, float noundef %1243)
  call void @_ZN5ImGuiL28RenderWindowTitleBarContentsEP11ImGuiWindowRK6ImRectPKcPb(ptr noundef %.pre510, ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull %0, ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #14
  %.pre509 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1244

1244:                                             ; preds = %1233, %1232
  %1245 = phi ptr [ %.pre509, %1233 ], [ %.pre510, %1232 ]
  %1246 = getelementptr inbounds i8, ptr %1245, i64 602
  store i16 0, ptr %1246, align 2, !tbaa !244
  %1247 = getelementptr inbounds i8, ptr %1245, i64 600
  store i16 0, ptr %1247, align 8, !tbaa !245
  %1248 = getelementptr inbounds i8, ptr %1245, i64 124
  %1249 = load i32, ptr %1248, align 4, !tbaa !246
  %1250 = getelementptr inbounds i8, ptr %41, i64 18248
  %1251 = load i32, ptr %1250, align 8, !tbaa !247
  %1252 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %798, i1 noundef zeroext false)
  %1253 = zext i1 %1252 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1249, i32 noundef %1251, i32 noundef %1253, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %1254 = getelementptr inbounds i8, ptr %41, i64 18252
  %1255 = load i32, ptr %1254, align 4, !tbaa !248
  %.not381 = icmp eq i32 %1255, 0
  br i1 %.not381, label %1266, label %1256

1256:                                             ; preds = %1244
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds i8, ptr %1257, i64 16
  %1259 = load i32, ptr %1258, align 8, !tbaa !120
  %1260 = icmp eq i32 %1259, %1255
  br i1 %1260, label %1265, label %1261

1261:                                             ; preds = %1256
  %1262 = getelementptr inbounds i8, ptr %1257, i64 124
  %1263 = load i32, ptr %1262, align 4, !tbaa !246
  %1264 = icmp eq i32 %1263, %1255
  br i1 %1264, label %1265, label %1266

1265:                                             ; preds = %1261, %1256
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1266

1266:                                             ; preds = %1265, %1261, %1244
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  br label %1269

1267:                                             ; preds = %285
  %1268 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZL16SetCurrentWindowP11ImGuiWindow(ptr noundef %1268)
  br label %1269

1269:                                             ; preds = %1267, %1266
  %1270 = load ptr, ptr %4, align 8, !tbaa !5
  %1271 = getelementptr inbounds i8, ptr %1270, i64 520
  %1272 = getelementptr inbounds i8, ptr %1270, i64 528
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %1271, ptr noundef nonnull align 4 dereferenceable(8) %1272, i1 noundef zeroext true)
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds i8, ptr %1273, i64 184
  store i8 0, ptr %1274, align 8, !tbaa !249
  %1275 = getelementptr inbounds i8, ptr %1273, i64 194
  %1276 = load i16, ptr %1275, align 2, !tbaa !250
  %1277 = add i16 %1276, 1
  store i16 %1277, ptr %1275, align 2, !tbaa !250
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %184)
  br i1 %.not337, label %._crit_edge515, label %1278

._crit_edge515:                                   ; preds = %1269
  %.pre516 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1392

1278:                                             ; preds = %1269
  br i1 %137, label %1279, label %.critedge433

1279:                                             ; preds = %1278
  %1280 = and i32 %.1, 1
  %.not382 = icmp eq i32 %1280, 0
  br i1 %.not382, label %1281, label %1282

1281:                                             ; preds = %1279
  call void @__assert_fail(ptr noundef nonnull @.str.134, ptr noundef nonnull @.str.3, i32 noundef 6713, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1282:                                             ; preds = %1279
  %1283 = and i32 %.1, 64
  %.not383 = icmp eq i32 %1283, 0
  br i1 %.not383, label %1284, label %1327

1284:                                             ; preds = %1282
  %1285 = load ptr, ptr %4, align 8, !tbaa !5
  %1286 = getelementptr inbounds i8, ptr %1285, i64 208
  %1287 = load i8, ptr %1286, align 8, !tbaa !174
  %1288 = icmp slt i8 %1287, 1
  br i1 %1288, label %1289, label %1327

1289:                                             ; preds = %1284
  %1290 = getelementptr inbounds i8, ptr %1285, i64 209
  %1291 = load i8, ptr %1290, align 1, !tbaa !175
  %1292 = icmp slt i8 %1291, 1
  br i1 %1292, label %1293, label %1327

1293:                                             ; preds = %1289
  %1294 = and i32 %.1, 8388608
  %.not384 = icmp eq i32 %1294, 0
  br i1 %.not384, label %1308, label %1295

1295:                                             ; preds = %1293
  %1296 = getelementptr inbounds i8, ptr %41, i64 18664
  %1297 = load i8, ptr %1296, align 8, !tbaa !251, !range !76, !noundef !77
  %1298 = trunc nuw i8 %1297 to i1
  br i1 %1298, label %1299, label %1308

1299:                                             ; preds = %1295
  %1300 = getelementptr inbounds i8, ptr %41, i64 18600
  %1301 = load ptr, ptr %1300, align 8, !tbaa !215
  %.not385 = icmp eq ptr %1301, null
  br i1 %.not385, label %1308, label %1302

1302:                                             ; preds = %1299
  %1303 = getelementptr inbounds i8, ptr %1301, i64 912
  %1304 = load ptr, ptr %1303, align 8, !tbaa !252
  %1305 = getelementptr inbounds i8, ptr %1285, i64 912
  %1306 = load ptr, ptr %1305, align 8, !tbaa !252
  %1307 = icmp eq ptr %1304, %1306
  br label %1308

1308:                                             ; preds = %1295, %1299, %1302, %1293
  %1309 = phi i1 [ false, %1293 ], [ false, %1299 ], [ false, %1295 ], [ %1307, %1302 ]
  %1310 = getelementptr inbounds i8, ptr %41, i64 23608
  %1311 = load i8, ptr %1310, align 8, !tbaa !253, !range !76, !noundef !77
  %1312 = trunc nuw i8 %1311 to i1
  %brmerge431 = select i1 %1312, i1 true, i1 %1309
  br i1 %brmerge431, label %1327, label %1313

1313:                                             ; preds = %1308
  %1314 = getelementptr inbounds i8, ptr %1285, i64 488
  %1315 = load float, ptr %1314, align 8, !tbaa !254
  %1316 = getelementptr inbounds i8, ptr %1285, i64 496
  %1317 = load float, ptr %1316, align 8, !tbaa !255
  %1318 = fcmp ult float %1315, %1317
  br i1 %1318, label %1319, label %1325

1319:                                             ; preds = %1313
  %1320 = getelementptr inbounds i8, ptr %1285, i64 492
  %1321 = load float, ptr %1320, align 4, !tbaa !256
  %1322 = getelementptr inbounds i8, ptr %1285, i64 500
  %1323 = load float, ptr %1322, align 4, !tbaa !257
  %1324 = fcmp ult float %1321, %1323
  br i1 %1324, label %1327, label %1325

1325:                                             ; preds = %1319, %1313
  %1326 = getelementptr inbounds i8, ptr %1285, i64 216
  store i8 1, ptr %1326, align 8, !tbaa !150
  br label %1327

1327:                                             ; preds = %1325, %1319, %1308, %1289, %1284, %1282
  br i1 %135, label %.critedge433, label %1328

1328:                                             ; preds = %1327
  %1329 = getelementptr inbounds i8, ptr %134, i64 185
  %1330 = load i8, ptr %1329, align 1, !tbaa !169, !range !76, !noundef !77
  %1331 = trunc nuw i8 %1330 to i1
  br i1 %1331, label %.thread461, label %1334

.thread461:                                       ; preds = %1328
  %1332 = load ptr, ptr %4, align 8, !tbaa !5
  %1333 = getelementptr inbounds i8, ptr %1332, i64 216
  store i8 1, ptr %1333, align 8, !tbaa !150
  br label %1344

1334:                                             ; preds = %1328
  %1335 = getelementptr inbounds i8, ptr %134, i64 216
  %1336 = load i8, ptr %1335, align 8, !tbaa !150
  %1337 = icmp sgt i8 %1336, 0
  br i1 %1337, label %1338, label %.thread460

1338:                                             ; preds = %1334
  %1339 = load ptr, ptr %4, align 8, !tbaa !5
  %1340 = getelementptr inbounds i8, ptr %1339, i64 216
  store i8 1, ptr %1340, align 8, !tbaa !150
  br label %.thread460

.thread460:                                       ; preds = %1334, %1338
  %1341 = getelementptr inbounds i8, ptr %134, i64 217
  %1342 = load i8, ptr %1341, align 1, !tbaa !138
  %1343 = icmp sgt i8 %1342, 0
  br i1 %1343, label %.thread460._crit_edge, label %.critedge433

.thread460._crit_edge:                            ; preds = %.thread460
  %.pre511 = load ptr, ptr %4, align 8, !tbaa !5
  br label %1344

1344:                                             ; preds = %.thread460._crit_edge, %.thread461
  %1345 = phi ptr [ %.pre511, %.thread460._crit_edge ], [ %1332, %.thread461 ]
  %1346 = getelementptr inbounds i8, ptr %1345, i64 217
  store i8 1, ptr %1346, align 1, !tbaa !138
  br label %.critedge433

.critedge433:                                     ; preds = %1327, %.thread460, %1344, %1278
  %1347 = load float, ptr %42, align 4, !tbaa !258
  %1348 = fcmp ugt float %1347, 0.000000e+00
  %.pre512 = load ptr, ptr %4, align 8, !tbaa !5
  %.phi.trans.insert513 = getelementptr inbounds i8, ptr %.pre512, i64 216
  br i1 %1348, label %1349, label %.thread532

.thread532:                                       ; preds = %.critedge433
  store i8 1, ptr %.phi.trans.insert513, align 8, !tbaa !150
  br label %.thread462

1349:                                             ; preds = %.critedge433
  %.pre514 = load i8, ptr %.phi.trans.insert513, align 8, !tbaa !150
  %1350 = icmp sgt i8 %.pre514, 0
  br i1 %1350, label %.thread462, label %1351

1351:                                             ; preds = %1349
  %1352 = getelementptr inbounds i8, ptr %.pre512, i64 217
  %1353 = load i8, ptr %1352, align 1, !tbaa !138
  %1354 = icmp sgt i8 %1353, 0
  br i1 %1354, label %.thread462, label %1355

1355:                                             ; preds = %1351
  %1356 = getelementptr inbounds i8, ptr %.pre512, i64 218
  %1357 = load i8, ptr %1356, align 2, !tbaa !151
  %1358 = icmp sgt i8 %1357, 0
  %1359 = zext i1 %1358 to i8
  br label %.thread462

.thread462:                                       ; preds = %.thread532, %1349, %1355, %1351
  %.not475 = phi i1 [ false, %1351 ], [ true, %1355 ], [ false, %1349 ], [ false, %.thread532 ]
  %1360 = phi i8 [ 1, %1351 ], [ %1359, %1355 ], [ 1, %1349 ], [ 1, %.thread532 ]
  %1361 = getelementptr inbounds i8, ptr %.pre512, i64 189
  store i8 %1360, ptr %1361, align 1, !tbaa !259
  %1362 = getelementptr inbounds i8, ptr %.pre512, i64 219
  %1363 = load i8, ptr %1362, align 1, !tbaa !260
  %1364 = icmp sgt i8 %1363, 0
  br i1 %1364, label %1365, label %1370

1365:                                             ; preds = %.thread462
  %1366 = add nsw i8 %1363, -1
  store i8 %1366, ptr %1362, align 1, !tbaa !260
  %1367 = getelementptr inbounds i8, ptr %.pre512, i64 20
  %1368 = load i32, ptr %1367, align 4, !tbaa !103
  %1369 = or i32 %1368, 786944
  store i32 %1369, ptr %1367, align 4, !tbaa !103
  br label %1370

1370:                                             ; preds = %1365, %.thread462
  %1371 = getelementptr inbounds i8, ptr %.pre512, i64 185
  %1372 = load i8, ptr %1371, align 1, !tbaa !169, !range !76, !noundef !77
  %1373 = trunc nuw i8 %1372 to i1
  br i1 %1373, label %1378, label %1374

1374:                                             ; preds = %1370
  %1375 = getelementptr inbounds i8, ptr %.pre512, i64 182
  %1376 = load i8, ptr %1375, align 2, !tbaa !139, !range !76, !noundef !77
  %1377 = trunc nuw i8 %1376 to i1
  %brmerge435.not = and i1 %.not475, %1377
  br i1 %brmerge435.not, label %1390, label %1378

1378:                                             ; preds = %1374, %1370
  %1379 = getelementptr inbounds i8, ptr %.pre512, i64 208
  %1380 = load i8, ptr %1379, align 8, !tbaa !174
  %1381 = icmp slt i8 %1380, 1
  br i1 %1381, label %1382, label %1390

1382:                                             ; preds = %1378
  %1383 = getelementptr inbounds i8, ptr %.pre512, i64 209
  %1384 = load i8, ptr %1383, align 1, !tbaa !175
  %1385 = icmp slt i8 %1384, 1
  br i1 %1385, label %1386, label %1390

1386:                                             ; preds = %1382
  %1387 = getelementptr inbounds i8, ptr %.pre512, i64 217
  %1388 = load i8, ptr %1387, align 1, !tbaa !138
  %1389 = icmp slt i8 %1388, 1
  %spec.select436 = zext i1 %1389 to i8
  br label %1390

1390:                                             ; preds = %1386, %1374, %1378, %1382
  %.0 = phi i8 [ 0, %1382 ], [ 0, %1378 ], [ 0, %1374 ], [ %spec.select436, %1386 ]
  %1391 = getelementptr inbounds i8, ptr %.pre512, i64 187
  store i8 %.0, ptr %1391, align 1, !tbaa !261
  br label %1392

1392:                                             ; preds = %._crit_edge515, %1390
  %1393 = phi ptr [ %.pre516, %._crit_edge515 ], [ %.pre512, %1390 ]
  %1394 = getelementptr inbounds i8, ptr %1393, i64 190
  %1395 = load i8, ptr %1394, align 2, !tbaa !96, !range !76, !noundef !77
  %1396 = trunc nuw i8 %1395 to i1
  br i1 %1396, label %1423, label %1397

1397:                                             ; preds = %1392
  %1398 = getelementptr inbounds i8, ptr %41, i64 132
  %1399 = load i8, ptr %1398, align 4, !tbaa !262, !range !76, !noundef !77
  %1400 = trunc nuw i8 %1399 to i1
  %brmerge439.demorgan = and i1 %58, %1400
  br i1 %brmerge439.demorgan, label %1411, label %1401

1401:                                             ; preds = %1397
  %1402 = getelementptr inbounds i8, ptr %41, i64 133
  %1403 = load i8, ptr %1402, align 1, !tbaa !263, !range !76, !noundef !77
  %1404 = trunc nuw i8 %1403 to i1
  br i1 %1404, label %1405, label %1423

1405:                                             ; preds = %1401
  %1406 = getelementptr inbounds i8, ptr %41, i64 23722
  %1407 = load i8, ptr %1406, align 2, !tbaa !264
  %1408 = sext i8 %1407 to i32
  %1409 = load i32, ptr %72, align 8, !tbaa !94
  %1410 = icmp eq i32 %1409, %1408
  br i1 %1410, label %1411, label %1423

1411:                                             ; preds = %1397, %1405
  %1412 = getelementptr inbounds i8, ptr %1393, i64 208
  %1413 = load i8, ptr %1412, align 8, !tbaa !174
  %1414 = icmp sgt i8 %1413, 0
  br i1 %1414, label %1415, label %1417

1415:                                             ; preds = %1411
  %1416 = add nuw i8 %1413, 1
  store i8 %1416, ptr %1412, align 8, !tbaa !174
  br label %1417

1417:                                             ; preds = %1415, %1411
  %1418 = getelementptr inbounds i8, ptr %1393, i64 209
  %1419 = load i8, ptr %1418, align 1, !tbaa !175
  %1420 = icmp sgt i8 %1419, 0
  br i1 %1420, label %1421, label %1428

1421:                                             ; preds = %1417
  %1422 = add nuw i8 %1419, 1
  store i8 %1422, ptr %1418, align 1, !tbaa !175
  br label %1428

1423:                                             ; preds = %1405, %1401, %1392
  %1424 = getelementptr inbounds i8, ptr %1393, i64 187
  %1425 = load i8, ptr %1424, align 1, !tbaa !261, !range !76, !noundef !77
  %1426 = trunc nuw i8 %1425 to i1
  %1427 = xor i1 %1426, true
  br label %1428

1428:                                             ; preds = %1417, %1421, %1423
  %.0293 = phi i1 [ %1427, %1423 ], [ false, %1421 ], [ false, %1417 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %5) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #14
  ret i1 %.0293
}

; 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: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui15GetMainViewportEv() local_unnamed_addr #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #12

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN5ImGuiL24UpdateWindowManualResizeEP11ImGuiWindowRK6ImVec2PiiPjRK6ImRect(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8), 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(981)) local_unnamed_addr #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 15956}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !19, i64 14288, !19, i64 14304, !20, i64 14320, !6, i64 15392, !16, i64 15400, !16, i64 15404, !21, i64 15408, !24, i64 15936, !14, i64 15944, !14, i64 15948, !14, i64 15952, !12, i64 15956, !12, i64 15957, !12, i64 15958, !12, i64 15959, !12, i64 15960, !6, i64 15968, !25, i64 15976, !25, i64 15992, !25, i64 16008, !26, i64 16024, !27, i64 16040, !14, i64 16056, !15, i64 16060, !6, i64 16072, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !15, i64 16112, !14, i64 16120, !16, i64 16124, !15, i64 16128, !15, i64 16136, !14, i64 16144, !14, i64 16148, !14, i64 16152, !12, i64 16156, !12, i64 16157, !16, i64 16160, !16, i64 16164, !14, i64 16168, !14, i64 16172, !16, i64 16176, !12, i64 16180, !12, i64 16181, !12, i64 16182, !12, i64 16183, !12, i64 16184, !12, i64 16185, !15, i64 16188, !6, i64 16200, !29, i64 16208, !14, i64 16212, !14, i64 16216, !12, i64 16220, !12, i64 16221, !6, i64 16224, !14, i64 16232, !16, i64 16236, !7, i64 16240, !30, i64 17920, !14, i64 18232, !12, i64 18236, !14, i64 18240, !14, i64 18244, !14, i64 18248, !14, i64 18252, !32, i64 18256, !33, i64 18276, !35, i64 18336, !36, i64 18448, !37, i64 18464, !38, i64 18480, !39, i64 18496, !40, i64 18512, !41, i64 18528, !42, i64 18544, !42, i64 18560, !14, i64 18576, !43, i64 18584, !6, i64 18600, !14, i64 18608, !14, i64 18612, !14, i64 18616, !14, i64 18620, !14, i64 18624, !14, i64 18628, !14, i64 18632, !14, i64 18636, !14, i64 18640, !14, i64 18644, !14, i64 18648, !29, i64 18652, !44, i64 18656, !12, i64 18660, !12, i64 18661, !12, i64 18662, !12, i64 18663, !12, i64 18664, !12, i64 18665, !12, i64 18666, !14, i64 18668, !34, i64 18672, !12, i64 18688, !12, i64 18689, !12, i64 18690, !14, i64 18692, !14, i64 18696, !14, i64 18700, !14, i64 18704, !14, i64 18708, !14, i64 18712, !34, i64 18716, !34, i64 18732, !14, i64 18748, !14, i64 18752, !14, i64 18756, !45, i64 18760, !45, i64 18808, !45, i64 18856, !45, i64 18904, !14, i64 18952, !14, i64 18956, !6, i64 18960, !6, i64 18968, !6, i64 18976, !16, i64 18984, !16, i64 18988, !12, i64 18992, !15, i64 18996, !15, i64 19004, !16, i64 19012, !14, i64 19016, !12, i64 19020, !12, i64 19021, !12, i64 19022, !14, i64 19024, !14, i64 19028, !14, i64 19032, !46, i64 19040, !34, i64 19104, !14, i64 19120, !14, i64 19124, !16, i64 19128, !14, i64 19132, !14, i64 19136, !14, i64 19140, !14, i64 19144, !47, i64 19152, !7, i64 19168, !14, i64 19184, !48, i64 19192, !6, i64 19208, !14, i64 19216, !49, i64 19224, !50, i64 19240, !52, i64 19280, !53, i64 19296, !6, i64 19312, !54, i64 19320, !56, i64 19360, !57, i64 19376, !14, i64 19392, !14, i64 19396, !16, i64 19400, !16, i64 19404, !15, i64 19408, !58, i64 19416, !62, i64 23144, !14, i64 23264, !14, i64 23268, !14, i64 23272, !14, i64 23276, !16, i64 23280, !16, i64 23284, !14, i64 23288, !22, i64 23292, !64, i64 23308, !16, i64 23356, !16, i64 23360, !12, i64 23364, !12, i64 23365, !16, i64 23368, !16, i64 23372, !16, i64 23376, !16, i64 23380, !17, i64 23384, !17, i64 23386, !59, i64 23392, !39, i64 23408, !65, i64 23424, !65, i64 23440, !7, i64 23456, !12, i64 23457, !16, i64 23460, !66, i64 23464, !67, i64 23480, !68, i64 23496, !69, i64 23512, !70, i64 23528, !14, i64 23544, !7, i64 23552, !12, i64 23608, !71, i64 23612, !6, i64 23616, !66, i64 23624, !6, i64 23640, !6, i64 23648, !16, i64 23656, !12, i64 23660, !14, i64 23664, !14, i64 23668, !14, i64 23672, !14, i64 23676, !66, i64 23680, !72, i64 23696, !7, i64 23720, !7, i64 23721, !7, i64 23722, !12, i64 23723, !7, i64 23724, !14, i64 23728, !73, i64 23732, !74, i64 23752, !7, i64 23792, !14, i64 24032, !14, i64 24036, !16, i64 24040, !14, i64 24044, !14, i64 24048, !14, i64 24052, !59, i64 24056}
!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, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !6, i64 72, !6, i64 80, !16, i64 88, !12, i64 92, !6, i64 96, !15, i64 104, !12, i64 112, !12, i64 113, !12, i64 114, !12, i64 115, !12, i64 116, !12, i64 117, !12, i64 118, !12, i64 119, !16, i64 120, !12, i64 124, !12, i64 125, !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, !12, i64 208, !12, i64 209, !12, i64 210, !12, i64 211, !12, i64 212, !12, i64 213, !12, i64 214, !16, i64 216, !14, i64 220, !14, i64 224, !14, i64 228, !14, i64 232, !14, i64 236, !15, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !6, i64 3576, !15, i64 3584, !7, i64 3592, !16, i64 3600, !16, i64 3604, !12, i64 3608, !12, i64 3609, !12, i64 3610, !12, i64 3611, !14, i64 3612, !7, i64 3616, !12, i64 14048, !15, i64 14052, !7, i64 14060, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !7, i64 14192, !7, i64 14212, !7, i64 14232, !16, i64 14252, !12, i64 14256, !12, i64 14257, !7, i64 14258, !12, i64 14259, !17, i64 14260, !18, i64 14264}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!19 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !15, i64 24, !15, i64 32, !14, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !15, i64 60, !16, i64 68, !16, i64 72, !15, i64 76, !15, i64 84, !15, i64 92, !15, i64 100, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !14, i64 148, !15, i64 152, !15, i64 160, !16, i64 168, !15, i64 172, !15, i64 180, !15, i64 188, !15, i64 196, !16, i64 204, !12, i64 208, !12, i64 209, !12, i64 210, !16, i64 212, !16, i64 216, !7, i64 220}
!21 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !22, i64 28, !14, i64 44, !23, i64 48, !7, i64 64, !16, i64 448, !7, i64 452, !6, i64 520}
!22 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!23 = !{!"_ZTS8ImVectorI6ImVec2E", !14, i64 0, !14, i64 4, !6, i64 8}
!24 = !{!"double", !7, i64 0}
!25 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!29 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!30 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !31, i64 280, !31, i64 296}
!31 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!32 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !14, i64 8, !14, i64 12, !12, i64 16}
!33 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !34, i64 12, !34, i64 28, !34, i64 44}
!34 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!35 = !{!"_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, !12, i64 56, !34, i64 60, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!36 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!45 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !34, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44}
!46 = !{!"_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}
!47 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!48 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS6ImPoolI10ImGuiTableE", !51, i64 0, !27, i64 16, !14, i64 32, !14, i64 36}
!51 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!52 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !55, i64 0, !27, i64 16, !14, i64 32, !14, i64 36}
!55 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !18, i64 24, !59, i64 40, !59, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !60, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720}
!59 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!60 = !{!"_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, !61, i64 32}
!61 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !14, i64 3588, !14, i64 3592}
!62 = !{!"_ZTS6ImFont", !52, i64 0, !16, i64 16, !16, i64 20, !18, i64 24, !63, 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}
!63 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!64 = !{!"_ZTS21ImGuiComboPreviewData", !34, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!65 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!66 = !{!"_ZTS15ImGuiTextBuffer", !59, i64 0}
!67 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!68 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !59, i64 0}
!69 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !59, i64 0}
!70 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!71 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!72 = !{!"_ZTS14ImGuiTextIndex", !40, i64 0, !14, i64 16}
!73 = !{!"_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, !14, i64 8, !14, i64 12}
!74 = !{!"_ZTS14ImGuiStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !75, i64 16, !12, i64 32, !16, i64 36}
!75 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!76 = !{i8 0, i8 2}
!77 = !{}
!78 = !{!11, !14, i64 15948}
!79 = !{!11, !14, i64 15944}
!80 = !{!81, !14, i64 608}
!81 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !15, i64 132, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !12, i64 180, !12, i64 181, !12, i64 182, !12, i64 183, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !12, i64 189, !12, i64 190, !12, i64 191, !12, i64 192, !7, i64 193, !17, i64 194, !17, i64 196, !17, i64 198, !17, i64 200, !17, i64 202, !14, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !12, i64 211, !14, i64 212, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !14, i64 220, !14, i64 221, !14, i64 222, !15, i64 224, !15, i64 232, !39, i64 240, !82, i64 256, !34, i64 488, !34, i64 504, !34, i64 520, !34, i64 536, !34, i64 552, !34, i64 568, !34, i64 584, !85, i64 600, !85, i64 604, !14, i64 608, !16, i64 612, !16, i64 616, !27, i64 624, !86, i64 640, !16, i64 656, !14, i64 660, !6, i64 664, !87, i64 672, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 936, !14, i64 968, !14, i64 972, !14, i64 976, !12, i64 980}
!82 = !{!"_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, !83, i64 68, !83, i64 72, !83, i64 76, !15, i64 80, !44, i64 88, !17, i64 92, !17, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !15, i64 100, !84, i64 108, !14, i64 136, !14, i64 140, !25, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !16, i64 188, !16, i64 192, !52, i64 200, !52, i64 216}
!83 = !{!"_ZTS6ImVec1", !16, i64 0}
!84 = !{!"_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}
!85 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!86 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!87 = !{!"_ZTS10ImDrawList", !88, i64 0, !18, i64 16, !89, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !90, i64 88, !91, i64 104, !23, i64 120, !92, i64 136, !93, i64 168, !16, i64 192}
!88 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!89 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!90 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!91 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!92 = !{!"_ZTS15ImDrawCmdHeader", !22, i64 0, !6, i64 16, !14, i64 24}
!93 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !53, i64 8}
!94 = !{!11, !14, i64 16024}
!95 = !{!11, !12, i64 15957}
!96 = !{!81, !12, i64 190}
!97 = !{!11, !14, i64 18560}
!98 = !{!81, !14, i64 204}
!99 = !{!100, !14, i64 0}
!100 = !{!"_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}
!101 = !{!100, !6, i64 8}
!102 = !{!81, !12, i64 188}
!103 = !{!81, !14, i64 20}
!104 = !{!11, !24, i64 15936}
!105 = !{!81, !16, i64 612}
!106 = !{!81, !17, i64 198}
!107 = !{!11, !14, i64 16056}
!108 = !{!81, !17, i64 200}
!109 = !{!110, !6, i64 0}
!110 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !33, i64 8, !111, i64 68}
!111 = !{!"_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}
!112 = !{!81, !6, i64 872}
!113 = !{!81, !14, i64 240}
!114 = !{!11, !6, i64 16072}
!115 = !{i64 0, i64 4, !116, i64 4, i64 4, !116, i64 8, i64 4, !116, i64 12, i64 4, !117, i64 16, i64 4, !117, i64 20, i64 4, !117, i64 24, i64 4, !117, i64 28, i64 4, !117, i64 32, i64 4, !117, i64 36, i64 4, !117, i64 40, i64 4, !117, i64 44, i64 4, !117, i64 48, i64 4, !117, i64 52, i64 4, !117, i64 56, i64 4, !117}
!116 = !{!14, !14, i64 0}
!117 = !{!16, !16, i64 0}
!118 = !{!11, !14, i64 18576}
!119 = !{!81, !6, i64 880}
!120 = !{!81, !14, i64 16}
!121 = !{!11, !14, i64 18244}
!122 = !{!81, !14, i64 968}
!123 = !{!81, !44, i64 344}
!124 = !{!100, !14, i64 24}
!125 = !{!11, !14, i64 18336}
!126 = !{!11, !14, i64 18340}
!127 = !{!11, !14, i64 18344}
!128 = !{!11, !16, i64 18368}
!129 = !{!11, !16, i64 18372}
!130 = !{!11, !16, i64 18384}
!131 = !{!81, !16, i64 148}
!132 = !{!81, !16, i64 156}
!133 = !{!11, !16, i64 18388}
!134 = !{!81, !16, i64 152}
!135 = !{!81, !16, i64 160}
!136 = !{!11, !12, i64 18392}
!137 = !{!11, !14, i64 18348}
!138 = !{!81, !7, i64 217}
!139 = !{!81, !12, i64 182}
!140 = !{!81, !12, i64 192}
!141 = !{i64 0, i64 4, !117, i64 4, i64 4, !117, i64 8, i64 4, !117, i64 12, i64 4, !117}
!142 = !{!81, !6, i64 664}
!143 = !{!81, !14, i64 432}
!144 = !{!81, !12, i64 980}
!145 = !{!11, !6, i64 18976}
!146 = !{!81, !6, i64 8}
!147 = !{!81, !14, i64 120}
!148 = !{!149, !149, i64 0}
!149 = !{!"long", !7, i64 0}
!150 = !{!81, !7, i64 216}
!151 = !{!81, !7, i64 218}
!152 = !{!81, !16, i64 48}
!153 = !{!81, !16, i64 40}
!154 = !{!81, !16, i64 52}
!155 = !{!81, !16, i64 44}
!156 = !{!81, !16, i64 92}
!157 = !{!20, !16, i64 48}
!158 = !{!20, !16, i64 12}
!159 = !{!20, !16, i64 76}
!160 = !{!11, !16, i64 18436}
!161 = !{!81, !16, i64 356}
!162 = !{!11, !16, i64 18440}
!163 = !{!81, !16, i64 360}
!164 = !{!11, !6, i64 16080}
!165 = !{!11, !14, i64 16148}
!166 = !{!11, !14, i64 16152}
!167 = !{!17, !17, i64 0}
!168 = !{!81, !12, i64 186}
!169 = !{!81, !12, i64 185}
!170 = !{!81, !16, i64 96}
!171 = !{!81, !16, i64 104}
!172 = !{!81, !16, i64 100}
!173 = !{!81, !16, i64 108}
!174 = !{!81, !7, i64 208}
!175 = !{!81, !7, i64 209}
!176 = !{!81, !12, i64 211}
!177 = !{!15, !16, i64 4}
!178 = !{!81, !14, i64 212}
!179 = !{!81, !14, i64 400}
!180 = !{!81, !16, i64 224}
!181 = !{!81, !16, i64 88}
!182 = !{!81, !6, i64 888}
!183 = !{!11, !12, i64 126}
!184 = !{!11, !16, i64 15400}
!185 = !{!81, !7, i64 193}
!186 = !{!81, !12, i64 181}
!187 = !{!81, !12, i64 180}
!188 = !{!15, !16, i64 0}
!189 = !{!20, !16, i64 116}
!190 = !{!81, !16, i64 80}
!191 = !{!81, !16, i64 520}
!192 = !{!81, !16, i64 508}
!193 = !{!81, !16, i64 524}
!194 = !{!81, !16, i64 512}
!195 = !{!81, !16, i64 528}
!196 = !{!81, !16, i64 516}
!197 = !{!81, !16, i64 532}
!198 = !{!81, !16, i64 616}
!199 = !{!81, !16, i64 56}
!200 = !{!81, !16, i64 140}
!201 = !{!81, !16, i64 60}
!202 = !{!81, !16, i64 84}
!203 = !{!81, !16, i64 144}
!204 = !{!87, !14, i64 0}
!205 = !{!206, !14, i64 32}
!206 = !{!"_ZTS9ImDrawCmd", !22, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!207 = !{!11, !6, i64 15392}
!208 = !{!62, !6, i64 64}
!209 = !{!210, !6, i64 8}
!210 = !{!"_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, !38, i64 88, !211, i64 104, !212, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!211 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!212 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!213 = !{!87, !14, i64 32}
!214 = !{!11, !6, i64 18960}
!215 = !{!11, !6, i64 18600}
!216 = !{!81, !6, i64 904}
!217 = !{!81, !16, i64 72}
!218 = !{!81, !16, i64 76}
!219 = !{!81, !16, i64 504}
!220 = !{!81, !16, i64 132}
!221 = !{!81, !16, i64 536}
!222 = !{!81, !16, i64 136}
!223 = !{!81, !16, i64 540}
!224 = !{!81, !16, i64 592}
!225 = !{!81, !16, i64 596}
!226 = !{!81, !16, i64 324}
!227 = !{!81, !17, i64 350}
!228 = !{!81, !17, i64 348}
!229 = !{!81, !12, i64 352}
!230 = !{!81, !12, i64 353}
!231 = !{!81, !12, i64 354}
!232 = !{!81, !14, i64 392}
!233 = !{!81, !14, i64 396}
!234 = !{!81, !6, i64 416}
!235 = !{!81, !6, i64 424}
!236 = !{!81, !14, i64 436}
!237 = !{!81, !14, i64 440}
!238 = !{!81, !16, i64 444}
!239 = !{!81, !16, i64 448}
!240 = !{!34, !16, i64 0}
!241 = !{!34, !16, i64 4}
!242 = !{!34, !16, i64 8}
!243 = !{!34, !16, i64 12}
!244 = !{!81, !17, i64 602}
!245 = !{!81, !17, i64 600}
!246 = !{!81, !14, i64 124}
!247 = !{!11, !14, i64 18248}
!248 = !{!11, !14, i64 18252}
!249 = !{!81, !12, i64 184}
!250 = !{!81, !17, i64 194}
!251 = !{!11, !12, i64 18664}
!252 = !{!81, !6, i64 912}
!253 = !{!11, !12, i64 23608}
!254 = !{!81, !16, i64 488}
!255 = !{!81, !16, i64 496}
!256 = !{!81, !16, i64 492}
!257 = !{!81, !16, i64 500}
!258 = !{!20, !16, i64 0}
!259 = !{!81, !12, i64 189}
!260 = !{!81, !7, i64 219}
!261 = !{!81, !12, i64 187}
!262 = !{!11, !12, i64 132}
!263 = !{!11, !12, i64 133}
!264 = !{!11, !7, i64 23722}


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