; LLVM IR from Samson-Mano/EM_Propogation_simulation :: EM_Propogation_simulation/src/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.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.1, %struct.ImVector.1, i32, i32, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, %struct.ImGuiStorage, i32, %struct.ImVec2, 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.ImGuiInputTextDeactivatedState, %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, i32, 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], i8, [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, 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.0, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.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.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.24 }
%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, 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.0, %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 [117 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.135 = 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui26IsWindowWithinBeginStackOfEP11ImGuiWindowS1_(ptr noundef, ptr noundef) #1

; 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: 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 3
  store ptr %101, ptr %9, align 8, !tbaa !5
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = icmp ne ptr %102, null
  br i1 %103, label %104, label %110

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

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

112:                                              ; preds = %110
  br label %115

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

114:                                              ; No predecessors!
  br label %115

115:                                              ; preds = %114, %112
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.ImGuiContext, ptr %116, i32 0, i32 12
  %118 = load i8, ptr %117, align 4, !tbaa !12, !range !79, !noundef !80
  %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.128, ptr noundef @.str.3, i32 noundef 6120, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #14
  unreachable

122:                                              ; No predecessors!
  br label %123

123:                                              ; preds = %122, %120
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.ImGuiContext, ptr %124, i32 0, i32 10
  %126 = load i32, ptr %125, align 4, !tbaa !81
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.ImGuiContext, ptr %127, i32 0, i32 9
  %129 = load i32, ptr %128, align 8, !tbaa !82
  %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.129, ptr noundef @.str.3, i32 noundef 6121, 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 !83
  %140 = load i8, ptr %11, align 1, !tbaa !83, !range !79, !noundef !80
  %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.130, ptr noundef @.str.3, i32 noundef 6134, 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 9
  %168 = load i32, ptr %167, align 8, !tbaa !82
  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 !84
  %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 !83
  %175 = load ptr, ptr %8, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.ImGuiContext, ptr %175, i32 0, i32 25
  %177 = getelementptr inbounds %struct.ImVector.3, ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 8, !tbaa !98
  %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 13
  %183 = load i8, ptr %182, align 1, !tbaa !99, !range !79, !noundef !80
  %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 !100
  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 !84
  %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 !83
  %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 82
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.ImGuiContext, ptr %203, i32 0, i32 83
  %205 = getelementptr inbounds %struct.ImVector.12, ptr %204, i32 0, i32 0
  %206 = load i32, ptr %205, align 8, !tbaa !101
  %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 !102
  %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 !103
  %214 = icmp ne i32 %210, %213
  %215 = zext i1 %214 to i32
  %216 = load i8, ptr %14, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !83
  %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 !105
  %226 = icmp ne ptr %222, %225
  %227 = zext i1 %226 to i32
  %228 = load i8, ptr %14, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !83
  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 !83, !range !79, !noundef !80
  %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 !106
  %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 !106, !range !79, !noundef !80
  %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 !83, !range !79, !noundef !80
  %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 !83, !range !79, !noundef !80
  %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 !107
  %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 !84
  %260 = load ptr, ptr %8, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.ImGuiContext, ptr %260, i32 0, i32 8
  %262 = load double, ptr %261, align 8, !tbaa !108
  %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 !109
  %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 !110
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiContext, ptr %268, i32 0, i32 27
  %270 = load i32, ptr %269, align 8, !tbaa !111
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %269, align 8, !tbaa !111
  %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 !112
  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 !107
  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 25
  %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 25
  %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 !113
  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 !83, !range !79, !noundef !80
  %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 !116
  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.131, ptr noundef @.str.3, i32 noundef 6170, 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 !117
  %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 29
  store ptr %333, ptr %335, align 8, !tbaa !118
  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 !113
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ImGuiContext, ptr %338, i32 0, i32 74
  %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 !119
  %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 25
  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 84
  %351 = load i32, ptr %350, align 8, !tbaa !121
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %350, align 8, !tbaa !121
  br label %353

353:                                              ; preds = %348, %332
  %354 = load i8, ptr %13, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !122
  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 !123
  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 70
  %369 = load i32, ptr %368, align 4, !tbaa !124
  %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 !125
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImGuiContext, ptr %372, i32 0, i32 29
  store ptr null, ptr %373, align 8, !tbaa !118
  %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 82
  %380 = load ptr, ptr %8, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiContext, ptr %380, i32 0, i32 83
  %382 = getelementptr inbounds %struct.ImVector.12, ptr %381, i32 0, i32 0
  %383 = load i32, ptr %382, align 8, !tbaa !101
  %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 !105
  %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 !126
  %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 !127
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.ImGuiContext, ptr %394, i32 0, i32 83
  %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 !103
  %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 !102
  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 !83
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  store i8 0, ptr %21, align 1, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  store i8 0, ptr %22, align 1, !tbaa !83
  %403 = load ptr, ptr %8, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiContext, ptr %403, i32 0, i32 75
  %405 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %404, i32 0, i32 0
  %406 = load i32, ptr %405, align 8, !tbaa !128
  %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 75
  %417 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %416, i32 0, i32 1
  %418 = load i32, ptr %417, align 4, !tbaa !129
  %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 !83
  %422 = load i8, ptr %20, align 1, !tbaa !83, !range !79, !noundef !80
  %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 75
  %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 75
  %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 !130
  %436 = load ptr, ptr %8, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 75
  %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 !130
  %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 75
  %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 75
  %460 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %459, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !129
  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 75
  %466 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %465, i32 0, i32 0
  %467 = load i32, ptr %466, align 8, !tbaa !128
  %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 75
  %478 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %477, i32 0, i32 2
  %479 = load i32, ptr %478, align 8, !tbaa !131
  %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 75
  %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 !132
  %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 !83
  %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 75
  %499 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %498, i32 0, i32 2
  %500 = load i32, ptr %499, align 8, !tbaa !131
  %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 75
  %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 !133
  %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 !83
  %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 75
  %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 75
  %519 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %518, i32 0, i32 2
  %520 = load i32, ptr %519, align 8, !tbaa !131
  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 75
  %524 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %523, i32 0, i32 0
  %525 = load i32, ptr %524, align 8, !tbaa !128
  %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 75
  %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 !134
  %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 75
  %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 !134
  %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 !135
  %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 !136
  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 75
  %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 !137
  %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 75
  %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 !137
  %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 !138
  %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 !139
  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 75
  %570 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %569, i32 0, i32 0
  %571 = load i32, ptr %570, align 8, !tbaa !128
  %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 75
  %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 !130
  br label %587

580:                                              ; preds = %567
  %581 = load i8, ptr %13, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !130
  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 75
  %590 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %589, i32 0, i32 0
  %591 = load i32, ptr %590, align 8, !tbaa !128
  %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 75
  %598 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %597, i32 0, i32 9
  %599 = load i8, ptr %598, align 8, !tbaa !140, !range !79, !noundef !80
  %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 75
  %603 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %602, i32 0, i32 3
  %604 = load i32, ptr %603, align 4, !tbaa !141
  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 75
  %608 = getelementptr inbounds %struct.ImGuiNextWindowData, ptr %607, i32 0, i32 0
  %609 = load i32, ptr %608, align 8, !tbaa !128
  %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 !106, !range !79, !noundef !80
  %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 !83, !range !79, !noundef !80
  %623 = trunc i8 %622 to i1
  br i1 %623, label %624, label %2643

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 !83
  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 !142
  %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 !83
  %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 !143
  %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 !144
  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 !145
  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 !146
  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 29
  store i32 -1, ptr %657, align 8, !tbaa !147
  %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 !148, !range !79, !noundef !80
  %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 !83
  %665 = load ptr, ptr %8, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImGuiContext, ptr %665, i32 0, i32 131
  %667 = load ptr, ptr %666, align 8, !tbaa !149
  %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 !107
  %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 !83
  br label %676

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

679:                                              ; preds = %676
  %680 = load i8, ptr %11, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !150
  %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 !151
  %693 = sext i32 %692 to i64
  store i64 %693, ptr %29, align 8, !tbaa !152
  %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 !150
  %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 !150
  %701 = load i64, ptr %29, align 8, !tbaa !152
  %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 !151
  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 !154
  %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 !154
  %720 = add i8 %719, -1
  store i8 %720, ptr %718, align 8, !tbaa !154
  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 !142
  %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 !142
  %731 = add i8 %730, -1
  store i8 %731, ptr %729, align 1, !tbaa !142
  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 !155
  %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 !155
  %742 = add i8 %741, -1
  store i8 %742, ptr %740, align 2, !tbaa !155
  br label %743

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

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

749:                                              ; preds = %746
  %750 = load i8, ptr %22, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !142
  br label %755

755:                                              ; preds = %752, %749, %743
  %756 = load i8, ptr %14, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !142
  %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 !83, !range !79, !noundef !80
  %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 !156
  %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 !157
  br label %778

778:                                              ; preds = %771, %768
  %779 = load i8, ptr %22, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !158
  %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 !159
  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 !130
  %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 !130
  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 !160
  %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 !161
  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 !162
  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 !163
  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 !161
  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 !130
  %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 !161
  %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 !164
  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 !130
  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 !165
  %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 !166
  %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 75
  %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 !167
  %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 22
  %878 = getelementptr inbounds %struct.ImVec2, ptr %877, i32 0, i32 0
  store float %874, ptr %878, align 4, !tbaa !168
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImGuiContext, ptr %879, i32 0, i32 75
  %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 !169
  %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 22
  %887 = getelementptr inbounds %struct.ImVec2, ptr %886, i32 0, i32 1
  store float %883, ptr %887, align 4, !tbaa !170
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #13
  %888 = load i8, ptr %11, align 1, !tbaa !83, !range !79, !noundef !80
  %889 = trunc i8 %888 to i1
  %890 = zext i1 %889 to i8
  store i8 %890, ptr %33, align 1, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #13
  %891 = load i8, ptr %11, align 1, !tbaa !83, !range !79, !noundef !80
  %892 = trunc i8 %891 to i1
  %893 = zext i1 %892 to i8
  store i8 %893, ptr %34, align 1, !tbaa !83
  %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 30
  %910 = load ptr, ptr %909, align 8, !tbaa !171
  %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 40
  %916 = load i32, ptr %915, align 4, !tbaa !172
  %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 41
  %921 = load i32, ptr %920, align 8, !tbaa !173
  %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 76
  %931 = getelementptr inbounds [5 x i16], ptr %930, i64 0, i64 0
  %932 = load i16, ptr %931, align 2, !tbaa !174
  %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 !175
  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 !175, !range !79, !noundef !80
  %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 !176, !range !79, !noundef !80
  %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 !176
  %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 !176, !range !79, !noundef !80
  %955 = trunc i8 %954 to i1
  br i1 %955, label %957, label %956

956:                                              ; preds = %943
  store i8 1, ptr %34, align 1, !tbaa !83
  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 !176
  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 !175
  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 !130
  %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 !177
  %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 !178
  %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 !179
  %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 !180
  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 !130
  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 !176, !range !79, !noundef !80
  %994 = trunc i8 %993 to i1
  br i1 %994, label %1014, label %995

995:                                              ; preds = %990
  %996 = load i8, ptr %21, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !181
  %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 !156
  store i8 1, ptr %33, align 1, !tbaa !83
  br label %1004

1004:                                             ; preds = %998, %995
  %1005 = load i8, ptr %22, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !182
  %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 !158
  store i8 1, ptr %34, align 1, !tbaa !83
  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 !183
  %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 !184
  %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 !83, !range !79, !noundef !80
  %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 !183
  %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 !185, !range !79, !noundef !80
  %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 !156
  %1045 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 0
  %1046 = load float, ptr %1045, align 4, !tbaa !181
  %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 !181
  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 !156
  store i8 1, ptr %33, align 1, !tbaa !83
  br label %1056

1056:                                             ; preds = %1051, %1029, %1026
  %1057 = load i8, ptr %22, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !184
  %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 !185, !range !79, !noundef !80
  %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 !158
  %1075 = getelementptr inbounds %struct.ImVec2, ptr %38, i32 0, i32 1
  %1076 = load float, ptr %1075, align 4, !tbaa !182
  %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 !182
  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 !158
  store i8 1, ptr %34, align 1, !tbaa !83
  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 !176, !range !79, !noundef !80
  %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 !130
  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 !176, !range !79, !noundef !80
  %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 !130
  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 !130
  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 !83, !range !79, !noundef !80
  %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 !186
  %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 !83, !range !79, !noundef !80
  %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 83
  %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 !130
  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 !143, !range !79, !noundef !80
  %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.132, ptr noundef @.str.3, i32 noundef 6426, 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 26
  %1168 = getelementptr inbounds %struct.ImVector.2, ptr %1167, i32 0, i32 0
  %1169 = load i32, ptr %1168, align 8, !tbaa !187
  %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 !110
  %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 26
  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 !83, !range !79, !noundef !80
  %1181 = trunc i8 %1180 to i1
  br i1 %1181, label %1191, label %1182

1182:                                             ; preds = %1179
  %1183 = load i8, ptr %24, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !130
  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 !188
  %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 !142
  %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 !83
  %1207 = load i8, ptr %42, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !130
  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 !83, !range !79, !noundef !80
  %1234 = trunc i8 %1233 to i1
  br i1 %1234, label %1243, label %1235

1235:                                             ; preds = %1232
  %1236 = load i8, ptr %25, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !130
  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 !83, !range !79, !noundef !80
  %1249 = trunc i8 %1248 to i1
  br i1 %1249, label %1258, label %1250

1250:                                             ; preds = %1247
  %1251 = load i8, ptr %24, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !130
  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 !83, !range !79, !noundef !80
  %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 !130
  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 !189
  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 !190
  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 !191
  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 !192
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #13
  store i8 0, ptr %55, align 1, !tbaa !83
  %1333 = load i8, ptr %14, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !83
  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 !83
  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 !83
  %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 !193
  %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.133, ptr noundef @.str.3, i32 noundef 6485, 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 !194, !range !79, !noundef !80
  %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 5
  %1387 = load float, ptr %1386, align 8, !tbaa !195
  %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 !192
  %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 5
  %1395 = load float, ptr %1394, align 8, !tbaa !195
  %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 !120
  %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 !176, !range !79, !noundef !80
  %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 !83
  store i8 1, ptr %33, align 1, !tbaa !83
  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 !196
  %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 !176, !range !79, !noundef !80
  %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 !156
  %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 !158
  %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 !179
  %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 !180
  %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 !83, !range !79, !noundef !80
  %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 !83, !range !79, !noundef !80
  %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 !181
  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 !181
  br label %1460

1460:                                             ; preds = %1457, %1454
  %1461 = phi float [ %1456, %1454 ], [ %1459, %1457 ]
  store float %1461, ptr %67, align 4, !tbaa !120
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %1462 = load i8, ptr %34, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !182
  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 !182
  br label %1470

1470:                                             ; preds = %1467, %1464
  %1471 = phi float [ %1466, %1464 ], [ %1469, %1467 ]
  store float %1471, ptr %68, align 4, !tbaa !120
  %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 !182
  %1478 = load float, ptr %68, align 4, !tbaa !120
  %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 !197
  %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 !181
  %1498 = load float, ptr %67, align 4, !tbaa !120
  %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 !197, !range !79, !noundef !80
  %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 !198
  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 !199
  %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 !199, !range !79, !noundef !80
  %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 !197, !range !79, !noundef !80
  %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 !182
  %1539 = load float, ptr %68, align 4, !tbaa !120
  %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 !197
  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 !197, !range !79, !noundef !80
  %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 !198
  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 !199, !range !79, !noundef !80
  %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 !198
  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 !130
  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 !200
  %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 !178
  %1583 = fadd float %1582, %1579
  store float %1583, ptr %1581, align 8, !tbaa !178
  %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 !201
  %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 !180
  %1591 = fadd float %1590, %1587
  store float %1591, ptr %1589, align 4, !tbaa !180
  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 !83, !range !79, !noundef !80
  %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 !145
  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 !145
  %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 !202
  %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 !177
  %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 !203
  %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 !204
  %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 !179
  %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 !205
  %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 !202
  %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 !157
  %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 !178
  %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 !206
  %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 !204
  %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 !159
  %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 !180
  %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 !207
  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 !208
  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 !161
  br label %1698

1698:                                             ; preds = %1694, %1690
  %1699 = phi float [ %1693, %1690 ], [ %1697, %1694 ]
  store float %1699, ptr %73, align 4, !tbaa !120
  %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 !203
  %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 !165
  %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 !161
  %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 !209
  %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 !205
  %1727 = fadd float 5.000000e-01, %1726
  %1728 = load float, ptr %73, align 4, !tbaa !120
  %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 !210
  %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 !206
  %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 !165
  %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 !161
  %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 !211
  %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 !207
  %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 !161
  %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 !212
  %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 !157
  %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 !157
  %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 !213
  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 5
  %1799 = load float, ptr %1798, align 8, !tbaa !195
  %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 !213
  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 !214
  %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 !165
  %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 !215
  %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 !216
  %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 !217
  %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 !218
  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 !130
  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 !130
  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 !219
  %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 !220
  %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 !146
  %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 !221
  %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 !146
  %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 !222
  %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.134, ptr noundef @.str.3, i32 noundef 6600, 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 !146
  %1874 = load ptr, ptr %8, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.ImGuiContext, ptr %1874, i32 0, i32 4
  %1876 = load ptr, ptr %1875, align 8, !tbaa !224
  %1877 = getelementptr inbounds %struct.ImFont, ptr %1876, i32 0, i32 6
  %1878 = load ptr, ptr %1877, align 8, !tbaa !225
  %1879 = getelementptr inbounds %struct.ImFontAtlas, ptr %1878, i32 0, i32 2
  %1880 = load ptr, ptr %1879, align 8, !tbaa !226
  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 !83
  %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 !83, !range !79, !noundef !80
  %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 26
  %1897 = getelementptr inbounds %struct.ImVector.2, ptr %1896, i32 0, i32 0
  %1898 = load i32, ptr %1897, align 8, !tbaa !187
  %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 26
  %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 26
  %1907 = getelementptr inbounds %struct.ImVector.2, ptr %1906, i32 0, i32 0
  %1908 = load i32, ptr %1907, align 8, !tbaa !187
  %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 !83
  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 !146
  %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 !230
  %1941 = icmp sgt i32 %1940, 0
  %1942 = zext i1 %1941 to i8
  store i8 %1942, ptr %81, align 1, !tbaa !83
  %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 !146
  %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 !222
  %1950 = icmp eq i32 %1949, 0
  br i1 %1950, label %1951, label %1958

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

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

1957:                                             ; preds = %1954
  store i8 1, ptr %76, align 1, !tbaa !83
  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 !83, !range !79, !noundef !80
  %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 !146
  %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 !146
  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 129
  %1971 = load ptr, ptr %1970, align 8, !tbaa !231
  %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 129
  %1976 = load ptr, ptr %1975, align 8, !tbaa !231
  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 86
  %1980 = load ptr, ptr %1979, align 8, !tbaa !232
  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 !83, !range !79, !noundef !80
  %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 !233
  %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 !233
  %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 !83
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #13
  store i8 1, ptr %84, align 1, !tbaa !83
  %2001 = load ptr, ptr %10, align 8, !tbaa !5
  %2002 = load i8, ptr %83, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !120
  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 !83, !range !79, !noundef !80
  %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 !146
  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 !83
  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 !83
  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 !234
  %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 !234
  br label %2070

2040:                                             ; preds = %2022
  %2041 = load i8, ptr %85, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !214
  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 !157
  %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 !165
  %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 !177
  %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 !178
  %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 !120
  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 !235
  %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 !235
  br label %2112

2082:                                             ; preds = %2070
  %2083 = load i8, ptr %86, align 1, !tbaa !83, !range !79, !noundef !80
  %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 !216
  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 !159
  %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 !217
  %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 !179
  %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 !180
  %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 !120
  %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 !203
  %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 !236
  %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 !165
  %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 !161
  %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 !237
  %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 !205
  %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 !238
  %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 !217
  %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 !161
  %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 !239
  %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 !237
  %2167 = load float, ptr %87, align 4, !tbaa !120
  %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 !240
  %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 !239
  %2178 = load float, ptr %88, align 4, !tbaa !120
  %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 !241
  %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 !145
  %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 !202
  %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 !236
  %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 !165
  %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 !177
  %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 !242
  %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 !204
  %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 !238
  %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 !217
  %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 !179
  %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 !243
  %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 !242
  %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 !234
  %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 !234
  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 !157
  %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 !165
  %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 !177
  %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 !178
  %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 !244
  %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 !243
  %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 !235
  %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 !235
  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 !159
  %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 !217
  %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 !179
  %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 !180
  %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 !245
  %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 !177
  %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 !165
  %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 !236
  %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 !246
  %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 !247
  %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 !248
  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 !202
  %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 !165
  %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 !236
  %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 !177
  %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 !248
  %2366 = fpext float %2365 to double
  %2367 = fadd double %2360, %2366
  store double %2367, ptr %89, align 8, !tbaa !249
  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 !204
  %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 !217
  %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 !238
  %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 !179
  %2388 = fpext float %2387 to double
  %2389 = fadd double %2384, %2388
  store double %2389, ptr %90, align 8, !tbaa !249
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #13
  %2390 = load double, ptr %89, align 8, !tbaa !249
  %2391 = fptrunc double %2390 to float
  %2392 = load double, ptr %90, align 8, !tbaa !249
  %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 !130
  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 !249
  %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 !250
  %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 !249
  %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 !251
  %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 !130
  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 !130
  %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 !130
  %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 !130
  %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 !130
  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 !130
  %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 !130
  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 !252
  %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 !253
  %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 !254
  %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 !255
  %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 !126
  %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 !256
  %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 !257
  %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 !256
  %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 1, ptr %2475, align 8, !tbaa !258
  %2476 = load ptr, ptr %10, align 8, !tbaa !5
  %2477 = getelementptr inbounds %struct.ImGuiWindow, ptr %2476, i32 0, i32 62
  %2478 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2477, i32 0, i32 19
  store i8 0, ptr %2478, align 1, !tbaa !259
  %2479 = load ptr, ptr %10, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiWindow, ptr %2479, i32 0, i32 24
  %2481 = getelementptr inbounds %struct.ImVec2, ptr %2480, i32 0, i32 1
  %2482 = load float, ptr %2481, align 4, !tbaa !218
  %2483 = fcmp ogt float %2482, 0.000000e+00
  %2484 = load ptr, ptr %10, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.ImGuiWindow, ptr %2484, i32 0, i32 62
  %2486 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2485, i32 0, i32 20
  %2487 = zext i1 %2483 to i8
  store i8 %2487, ptr %2486, align 2, !tbaa !260
  %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 21
  store i8 0, ptr %2490, align 1, !tbaa !261
  %2491 = load ptr, ptr %10, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiWindow, ptr %2491, i32 0, i32 62
  %2493 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2492, i32 0, i32 23
  %2494 = load ptr, ptr %9, align 8, !tbaa !5
  %2495 = getelementptr inbounds %struct.ImGuiStyle, ptr %2494, i32 0, i32 15
  %2496 = getelementptr inbounds %struct.ImVec2, ptr %2495, i32 0, i32 0
  %2497 = load float, ptr %2496, align 4, !tbaa !166
  %2498 = load i8, ptr %14, align 1, !tbaa !83, !range !79, !noundef !80
  %2499 = trunc i8 %2498 to i1
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %2493, float noundef %2497, i1 noundef zeroext %2499)
  %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 8, !tbaa !262
  %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
  store i32 0, ptr %2505, align 4, !tbaa !263
  %2506 = load ptr, ptr %10, align 8, !tbaa !5
  %2507 = getelementptr inbounds %struct.ImGuiWindow, ptr %2506, i32 0, i32 62
  %2508 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2507, i32 0, i32 26
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2508, i32 noundef 0)
  %2509 = load ptr, ptr %10, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.ImGuiWindow, ptr %2509, i32 0, i32 76
  %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 %2510, ptr %2513, align 8, !tbaa !264
  %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 28
  store ptr null, ptr %2516, align 8, !tbaa !265
  %2517 = load ptr, ptr %10, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.ImGuiWindow, ptr %2517, i32 0, i32 62
  %2519 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2518, i32 0, i32 30
  store i32 1, ptr %2519, align 4, !tbaa !266
  %2520 = load ptr, ptr %17, align 8, !tbaa !5
  %2521 = icmp ne ptr %2520, null
  br i1 %2521, label %2522, label %2527

2522:                                             ; preds = %2307
  %2523 = load ptr, ptr %17, align 8, !tbaa !5
  %2524 = getelementptr inbounds %struct.ImGuiWindow, ptr %2523, i32 0, i32 62
  %2525 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2524, i32 0, i32 30
  %2526 = load i32, ptr %2525, align 4, !tbaa !266
  br label %2528

2527:                                             ; preds = %2307
  br label %2528

2528:                                             ; preds = %2527, %2522
  %2529 = phi i32 [ %2526, %2522 ], [ 1, %2527 ]
  %2530 = load ptr, ptr %10, align 8, !tbaa !5
  %2531 = getelementptr inbounds %struct.ImGuiWindow, ptr %2530, i32 0, i32 62
  %2532 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2531, i32 0, i32 31
  store i32 %2529, ptr %2532, align 8, !tbaa !267
  %2533 = load ptr, ptr %10, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiWindow, ptr %2533, i32 0, i32 74
  %2535 = load float, ptr %2534, align 8, !tbaa !213
  %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 %2535, ptr %2538, align 4, !tbaa !268
  %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
  store float -1.000000e+00, ptr %2541, align 8, !tbaa !269
  %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 62
  %2547 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2546, i32 0, i32 35
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2547, i32 noundef 0)
  %2548 = load ptr, ptr %10, align 8, !tbaa !5
  %2549 = getelementptr inbounds %struct.ImGuiWindow, ptr %2548, i32 0, i32 49
  %2550 = load i8, ptr %2549, align 8, !tbaa !183
  %2551 = sext i8 %2550 to i32
  %2552 = icmp sgt i32 %2551, 0
  br i1 %2552, label %2553, label %2558

2553:                                             ; preds = %2528
  %2554 = load ptr, ptr %10, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.ImGuiWindow, ptr %2554, i32 0, i32 49
  %2556 = load i8, ptr %2555, align 8, !tbaa !183
  %2557 = add i8 %2556, -1
  store i8 %2557, ptr %2555, align 8, !tbaa !183
  br label %2558

2558:                                             ; preds = %2553, %2528
  %2559 = load ptr, ptr %10, align 8, !tbaa !5
  %2560 = getelementptr inbounds %struct.ImGuiWindow, ptr %2559, i32 0, i32 50
  %2561 = load i8, ptr %2560, align 1, !tbaa !184
  %2562 = sext i8 %2561 to i32
  %2563 = icmp sgt i32 %2562, 0
  br i1 %2563, label %2564, label %2569

2564:                                             ; preds = %2558
  %2565 = load ptr, ptr %10, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.ImGuiWindow, ptr %2565, i32 0, i32 50
  %2567 = load i8, ptr %2566, align 1, !tbaa !184
  %2568 = add i8 %2567, -1
  store i8 %2568, ptr %2566, align 1, !tbaa !184
  br label %2569

2569:                                             ; preds = %2564, %2558
  %2570 = load i8, ptr %55, align 1, !tbaa !83, !range !79, !noundef !80
  %2571 = trunc i8 %2570 to i1
  br i1 %2571, label %2572, label %2575

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

2575:                                             ; preds = %2572, %2569
  %2576 = load i32, ptr %7, align 4, !tbaa !9
  %2577 = and i32 %2576, 1
  %2578 = icmp ne i32 %2577, 0
  br i1 %2578, label %2603, label %2579

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

2603:                                             ; preds = %2579, %2575
  %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 1
  store i16 0, ptr %2606, align 2, !tbaa !274
  %2607 = load ptr, ptr %10, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.ImGuiWindow, ptr %2607, i32 0, i32 70
  %2609 = getelementptr inbounds %struct.ImVec2ih, ptr %2608, i32 0, i32 0
  store i16 0, ptr %2609, align 8, !tbaa !275
  %2610 = load ptr, ptr %10, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiWindow, ptr %2610, i32 0, i32 21
  %2612 = load i32, ptr %2611, align 4, !tbaa !276
  %2613 = load ptr, ptr %8, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiContext, ptr %2613, i32 0, i32 71
  %2615 = load i32, ptr %2614, align 8, !tbaa !277
  %2616 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 0
  %2617 = getelementptr inbounds %struct.ImRect, ptr %72, i32 0, i32 1
  %2618 = call noundef zeroext i1 @_ZN5ImGui19IsMouseHoveringRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2616, ptr noundef nonnull align 4 dereferenceable(8) %2617, i1 noundef zeroext false)
  %2619 = zext i1 %2618 to i64
  %2620 = select i1 %2618, i32 1, i32 0
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %2612, i32 noundef %2615, i32 noundef %2620, ptr noundef nonnull align 4 dereferenceable(16) %72)
  %2621 = load ptr, ptr %8, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.ImGuiContext, ptr %2621, i32 0, i32 72
  %2623 = load i32, ptr %2622, align 4, !tbaa !278
  %2624 = icmp ne i32 %2623, 0
  br i1 %2624, label %2625, label %2642

2625:                                             ; preds = %2603
  %2626 = load ptr, ptr %10, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.ImGuiWindow, ptr %2626, i32 0, i32 2
  %2628 = load i32, ptr %2627, align 8, !tbaa !123
  %2629 = load ptr, ptr %8, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.ImGuiContext, ptr %2629, i32 0, i32 72
  %2631 = load i32, ptr %2630, align 4, !tbaa !278
  %2632 = icmp eq i32 %2628, %2631
  br i1 %2632, label %2641, label %2633

2633:                                             ; preds = %2625
  %2634 = load ptr, ptr %10, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiWindow, ptr %2634, i32 0, i32 21
  %2636 = load i32, ptr %2635, align 4, !tbaa !276
  %2637 = load ptr, ptr %8, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiContext, ptr %2637, i32 0, i32 72
  %2639 = load i32, ptr %2638, align 4, !tbaa !278
  %2640 = icmp eq i32 %2636, %2639
  br i1 %2640, label %2641, label %2642

2641:                                             ; preds = %2633, %2625
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %2642

2642:                                             ; preds = %2641, %2633, %2603
  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 %2645

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

2645:                                             ; preds = %2643, %2642
  %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 0
  %2649 = load ptr, ptr %10, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiWindow, ptr %2649, i32 0, i32 65
  %2651 = getelementptr inbounds %struct.ImRect, ptr %2650, i32 0, i32 1
  call void @_ZN5ImGui12PushClipRectERK6ImVec2S2_b(ptr noundef nonnull align 4 dereferenceable(8) %2648, ptr noundef nonnull align 4 dereferenceable(8) %2651, i1 noundef zeroext true)
  %2652 = load ptr, ptr %10, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiWindow, ptr %2652, i32 0, i32 33
  store i8 0, ptr %2653, align 8, !tbaa !279
  %2654 = load ptr, ptr %10, align 8, !tbaa !5
  %2655 = getelementptr inbounds %struct.ImGuiWindow, ptr %2654, i32 0, i32 43
  %2656 = load i16, ptr %2655, align 2, !tbaa !280
  %2657 = add i16 %2656, 1
  store i16 %2657, ptr %2655, align 2, !tbaa !280
  %2658 = load ptr, ptr %8, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.ImGuiContext, ptr %2658, i32 0, i32 75
  call void @_ZN19ImGuiNextWindowData10ClearFlagsEv(ptr noundef nonnull align 8 dereferenceable(108) %2659)
  %2660 = load i8, ptr %13, align 1, !tbaa !83, !range !79, !noundef !80
  %2661 = trunc i8 %2660 to i1
  br i1 %2661, label %2662, label %2878

2662:                                             ; preds = %2645
  %2663 = load i32, ptr %7, align 4, !tbaa !9
  %2664 = and i32 %2663, 16777216
  %2665 = icmp ne i32 %2664, 0
  br i1 %2665, label %2666, label %2789

2666:                                             ; preds = %2662
  %2667 = load i32, ptr %7, align 4, !tbaa !9
  %2668 = and i32 %2667, 1
  %2669 = icmp ne i32 %2668, 0
  br i1 %2669, label %2670, label %2671

2670:                                             ; preds = %2666
  br label %2673

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

2672:                                             ; No predecessors!
  br label %2673

2673:                                             ; preds = %2672, %2670
  %2674 = load i32, ptr %7, align 4, !tbaa !9
  %2675 = and i32 %2674, 64
  %2676 = icmp ne i32 %2675, 0
  br i1 %2676, label %2754, label %2677

2677:                                             ; preds = %2673
  %2678 = load ptr, ptr %10, align 8, !tbaa !5
  %2679 = getelementptr inbounds %struct.ImGuiWindow, ptr %2678, i32 0, i32 49
  %2680 = load i8, ptr %2679, align 8, !tbaa !183
  %2681 = sext i8 %2680 to i32
  %2682 = icmp sle i32 %2681, 0
  br i1 %2682, label %2683, label %2754

2683:                                             ; preds = %2677
  %2684 = load ptr, ptr %10, align 8, !tbaa !5
  %2685 = getelementptr inbounds %struct.ImGuiWindow, ptr %2684, i32 0, i32 50
  %2686 = load i8, ptr %2685, align 1, !tbaa !184
  %2687 = sext i8 %2686 to i32
  %2688 = icmp sle i32 %2687, 0
  br i1 %2688, label %2689, label %2754

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

2693:                                             ; preds = %2689
  %2694 = load ptr, ptr %8, align 8, !tbaa !5
  %2695 = getelementptr inbounds %struct.ImGuiContext, ptr %2694, i32 0, i32 104
  %2696 = load i8, ptr %2695, align 8, !tbaa !281, !range !79, !noundef !80
  %2697 = trunc i8 %2696 to i1
  br i1 %2697, label %2698, label %2713

2698:                                             ; preds = %2693
  %2699 = load ptr, ptr %8, align 8, !tbaa !5
  %2700 = getelementptr inbounds %struct.ImGuiContext, ptr %2699, i32 0, i32 86
  %2701 = load ptr, ptr %2700, align 8, !tbaa !232
  %2702 = icmp ne ptr %2701, null
  br i1 %2702, label %2703, label %2713

2703:                                             ; preds = %2698
  %2704 = load ptr, ptr %8, align 8, !tbaa !5
  %2705 = getelementptr inbounds %struct.ImGuiContext, ptr %2704, i32 0, i32 86
  %2706 = load ptr, ptr %2705, align 8, !tbaa !232
  %2707 = getelementptr inbounds %struct.ImGuiWindow, ptr %2706, i32 0, i32 87
  %2708 = load ptr, ptr %2707, align 8, !tbaa !282
  %2709 = load ptr, ptr %10, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.ImGuiWindow, ptr %2709, i32 0, i32 87
  %2711 = load ptr, ptr %2710, align 8, !tbaa !282
  %2712 = icmp eq ptr %2708, %2711
  br label %2713

2713:                                             ; preds = %2703, %2698, %2693
  %2714 = phi i1 [ false, %2698 ], [ false, %2693 ], [ %2712, %2703 ]
  br label %2715

2715:                                             ; preds = %2713, %2689
  %2716 = phi i1 [ false, %2689 ], [ %2714, %2713 ]
  %2717 = zext i1 %2716 to i8
  store i8 %2717, ptr %95, align 1, !tbaa !83
  %2718 = load ptr, ptr %8, align 8, !tbaa !5
  %2719 = getelementptr inbounds %struct.ImGuiContext, ptr %2718, i32 0, i32 210
  %2720 = load i8, ptr %2719, align 8, !tbaa !283, !range !79, !noundef !80
  %2721 = trunc i8 %2720 to i1
  br i1 %2721, label %2753, label %2722

2722:                                             ; preds = %2715
  %2723 = load i8, ptr %95, align 1, !tbaa !83, !range !79, !noundef !80
  %2724 = trunc i8 %2723 to i1
  br i1 %2724, label %2753, label %2725

2725:                                             ; preds = %2722
  %2726 = load ptr, ptr %10, align 8, !tbaa !5
  %2727 = getelementptr inbounds %struct.ImGuiWindow, ptr %2726, i32 0, i32 63
  %2728 = getelementptr inbounds %struct.ImRect, ptr %2727, i32 0, i32 0
  %2729 = getelementptr inbounds %struct.ImVec2, ptr %2728, i32 0, i32 0
  %2730 = load float, ptr %2729, align 8, !tbaa !284
  %2731 = load ptr, ptr %10, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiWindow, ptr %2731, i32 0, i32 63
  %2733 = getelementptr inbounds %struct.ImRect, ptr %2732, i32 0, i32 1
  %2734 = getelementptr inbounds %struct.ImVec2, ptr %2733, i32 0, i32 0
  %2735 = load float, ptr %2734, align 8, !tbaa !285
  %2736 = fcmp oge float %2730, %2735
  br i1 %2736, label %2749, label %2737

2737:                                             ; preds = %2725
  %2738 = load ptr, ptr %10, align 8, !tbaa !5
  %2739 = getelementptr inbounds %struct.ImGuiWindow, ptr %2738, i32 0, i32 63
  %2740 = getelementptr inbounds %struct.ImRect, ptr %2739, i32 0, i32 0
  %2741 = getelementptr inbounds %struct.ImVec2, ptr %2740, i32 0, i32 1
  %2742 = load float, ptr %2741, align 4, !tbaa !286
  %2743 = load ptr, ptr %10, align 8, !tbaa !5
  %2744 = getelementptr inbounds %struct.ImGuiWindow, ptr %2743, i32 0, i32 63
  %2745 = getelementptr inbounds %struct.ImRect, ptr %2744, i32 0, i32 1
  %2746 = getelementptr inbounds %struct.ImVec2, ptr %2745, i32 0, i32 1
  %2747 = load float, ptr %2746, align 4, !tbaa !287
  %2748 = fcmp oge float %2742, %2747
  br i1 %2748, label %2749, label %2752

2749:                                             ; preds = %2737, %2725
  %2750 = load ptr, ptr %10, align 8, !tbaa !5
  %2751 = getelementptr inbounds %struct.ImGuiWindow, ptr %2750, i32 0, i32 54
  store i8 1, ptr %2751, align 8, !tbaa !154
  br label %2752

2752:                                             ; preds = %2749, %2737
  br label %2753

2753:                                             ; preds = %2752, %2722, %2715
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  br label %2754

2754:                                             ; preds = %2753, %2683, %2677, %2673
  %2755 = load ptr, ptr %17, align 8, !tbaa !5
  %2756 = icmp ne ptr %2755, null
  br i1 %2756, label %2757, label %2771

2757:                                             ; preds = %2754
  %2758 = load ptr, ptr %17, align 8, !tbaa !5
  %2759 = getelementptr inbounds %struct.ImGuiWindow, ptr %2758, i32 0, i32 34
  %2760 = load i8, ptr %2759, align 1, !tbaa !176, !range !79, !noundef !80
  %2761 = trunc i8 %2760 to i1
  br i1 %2761, label %2768, label %2762

2762:                                             ; preds = %2757
  %2763 = load ptr, ptr %17, align 8, !tbaa !5
  %2764 = getelementptr inbounds %struct.ImGuiWindow, ptr %2763, i32 0, i32 54
  %2765 = load i8, ptr %2764, align 8, !tbaa !154
  %2766 = sext i8 %2765 to i32
  %2767 = icmp sgt i32 %2766, 0
  br i1 %2767, label %2768, label %2771

2768:                                             ; preds = %2762, %2757
  %2769 = load ptr, ptr %10, align 8, !tbaa !5
  %2770 = getelementptr inbounds %struct.ImGuiWindow, ptr %2769, i32 0, i32 54
  store i8 1, ptr %2770, align 8, !tbaa !154
  br label %2771

2771:                                             ; preds = %2768, %2762, %2754
  %2772 = load ptr, ptr %17, align 8, !tbaa !5
  %2773 = icmp ne ptr %2772, null
  br i1 %2773, label %2774, label %2788

2774:                                             ; preds = %2771
  %2775 = load ptr, ptr %17, align 8, !tbaa !5
  %2776 = getelementptr inbounds %struct.ImGuiWindow, ptr %2775, i32 0, i32 34
  %2777 = load i8, ptr %2776, align 1, !tbaa !176, !range !79, !noundef !80
  %2778 = trunc i8 %2777 to i1
  br i1 %2778, label %2785, label %2779

2779:                                             ; preds = %2774
  %2780 = load ptr, ptr %17, align 8, !tbaa !5
  %2781 = getelementptr inbounds %struct.ImGuiWindow, ptr %2780, i32 0, i32 55
  %2782 = load i8, ptr %2781, align 1, !tbaa !142
  %2783 = sext i8 %2782 to i32
  %2784 = icmp sgt i32 %2783, 0
  br i1 %2784, label %2785, label %2788

2785:                                             ; preds = %2779, %2774
  %2786 = load ptr, ptr %10, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.ImGuiWindow, ptr %2786, i32 0, i32 55
  store i8 1, ptr %2787, align 1, !tbaa !142
  br label %2788

2788:                                             ; preds = %2785, %2779, %2771
  br label %2789

2789:                                             ; preds = %2788, %2662
  %2790 = load ptr, ptr %9, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.ImGuiStyle, ptr %2790, i32 0, i32 0
  %2792 = load float, ptr %2791, align 4, !tbaa !288
  %2793 = fcmp ole float %2792, 0.000000e+00
  br i1 %2793, label %2794, label %2797

2794:                                             ; preds = %2789
  %2795 = load ptr, ptr %10, align 8, !tbaa !5
  %2796 = getelementptr inbounds %struct.ImGuiWindow, ptr %2795, i32 0, i32 54
  store i8 1, ptr %2796, align 8, !tbaa !154
  br label %2797

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

2803:                                             ; preds = %2797
  %2804 = load ptr, ptr %10, align 8, !tbaa !5
  %2805 = getelementptr inbounds %struct.ImGuiWindow, ptr %2804, i32 0, i32 55
  %2806 = load i8, ptr %2805, align 1, !tbaa !142
  %2807 = sext i8 %2806 to i32
  %2808 = icmp sgt i32 %2807, 0
  br label %2809

2809:                                             ; preds = %2803, %2797
  %2810 = phi i1 [ true, %2797 ], [ %2808, %2803 ]
  %2811 = zext i1 %2810 to i8
  store i8 %2811, ptr %96, align 1, !tbaa !83
  %2812 = load i8, ptr %96, align 1, !tbaa !83, !range !79, !noundef !80
  %2813 = trunc i8 %2812 to i1
  br i1 %2813, label %2820, label %2814

2814:                                             ; preds = %2809
  %2815 = load ptr, ptr %10, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiWindow, ptr %2815, i32 0, i32 56
  %2817 = load i8, ptr %2816, align 2, !tbaa !155
  %2818 = sext i8 %2817 to i32
  %2819 = icmp sgt i32 %2818, 0
  br label %2820

2820:                                             ; preds = %2814, %2809
  %2821 = phi i1 [ true, %2809 ], [ %2819, %2814 ]
  %2822 = load ptr, ptr %10, align 8, !tbaa !5
  %2823 = getelementptr inbounds %struct.ImGuiWindow, ptr %2822, i32 0, i32 38
  %2824 = zext i1 %2821 to i8
  store i8 %2824, ptr %2823, align 1, !tbaa !289
  %2825 = load ptr, ptr %10, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.ImGuiWindow, ptr %2825, i32 0, i32 57
  %2827 = load i8, ptr %2826, align 1, !tbaa !290
  %2828 = sext i8 %2827 to i32
  %2829 = icmp sgt i32 %2828, 0
  br i1 %2829, label %2830, label %2839

2830:                                             ; preds = %2820
  %2831 = load ptr, ptr %10, align 8, !tbaa !5
  %2832 = getelementptr inbounds %struct.ImGuiWindow, ptr %2831, i32 0, i32 57
  %2833 = load i8, ptr %2832, align 1, !tbaa !290
  %2834 = add i8 %2833, -1
  store i8 %2834, ptr %2832, align 1, !tbaa !290
  %2835 = load ptr, ptr %10, align 8, !tbaa !5
  %2836 = getelementptr inbounds %struct.ImGuiWindow, ptr %2835, i32 0, i32 3
  %2837 = load i32, ptr %2836, align 4, !tbaa !107
  %2838 = or i32 %2837, 786944
  store i32 %2838, ptr %2836, align 4, !tbaa !107
  br label %2839

2839:                                             ; preds = %2830, %2820
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #13
  store i8 0, ptr %97, align 1, !tbaa !83
  %2840 = load ptr, ptr %10, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.ImGuiWindow, ptr %2840, i32 0, i32 34
  %2842 = load i8, ptr %2841, align 1, !tbaa !176, !range !79, !noundef !80
  %2843 = trunc i8 %2842 to i1
  br i1 %2843, label %2852, label %2844

2844:                                             ; preds = %2839
  %2845 = load ptr, ptr %10, align 8, !tbaa !5
  %2846 = getelementptr inbounds %struct.ImGuiWindow, ptr %2845, i32 0, i32 31
  %2847 = load i8, ptr %2846, align 2, !tbaa !143, !range !79, !noundef !80
  %2848 = trunc i8 %2847 to i1
  br i1 %2848, label %2849, label %2852

2849:                                             ; preds = %2844
  %2850 = load i8, ptr %96, align 1, !tbaa !83, !range !79, !noundef !80
  %2851 = trunc i8 %2850 to i1
  br i1 %2851, label %2852, label %2872

2852:                                             ; preds = %2849, %2844, %2839
  %2853 = load ptr, ptr %10, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiWindow, ptr %2853, i32 0, i32 49
  %2855 = load i8, ptr %2854, align 8, !tbaa !183
  %2856 = sext i8 %2855 to i32
  %2857 = icmp sle i32 %2856, 0
  br i1 %2857, label %2858, label %2871

2858:                                             ; preds = %2852
  %2859 = load ptr, ptr %10, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.ImGuiWindow, ptr %2859, i32 0, i32 50
  %2861 = load i8, ptr %2860, align 1, !tbaa !184
  %2862 = sext i8 %2861 to i32
  %2863 = icmp sle i32 %2862, 0
  br i1 %2863, label %2864, label %2871

2864:                                             ; preds = %2858
  %2865 = load ptr, ptr %10, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiWindow, ptr %2865, i32 0, i32 55
  %2867 = load i8, ptr %2866, align 1, !tbaa !142
  %2868 = sext i8 %2867 to i32
  %2869 = icmp sle i32 %2868, 0
  br i1 %2869, label %2870, label %2871

2870:                                             ; preds = %2864
  store i8 1, ptr %97, align 1, !tbaa !83
  br label %2871

2871:                                             ; preds = %2870, %2864, %2858, %2852
  br label %2872

2872:                                             ; preds = %2871, %2849
  %2873 = load i8, ptr %97, align 1, !tbaa !83, !range !79, !noundef !80
  %2874 = trunc i8 %2873 to i1
  %2875 = load ptr, ptr %10, align 8, !tbaa !5
  %2876 = getelementptr inbounds %struct.ImGuiWindow, ptr %2875, i32 0, i32 36
  %2877 = zext i1 %2874 to i8
  store i8 %2877, ptr %2876, align 1, !tbaa !291
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  br label %2878

2878:                                             ; preds = %2872, %2645
  %2879 = load ptr, ptr %10, align 8, !tbaa !5
  %2880 = getelementptr inbounds %struct.ImGuiWindow, ptr %2879, i32 0, i32 39
  %2881 = load i8, ptr %2880, align 2, !tbaa !100, !range !79, !noundef !80
  %2882 = trunc i8 %2881 to i1
  br i1 %2882, label %2931, label %2883

2883:                                             ; preds = %2878
  %2884 = load ptr, ptr %8, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.ImGuiContext, ptr %2884, i32 0, i32 2
  %2886 = getelementptr inbounds %struct.ImGuiIO, ptr %2885, i32 0, i32 29
  %2887 = load i8, ptr %2886, align 4, !tbaa !292, !range !79, !noundef !80
  %2888 = trunc i8 %2887 to i1
  br i1 %2888, label %2889, label %2892

2889:                                             ; preds = %2883
  %2890 = load i8, ptr %11, align 1, !tbaa !83, !range !79, !noundef !80
  %2891 = trunc i8 %2890 to i1
  br i1 %2891, label %2908, label %2892

2892:                                             ; preds = %2889, %2883
  %2893 = load ptr, ptr %8, align 8, !tbaa !5
  %2894 = getelementptr inbounds %struct.ImGuiContext, ptr %2893, i32 0, i32 2
  %2895 = getelementptr inbounds %struct.ImGuiIO, ptr %2894, i32 0, i32 30
  %2896 = load i8, ptr %2895, align 1, !tbaa !293, !range !79, !noundef !80
  %2897 = trunc i8 %2896 to i1
  br i1 %2897, label %2898, label %2931

2898:                                             ; preds = %2892
  %2899 = load ptr, ptr %8, align 8, !tbaa !5
  %2900 = getelementptr inbounds %struct.ImGuiContext, ptr %2899, i32 0, i32 226
  %2901 = load i8, ptr %2900, align 2, !tbaa !294
  %2902 = sext i8 %2901 to i32
  %2903 = load ptr, ptr %8, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.ImGuiContext, ptr %2903, i32 0, i32 25
  %2905 = getelementptr inbounds %struct.ImVector.3, ptr %2904, i32 0, i32 0
  %2906 = load i32, ptr %2905, align 8, !tbaa !98
  %2907 = icmp eq i32 %2902, %2906
  br i1 %2907, label %2908, label %2931

2908:                                             ; preds = %2898, %2889
  %2909 = load ptr, ptr %10, align 8, !tbaa !5
  %2910 = getelementptr inbounds %struct.ImGuiWindow, ptr %2909, i32 0, i32 49
  %2911 = load i8, ptr %2910, align 8, !tbaa !183
  %2912 = sext i8 %2911 to i32
  %2913 = icmp sgt i32 %2912, 0
  br i1 %2913, label %2914, label %2919

2914:                                             ; preds = %2908
  %2915 = load ptr, ptr %10, align 8, !tbaa !5
  %2916 = getelementptr inbounds %struct.ImGuiWindow, ptr %2915, i32 0, i32 49
  %2917 = load i8, ptr %2916, align 8, !tbaa !183
  %2918 = add i8 %2917, 1
  store i8 %2918, ptr %2916, align 8, !tbaa !183
  br label %2919

2919:                                             ; preds = %2914, %2908
  %2920 = load ptr, ptr %10, align 8, !tbaa !5
  %2921 = getelementptr inbounds %struct.ImGuiWindow, ptr %2920, i32 0, i32 50
  %2922 = load i8, ptr %2921, align 1, !tbaa !184
  %2923 = sext i8 %2922 to i32
  %2924 = icmp sgt i32 %2923, 0
  br i1 %2924, label %2925, label %2930

2925:                                             ; preds = %2919
  %2926 = load ptr, ptr %10, align 8, !tbaa !5
  %2927 = getelementptr inbounds %struct.ImGuiWindow, ptr %2926, i32 0, i32 50
  %2928 = load i8, ptr %2927, align 1, !tbaa !184
  %2929 = add i8 %2928, 1
  store i8 %2929, ptr %2927, align 1, !tbaa !184
  br label %2930

2930:                                             ; preds = %2925, %2919
  store i1 false, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %2937

2931:                                             ; preds = %2898, %2892, %2878
  %2932 = load ptr, ptr %10, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.ImGuiWindow, ptr %2932, i32 0, i32 36
  %2934 = load i8, ptr %2933, align 1, !tbaa !291, !range !79, !noundef !80
  %2935 = trunc i8 %2934 to i1
  %2936 = xor i1 %2935, true
  store i1 %2936, ptr %4, align 1
  store i32 1, ptr %98, align 4
  br label %2937

2937:                                             ; preds = %2931, %2930
  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
  %2938 = load i1, ptr %4, align 1
  ret i1 %2938
}

; 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 15924}
!13 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !15, i64 8, !21, i64 14288, !6, i64 15360, !17, i64 15368, !17, i64 15372, !22, i64 15376, !25, i64 15904, !10, i64 15912, !10, i64 15916, !10, i64 15920, !14, i64 15924, !14, i64 15925, !14, i64 15926, !14, i64 15927, !14, i64 15928, !6, i64 15936, !26, i64 15944, !26, i64 15960, !18, i64 15976, !10, i64 15980, !27, i64 15984, !27, i64 16000, !27, i64 16016, !28, i64 16032, !29, i64 16048, !10, i64 16064, !16, i64 16068, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !6, i64 16112, !16, i64 16120, !10, i64 16128, !17, i64 16132, !16, i64 16136, !16, i64 16144, !10, i64 16152, !10, i64 16156, !10, i64 16160, !14, i64 16164, !14, i64 16165, !17, i64 16168, !17, i64 16172, !10, i64 16176, !10, i64 16180, !17, i64 16184, !14, i64 16188, !14, i64 16189, !14, i64 16190, !14, i64 16191, !14, i64 16192, !14, i64 16193, !16, i64 16196, !6, i64 16208, !31, i64 16216, !10, i64 16220, !10, i64 16224, !14, i64 16228, !14, i64 16229, !6, i64 16232, !10, i64 16240, !17, i64 16244, !7, i64 16248, !32, i64 17928, !10, i64 18240, !14, i64 18244, !10, i64 18248, !10, i64 18252, !10, i64 18256, !10, i64 18260, !34, i64 18264, !35, i64 18284, !37, i64 18344, !38, i64 18456, !39, i64 18472, !40, i64 18488, !41, i64 18504, !42, i64 18520, !43, i64 18536, !44, i64 18552, !44, i64 18568, !10, i64 18584, !45, i64 18592, !6, i64 18608, !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, !10, i64 18652, !10, i64 18656, !31, i64 18660, !46, i64 18664, !14, i64 18668, !14, i64 18669, !14, i64 18670, !14, i64 18671, !14, i64 18672, !14, i64 18673, !14, i64 18674, !10, i64 18676, !36, i64 18680, !14, i64 18696, !14, i64 18697, !14, i64 18698, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !10, i64 18716, !10, i64 18720, !36, i64 18724, !36, i64 18740, !10, i64 18756, !10, i64 18760, !10, i64 18764, !47, i64 18768, !47, i64 18816, !47, i64 18864, !47, i64 18912, !10, i64 18960, !10, i64 18964, !6, i64 18968, !6, i64 18976, !6, i64 18984, !17, i64 18992, !17, i64 18996, !14, i64 19000, !16, i64 19004, !16, i64 19012, !17, i64 19020, !10, i64 19024, !14, i64 19028, !14, i64 19029, !14, i64 19030, !10, i64 19032, !10, i64 19036, !10, i64 19040, !48, i64 19048, !36, i64 19112, !10, i64 19128, !10, i64 19132, !17, i64 19136, !10, i64 19140, !10, i64 19144, !10, i64 19148, !10, i64 19152, !49, i64 19160, !7, i64 19176, !10, i64 19192, !50, i64 19200, !6, i64 19216, !10, i64 19224, !51, i64 19232, !52, i64 19248, !54, i64 19288, !55, i64 19304, !6, i64 19320, !56, i64 19328, !58, i64 19368, !59, i64 19384, !10, i64 19400, !10, i64 19404, !17, i64 19408, !17, i64 19412, !16, i64 19416, !60, i64 19424, !64, i64 23152, !65, i64 23176, !10, i64 23296, !10, i64 23300, !10, i64 23304, !10, i64 23308, !17, i64 23312, !17, i64 23316, !10, i64 23320, !23, i64 23324, !67, i64 23340, !17, i64 23388, !17, i64 23392, !14, i64 23396, !14, i64 23397, !17, i64 23400, !17, i64 23404, !17, i64 23408, !17, i64 23412, !19, i64 23416, !19, i64 23418, !61, i64 23424, !41, i64 23440, !68, i64 23456, !68, i64 23472, !7, i64 23488, !14, i64 23489, !17, i64 23492, !69, i64 23496, !70, i64 23512, !71, i64 23528, !72, i64 23544, !73, i64 23560, !10, i64 23576, !7, i64 23584, !14, i64 23640, !74, i64 23644, !6, i64 23648, !69, i64 23656, !6, i64 23672, !6, i64 23680, !17, i64 23688, !14, i64 23692, !10, i64 23696, !10, i64 23700, !10, i64 23704, !10, i64 23708, !69, i64 23712, !75, i64 23728, !7, i64 23752, !7, i64 23753, !7, i64 23754, !14, i64 23755, !7, i64 23756, !10, i64 23760, !76, i64 23764, !77, i64 23784, !7, i64 23824, !10, i64 24064, !10, i64 24068, !17, i64 24072, !10, i64 24076, !10, i64 24080, !10, i64 24084, !61, i64 24088}
!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, !18, i64 3608, !14, i64 3612, !14, i64 3613, !14, i64 3614, !14, i64 3615, !10, i64 3616, !7, i64 3620, !14, i64 14052, !16, i64 14056, !7, i64 14064, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !14, i64 14189, !7, i64 14192, !7, i64 14212, !7, i64 14232, !17, i64 14252, !14, i64 14256, !14, i64 14257, !7, i64 14258, !14, i64 14259, !19, i64 14260, !20, i64 14264}
!16 = !{!"_ZTS6ImVec2", !17, i64 0, !17, i64 4}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_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 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!32 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !33, i64 280, !33, i64 296}
!33 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !17, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!35 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !36, i64 12, !36, i64 28, !36, i64 44}
!36 = !{!"_ZTS6ImRect", !16, i64 0, !16, i64 8}
!37 = !{!"_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, !36, i64 60, !6, i64 80, !6, i64 88, !17, i64 96, !16, i64 100}
!38 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!45 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!46 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!47 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !36, i64 16, !10, i64 32, !17, i64 36, !17, i64 40, !17, i64 44}
!48 = !{!"_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}
!49 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!51 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"_ZTS6ImPoolI10ImGuiTableE", !53, i64 0, !29, i64 16, !10, i64 32, !10, i64 36}
!53 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !57, i64 0, !29, i64 16, !10, i64 32, !10, i64 36}
!57 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !20, i64 24, !61, i64 40, !61, i64 56, !14, i64 72, !10, i64 76, !17, i64 80, !62, i64 84, !17, i64 3712, !14, i64 3716, !14, i64 3717, !14, i64 3718, !10, i64 3720}
!61 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_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, !63, i64 32}
!63 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !19, i64 3582, !19, i64 3584, !10, i64 3588, !10, i64 3592}
!64 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !61, i64 8}
!65 = !{!"_ZTS6ImFont", !54, i64 0, !17, i64 16, !17, i64 20, !20, i64 24, !66, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !19, i64 80, !19, i64 82, !19, i64 84, !19, i64 86, !17, i64 88, !17, i64 92, !14, i64 96, !17, i64 100, !17, i64 104, !17, i64 108, !10, i64 112, !7, i64 116}
!66 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS21ImGuiComboPreviewData", !36, i64 0, !16, i64 16, !16, i64 24, !16, i64 32, !17, i64 40, !10, i64 44}
!68 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !16, i64 4, !17, i64 12}
!69 = !{!"_ZTS15ImGuiTextBuffer", !61, i64 0}
!70 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !61, i64 0}
!72 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !61, i64 0}
!73 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!75 = !{!"_ZTS14ImGuiTextIndex", !42, i64 0, !10, i64 16}
!76 = !{!"_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}
!77 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !78, i64 16, !14, i64 32, !17, i64 36}
!78 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{i8 0, i8 2}
!80 = !{}
!81 = !{!13, !10, i64 15916}
!82 = !{!13, !10, i64 15912}
!83 = !{!14, !14, i64 0}
!84 = !{!85, !10, i64 608}
!85 = !{!"_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, !19, i64 194, !19, i64 196, !19, i64 198, !19, i64 200, !19, 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, !41, i64 240, !86, i64 256, !36, i64 488, !36, i64 504, !36, i64 520, !36, i64 536, !36, i64 552, !36, i64 568, !36, i64 584, !89, i64 600, !89, i64 604, !10, i64 608, !17, i64 612, !17, i64 616, !29, i64 624, !90, i64 640, !17, i64 656, !10, i64 660, !6, i64 664, !91, 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}
!86 = !{!"_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, !87, i64 68, !87, i64 72, !87, i64 76, !16, i64 80, !46, i64 88, !19, i64 92, !19, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !16, i64 100, !88, i64 108, !10, i64 136, !10, i64 140, !27, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !17, i64 188, !17, i64 192, !54, i64 200, !54, i64 216}
!87 = !{!"_ZTS6ImVec1", !17, i64 0}
!88 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16, !7, i64 18}
!89 = !{!"_ZTS8ImVec2ih", !19, i64 0, !19, i64 2}
!90 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS10ImDrawList", !92, i64 0, !20, i64 16, !93, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !94, i64 88, !95, i64 104, !24, i64 120, !96, i64 136, !97, i64 168, !17, i64 192}
!92 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!93 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!94 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!95 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!96 = !{!"_ZTS15ImDrawCmdHeader", !23, i64 0, !6, i64 16, !10, i64 24}
!97 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !55, i64 8}
!98 = !{!13, !10, i64 16032}
!99 = !{!13, !14, i64 15925}
!100 = !{!85, !14, i64 190}
!101 = !{!13, !10, i64 18568}
!102 = !{!85, !10, i64 204}
!103 = !{!104, !10, i64 0}
!104 = !{!"_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}
!105 = !{!104, !6, i64 8}
!106 = !{!85, !14, i64 188}
!107 = !{!85, !10, i64 20}
!108 = !{!13, !25, i64 15904}
!109 = !{!85, !17, i64 612}
!110 = !{!85, !19, i64 198}
!111 = !{!13, !10, i64 16064}
!112 = !{!85, !19, i64 200}
!113 = !{!114, !6, i64 0}
!114 = !{!"_ZTS20ImGuiWindowStackData", !6, i64 0, !35, i64 8, !115, i64 68}
!115 = !{!"_ZTS15ImGuiStackSizes", !19, i64 0, !19, i64 2, !19, i64 4, !19, i64 6, !19, i64 8, !19, i64 10, !19, i64 12, !19, i64 14, !19, i64 16}
!116 = !{!85, !6, i64 872}
!117 = !{!85, !10, i64 240}
!118 = !{!13, !6, i64 16080}
!119 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !120, i64 16, i64 4, !120, i64 20, i64 4, !120, i64 24, i64 4, !120, i64 28, i64 4, !120, i64 32, i64 4, !120, i64 36, i64 4, !120, i64 40, i64 4, !120, i64 44, i64 4, !120, i64 48, i64 4, !120, i64 52, i64 4, !120, i64 56, i64 4, !120}
!120 = !{!17, !17, i64 0}
!121 = !{!13, !10, i64 18584}
!122 = !{!85, !6, i64 880}
!123 = !{!85, !10, i64 16}
!124 = !{!13, !10, i64 18252}
!125 = !{!85, !10, i64 968}
!126 = !{!85, !46, i64 344}
!127 = !{!104, !10, i64 24}
!128 = !{!13, !10, i64 18344}
!129 = !{!13, !10, i64 18348}
!130 = !{i64 0, i64 4, !120, i64 4, i64 4, !120}
!131 = !{!13, !10, i64 18352}
!132 = !{!13, !17, i64 18376}
!133 = !{!13, !17, i64 18380}
!134 = !{!13, !17, i64 18392}
!135 = !{!85, !17, i64 148}
!136 = !{!85, !17, i64 156}
!137 = !{!13, !17, i64 18396}
!138 = !{!85, !17, i64 152}
!139 = !{!85, !17, i64 160}
!140 = !{!13, !14, i64 18400}
!141 = !{!13, !10, i64 18356}
!142 = !{!85, !7, i64 217}
!143 = !{!85, !14, i64 182}
!144 = !{!85, !14, i64 192}
!145 = !{i64 0, i64 4, !120, i64 4, i64 4, !120, i64 8, i64 4, !120, i64 12, i64 4, !120}
!146 = !{!85, !6, i64 664}
!147 = !{!85, !10, i64 432}
!148 = !{!85, !14, i64 980}
!149 = !{!13, !6, i64 18984}
!150 = !{!85, !6, i64 8}
!151 = !{!85, !10, i64 120}
!152 = !{!153, !153, i64 0}
!153 = !{!"long", !7, i64 0}
!154 = !{!85, !7, i64 216}
!155 = !{!85, !7, i64 218}
!156 = !{!85, !17, i64 48}
!157 = !{!85, !17, i64 40}
!158 = !{!85, !17, i64 52}
!159 = !{!85, !17, i64 44}
!160 = !{!21, !17, i64 48}
!161 = !{!85, !17, i64 92}
!162 = !{!21, !17, i64 56}
!163 = !{!21, !17, i64 20}
!164 = !{!21, !17, i64 12}
!165 = !{!85, !17, i64 80}
!166 = !{!21, !17, i64 76}
!167 = !{!13, !17, i64 18444}
!168 = !{!85, !17, i64 356}
!169 = !{!13, !17, i64 18448}
!170 = !{!85, !17, i64 360}
!171 = !{!13, !6, i64 16088}
!172 = !{!13, !10, i64 16156}
!173 = !{!13, !10, i64 16160}
!174 = !{!19, !19, i64 0}
!175 = !{!85, !14, i64 186}
!176 = !{!85, !14, i64 185}
!177 = !{!85, !17, i64 96}
!178 = !{!85, !17, i64 104}
!179 = !{!85, !17, i64 100}
!180 = !{!85, !17, i64 108}
!181 = !{!16, !17, i64 0}
!182 = !{!16, !17, i64 4}
!183 = !{!85, !7, i64 208}
!184 = !{!85, !7, i64 209}
!185 = !{!85, !14, i64 211}
!186 = !{!85, !10, i64 212}
!187 = !{!85, !10, i64 400}
!188 = !{!85, !17, i64 224}
!189 = !{!21, !17, i64 44}
!190 = !{!21, !17, i64 52}
!191 = !{!21, !17, i64 16}
!192 = !{!85, !17, i64 88}
!193 = !{!85, !6, i64 888}
!194 = !{!13, !14, i64 126}
!195 = !{!13, !17, i64 15368}
!196 = !{!85, !7, i64 193}
!197 = !{!85, !14, i64 181}
!198 = !{!21, !17, i64 116}
!199 = !{!85, !14, i64 180}
!200 = !{!85, !17, i64 172}
!201 = !{!85, !17, i64 176}
!202 = !{!85, !17, i64 32}
!203 = !{!85, !17, i64 504}
!204 = !{!85, !17, i64 36}
!205 = !{!85, !17, i64 508}
!206 = !{!85, !17, i64 512}
!207 = !{!85, !17, i64 516}
!208 = !{!21, !17, i64 72}
!209 = !{!85, !17, i64 520}
!210 = !{!85, !17, i64 524}
!211 = !{!85, !17, i64 528}
!212 = !{!85, !17, i64 532}
!213 = !{!85, !17, i64 616}
!214 = !{!85, !17, i64 56}
!215 = !{!85, !17, i64 140}
!216 = !{!85, !17, i64 60}
!217 = !{!85, !17, i64 84}
!218 = !{!85, !17, i64 144}
!219 = !{!85, !17, i64 116}
!220 = !{!85, !17, i64 112}
!221 = !{!91, !10, i64 0}
!222 = !{!223, !10, i64 32}
!223 = !{!"_ZTS9ImDrawCmd", !23, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!224 = !{!13, !6, i64 15360}
!225 = !{!65, !6, i64 64}
!226 = !{!227, !6, i64 8}
!227 = !{!"_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, !40, i64 88, !228, i64 104, !229, i64 120, !7, i64 136, !6, i64 1160, !10, i64 1168, !10, i64 1172, !10, i64 1176}
!228 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !6, i64 8}
!229 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !6, i64 8}
!230 = !{!91, !10, i64 32}
!231 = !{!13, !6, i64 18968}
!232 = !{!13, !6, i64 18608}
!233 = !{!85, !6, i64 904}
!234 = !{!85, !17, i64 72}
!235 = !{!85, !17, i64 76}
!236 = !{!85, !17, i64 132}
!237 = !{!85, !17, i64 536}
!238 = !{!85, !17, i64 136}
!239 = !{!85, !17, i64 540}
!240 = !{!85, !17, i64 544}
!241 = !{!85, !17, i64 548}
!242 = !{!85, !17, i64 584}
!243 = !{!85, !17, i64 588}
!244 = !{!85, !17, i64 592}
!245 = !{!85, !17, i64 596}
!246 = !{!85, !17, i64 324}
!247 = !{!85, !17, i64 332}
!248 = !{!85, !17, i64 328}
!249 = !{!25, !25, i64 0}
!250 = !{!85, !17, i64 272}
!251 = !{!85, !17, i64 276}
!252 = !{!85, !17, i64 316}
!253 = !{!85, !17, i64 312}
!254 = !{!85, !14, i64 321}
!255 = !{!85, !14, i64 320}
!256 = !{!85, !19, i64 350}
!257 = !{!85, !19, i64 348}
!258 = !{!85, !14, i64 352}
!259 = !{!85, !14, i64 353}
!260 = !{!85, !14, i64 354}
!261 = !{!85, !14, i64 355}
!262 = !{!85, !10, i64 392}
!263 = !{!85, !10, i64 396}
!264 = !{!85, !6, i64 416}
!265 = !{!85, !6, i64 424}
!266 = !{!85, !10, i64 436}
!267 = !{!85, !10, i64 440}
!268 = !{!85, !17, i64 444}
!269 = !{!85, !17, i64 448}
!270 = !{!36, !17, i64 0}
!271 = !{!36, !17, i64 4}
!272 = !{!36, !17, i64 8}
!273 = !{!36, !17, i64 12}
!274 = !{!85, !19, i64 602}
!275 = !{!85, !19, i64 600}
!276 = !{!85, !10, i64 124}
!277 = !{!13, !10, i64 18256}
!278 = !{!13, !10, i64 18260}
!279 = !{!85, !14, i64 184}
!280 = !{!85, !19, i64 194}
!281 = !{!13, !14, i64 18672}
!282 = !{!85, !6, i64 912}
!283 = !{!13, !14, i64 23640}
!284 = !{!85, !17, i64 488}
!285 = !{!85, !17, i64 496}
!286 = !{!85, !17, i64 492}
!287 = !{!85, !17, i64 500}
!288 = !{!21, !17, i64 0}
!289 = !{!85, !14, i64 189}
!290 = !{!85, !7, i64 219}
!291 = !{!85, !14, i64 187}
!292 = !{!13, !14, i64 132}
!293 = !{!13, !14, i64 133}
!294 = !{!13, !7, i64 23754}


; 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 [117 x i8], align 1
@.str.127 = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi = external hidden unnamed_addr constant [58 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.129 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.130 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.131 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.133 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.135 = 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 nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui26IsWindowWithinBeginStackOfEP11ImGuiWindowS1_(ptr noundef, ptr noundef) local_unnamed_addr #1

; 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: 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 14288
  %.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.127, ptr noundef nonnull @.str.3, i32 noundef 6119, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

45:                                               ; preds = %43
  %46 = getelementptr inbounds i8, ptr %41, i64 15924
  %47 = load i8, ptr %46, align 4, !tbaa !10, !range !78, !noundef !79
  %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.128, ptr noundef nonnull @.str.3, i32 noundef 6120, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

50:                                               ; preds = %45
  %51 = getelementptr inbounds i8, ptr %41, i64 15916
  %52 = load i32, ptr %51, align 4, !tbaa !80
  %53 = getelementptr inbounds i8, ptr %41, i64 15912
  %54 = load i32, ptr %53, align 8, !tbaa !81
  %.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.129, ptr noundef nonnull @.str.3, i32 noundef 6121, 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.130, ptr noundef nonnull @.str.3, i32 noundef 6134, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

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

75:                                               ; preds = %68
  %76 = getelementptr inbounds i8, ptr %41, i64 15925
  %77 = load i8, ptr %76, align 1, !tbaa !97, !range !78, !noundef !79
  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 !98
  %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 18552
  %86 = getelementptr inbounds i8, ptr %41, i64 18568
  %87 = load i32, ptr %86, align 8, !tbaa !99
  %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 !100
  %91 = load i32, ptr %88, align 8, !tbaa !101
  %92 = icmp ne i32 %90, %91
  %93 = getelementptr inbounds i8, ptr %88, i64 8
  %94 = load ptr, ptr %93, align 8, !tbaa !103
  %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 !104
  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 !104
  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 !105
  store i32 %69, ptr %70, align 8, !tbaa !82
  %107 = getelementptr inbounds i8, ptr %41, i64 15904
  %108 = load double, ptr %107, align 8, !tbaa !106
  %109 = fptrunc double %108 to float
  %110 = getelementptr inbounds i8, ptr %62, i64 612
  store float %109, ptr %110, align 4, !tbaa !107
  %111 = getelementptr inbounds i8, ptr %62, i64 198
  store i16 0, ptr %111, align 2, !tbaa !108
  %112 = getelementptr inbounds i8, ptr %41, i64 16064
  %113 = load i32, ptr %112, align 8, !tbaa !109
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %112, align 8, !tbaa !109
  %115 = trunc i32 %113 to i16
  %116 = getelementptr inbounds i8, ptr %62, i64 200
  store i16 %115, ptr %116, align 8, !tbaa !110
  br label %120

117:                                              ; preds = %104
  %118 = getelementptr inbounds i8, ptr %62, i64 20
  %119 = load i32, ptr %118, align 4, !tbaa !105
  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 !111
  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 !114
  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.131, ptr noundef nonnull @.str.3, i32 noundef 6170, 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 !115
  %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 16080
  store ptr %62, ptr %146, align 8, !tbaa !116
  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 !111
  %148 = getelementptr inbounds i8, ptr %41, i64 18284
  %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 !117
  %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 18584
  %154 = load i32, ptr %153, align 8, !tbaa !120
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %153, align 8, !tbaa !120
  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 !121
  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 !122
  call void @_ZN5ImGui14PushFocusScopeEj(i32 noundef %163)
  %164 = getelementptr inbounds i8, ptr %41, i64 18252
  %165 = load i32, ptr %164, align 4, !tbaa !123
  %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 !124
  store ptr null, ptr %146, align 8, !tbaa !116
  %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 18552
  %171 = getelementptr inbounds i8, ptr %41, i64 18568
  %172 = load i32, ptr %171, align 8, !tbaa !99
  %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 !103
  %176 = getelementptr inbounds i8, ptr %126, i64 344
  %177 = load i32, ptr %176, align 8, !tbaa !125
  %178 = getelementptr inbounds i8, ptr %173, i64 24
  store i32 %177, ptr %178, align 8, !tbaa !126
  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 !101
  %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 !100
  br label %182

182:                                              ; preds = %169, %160
  %183 = phi ptr [ %180, %169 ], [ %166, %160 ]
  %184 = getelementptr inbounds i8, ptr %41, i64 18344
  %185 = load i32, ptr %184, align 8, !tbaa !127
  %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 18348
  %193 = load i32, ptr %192, align 4, !tbaa !128
  %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 18368
  %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 !128
  br label %209

200:                                              ; preds = %196
  %201 = getelementptr inbounds i8, ptr %41, i64 18360
  %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 18360
  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 !127
  %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 18352
  %223 = load i32, ptr %222, align 8, !tbaa !129
  %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 18376
  %227 = load float, ptr %226, align 8, !tbaa !130
  %228 = fcmp ogt float %227, 0.000000e+00
  %229 = getelementptr inbounds i8, ptr %41, i64 18380
  %230 = load float, ptr %229, align 4, !tbaa !131
  %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 18376
  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 !127
  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 18392
  %240 = load float, ptr %239, align 8, !tbaa !132
  %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 !133
  %245 = getelementptr inbounds i8, ptr %243, i64 156
  store float 0.000000e+00, ptr %245, align 4, !tbaa !134
  br label %246

246:                                              ; preds = %242, %238
  %247 = getelementptr inbounds i8, ptr %41, i64 18396
  %248 = load float, ptr %247, align 4, !tbaa !135
  %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 !136
  %253 = getelementptr inbounds i8, ptr %251, i64 160
  store float 0.000000e+00, ptr %253, align 4, !tbaa !137
  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 18384
  %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 !127
  %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 18400
  %271 = load i8, ptr %270, align 8, !tbaa !138, !range !78, !noundef !79
  %272 = trunc nuw i8 %271 to i1
  %273 = getelementptr inbounds i8, ptr %41, i64 18356
  %274 = load i32, ptr %273, align 4, !tbaa !139
  call void @_ZN5ImGui18SetWindowCollapsedEP11ImGuiWindowbi(ptr noundef %.pre483.pre517, i1 noundef zeroext %272, i32 noundef %274)
  %.pre481 = load i32, ptr %184, align 8, !tbaa !127
  %.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 !104, !range !78, !noundef !79
  %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 %1268, 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 !140
  %293 = icmp slt i8 %292, 1
  %294 = getelementptr inbounds i8, ptr %290, i64 182
  store i8 1, ptr %294, align 2, !tbaa !141
  %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 !142
  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 !143
  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 !144
  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 !145
  %306 = getelementptr inbounds i8, ptr %304, i64 980
  %307 = load i8, ptr %306, align 4, !tbaa !146, !range !78, !noundef !79
  %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 18984
  %312 = load ptr, ptr %311, align 8, !tbaa !147
  %.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 !105
  %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 !148
  %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 !149
  %325 = sext i32 %324 to i64
  store i64 %325, ptr %9, align 8, !tbaa !150
  %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 !148
  %329 = load i64, ptr %9, align 8, !tbaa !150
  %330 = trunc i64 %329 to i32
  %331 = getelementptr inbounds i8, ptr %327, i64 120
  store i32 %330, ptr %331, align 8, !tbaa !149
  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 !152
  %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 !152
  br label %341

341:                                              ; preds = %339, %.critedge388
  %342 = getelementptr inbounds i8, ptr %335, i64 217
  %343 = load i8, ptr %342, align 1, !tbaa !140
  %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 !140
  br label %347

347:                                              ; preds = %345, %341
  %348 = getelementptr inbounds i8, ptr %335, i64 218
  %349 = load i8, ptr %348, align 2, !tbaa !153
  %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 !153
  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 !140
  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 !140
  %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 !154
  %363 = getelementptr inbounds i8, ptr %335, i64 40
  store float 0.000000e+00, ptr %363, align 8, !tbaa !155
  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 !156
  %367 = getelementptr inbounds i8, ptr %335, i64 44
  store float 0.000000e+00, ptr %367, align 4, !tbaa !157
  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 14344, i64 14308
  %.in = getelementptr inbounds i8, ptr %41, i64 %.in.v
  %378 = load float, ptr %.in, align 4, !tbaa !119
  %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 !158
  %381 = getelementptr inbounds i8, ptr %41, i64 14296
  %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 14336
  %386 = load float, ptr %385, align 4, !tbaa !159
  %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 !158
  %389 = getelementptr inbounds i8, ptr %41, i64 14296
  %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 14300
  %398 = load float, ptr %397, align 4, !tbaa !160
  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 14364
  %407 = load float, ptr %406, align 4, !tbaa !161
  %408 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %405, float noundef %407)
  %409 = getelementptr inbounds i8, ptr %41, i64 18444
  %410 = load float, ptr %409, align 4, !tbaa !162
  %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 !163
  %414 = getelementptr inbounds i8, ptr %41, i64 18448
  %415 = load float, ptr %414, align 4, !tbaa !164
  %416 = getelementptr inbounds i8, ptr %412, i64 360
  store float %415, ptr %416, align 4, !tbaa !165
  %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 16088
  %425 = load ptr, ptr %424, align 8, !tbaa !166
  %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 16156
  %430 = load i32, ptr %429, align 4, !tbaa !167
  %431 = icmp eq i32 %430, 0
  br i1 %431, label %432, label %444

432:                                              ; preds = %428
  %433 = getelementptr inbounds i8, ptr %41, i64 16160
  %434 = load i32, ptr %433, align 8, !tbaa !168
  %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 !169
  %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 !170
  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 !170, !range !78, !noundef !79
  %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 !171, !range !78, !noundef !79
  %452 = xor i8 %451, 1
  store i8 %452, ptr %450, align 1, !tbaa !171
  %.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 !171
  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 !170
  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 !172
  %462 = getelementptr inbounds i8, ptr %457, i64 104
  store float 0.000000e+00, ptr %462, align 8, !tbaa !173
  %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 !174
  %469 = getelementptr inbounds i8, ptr %467, i64 108
  store float 0.000000e+00, ptr %469, align 4, !tbaa !175
  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 !171, !range !78, !noundef !79
  %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 !154
  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 !156
  br label %537

488:                                              ; preds = %478, %456
  %489 = getelementptr inbounds i8, ptr %.pre489, i64 208
  %490 = load i8, ptr %489, align 8, !tbaa !176
  %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 !177
  %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 !178, !range !78, !noundef !79
  %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 !154
  %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 !154
  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 !177
  %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 !178, !range !78, !noundef !79
  %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 !156
  %521 = getelementptr inbounds i8, ptr %15, i64 4
  %522 = load float, ptr %521, align 4, !tbaa !179
  %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 !179
  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 !156
  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 !171, !range !78, !noundef !79
  %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 !171, !range !78, !noundef !79
  %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 !180
  %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 18568
  %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 !141, !range !78, !noundef !79
  %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.132, ptr noundef nonnull @.str.3, i32 noundef 6426, 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 !181
  %575 = trunc i32 %574 to i16
  %576 = getelementptr inbounds i8, ptr %566, i64 198
  store i16 %575, ptr %576, align 2, !tbaa !108
  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 !182
  %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 !140
  %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 14476
  %619 = getelementptr inbounds i8, ptr %41, i64 14484
  %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 14340, i64 14304
  %.sink = select i1 %137, i64 14332, i64 %.
  %638 = getelementptr inbounds i8, ptr %41, i64 %.sink
  %639 = load float, ptr %638, align 4, !tbaa !119
  %640 = getelementptr inbounds i8, ptr %635, i64 88
  store float %639, ptr %640, align 8, !tbaa !183
  %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 !184
  %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.133, ptr noundef nonnull @.str.3, i32 noundef 6485, 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 !118
  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 !185, !range !78, !noundef !79
  %660 = trunc nuw i8 %659 to i1
  %661 = select i1 %660, i32 2, i32 1
  %662 = getelementptr inbounds i8, ptr %41, i64 15368
  %663 = load float, ptr %662, align 8, !tbaa !186
  %664 = fmul float %663, 0x3FF19999A0000000
  %665 = getelementptr inbounds i8, ptr %657, i64 88
  %666 = load float, ptr %665, align 8, !tbaa !183
  %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 !171, !range !78, !noundef !79
  %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 !171, !range !78
  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 !118
  %682 = trunc i32 %681 to i8
  %683 = getelementptr inbounds i8, ptr %680, i64 193
  store i8 %682, ptr %683, align 1, !tbaa !187
  %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 !154
  %688 = getelementptr inbounds i8, ptr %680, i64 52
  %689 = load float, ptr %688, align 4, !tbaa !156
  %690 = getelementptr inbounds i8, ptr %680, i64 100
  %691 = load float, ptr %690, align 4, !tbaa !174
  %692 = getelementptr inbounds i8, ptr %680, i64 108
  %693 = load float, ptr %692, align 4, !tbaa !175
  %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 !179
  %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 !188
  %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 !188
  %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 !189
  br label %.thread533

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

729:                                              ; preds = %714
  %730 = load float, ptr %29, align 8, !tbaa !190
  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 14404
  %736 = load float, ptr %735, align 4, !tbaa !191
  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 !189
  br label %760

.thread452:                                       ; preds = %714
  %747 = getelementptr inbounds i8, ptr %720, i64 180
  store i8 1, ptr %747, align 4, !tbaa !189
  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 !189
  %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 !179
  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 !188
  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 14404
  %759 = load float, ptr %758, align 4, !tbaa !191
  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 14404
  %766 = load float, ptr %765, align 4, !tbaa !191
  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 14404
  %771 = load float, ptr %770, align 4, !tbaa !191
  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 !119
  %785 = fadd <2 x float> %784, %783
  store <2 x float> %785, ptr %778, align 8, !tbaa !119
  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 !143
  %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 !119
  %808 = load <2 x float>, ptr %806, align 8, !tbaa !119
  %809 = fadd <2 x float> %807, %808
  %810 = load <4 x float>, ptr %804, align 8, !tbaa !119
  %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 !119
  %815 = and i32 %.1, 1025
  %brmerge421.not = icmp eq i32 %815, 1
  %816 = getelementptr inbounds i8, ptr %41, i64 14360
  %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 !119
  %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 !192
  %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 !158
  %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 !193
  %833 = getelementptr inbounds i8, ptr %831, i64 508
  %834 = load float, ptr %833, align 4, !tbaa !194
  %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 !195
  %840 = getelementptr inbounds i8, ptr %838, i64 512
  %841 = load float, ptr %840, align 8, !tbaa !196
  %842 = fadd float %841, 5.000000e-01
  %843 = getelementptr inbounds i8, ptr %838, i64 80
  %844 = load float, ptr %843, align 8, !tbaa !192
  %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 !158
  %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 !197
  %855 = getelementptr inbounds i8, ptr %853, i64 516
  %856 = load float, ptr %855, align 4, !tbaa !198
  %857 = fadd float %856, 5.000000e-01
  %858 = getelementptr inbounds i8, ptr %853, i64 92
  %859 = load float, ptr %858, align 4, !tbaa !158
  %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 !199
  %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 !155
  %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 !186
  %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 !200
  %877 = getelementptr inbounds i8, ptr %.sink537, i64 56
  %878 = load float, ptr %877, align 8, !tbaa !201
  %879 = getelementptr inbounds i8, ptr %.sink537, i64 80
  %880 = load float, ptr %879, align 8, !tbaa !192
  %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 !202
  %888 = getelementptr inbounds i8, ptr %886, i64 60
  %889 = load float, ptr %888, align 4, !tbaa !203
  %890 = getelementptr inbounds i8, ptr %886, i64 84
  %891 = load float, ptr %890, align 4, !tbaa !204
  %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 !205
  %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 !119
  %906 = getelementptr inbounds i8, ptr %902, i64 664
  %907 = load ptr, ptr %906, align 8, !tbaa !144
  %908 = load i32, ptr %907, align 8, !tbaa !206
  %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 !207
  %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.134, ptr noundef nonnull @.str.3, i32 noundef 6600, 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 !144
  %919 = getelementptr inbounds i8, ptr %41, i64 15360
  %920 = load ptr, ptr %919, align 8, !tbaa !209
  %921 = getelementptr inbounds i8, ptr %920, i64 64
  %922 = load ptr, ptr %921, align 8, !tbaa !210
  %923 = getelementptr inbounds i8, ptr %922, i64 8
  %924 = load ptr, ptr %923, align 8, !tbaa !211
  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 !181
  %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 !144
  %949 = getelementptr inbounds i8, ptr %948, i64 32
  %950 = load i32, ptr %949, align 8, !tbaa !215
  %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 !144
  %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 !207
  %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 !144
  %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 !144
  br label %.thread457

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

965:                                              ; preds = %.thread457
  %966 = getelementptr inbounds i8, ptr %41, i64 18608
  %967 = load ptr, ptr %966, align 8, !tbaa !217
  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 !218
  %974 = getelementptr inbounds i8, ptr %969, i64 904
  %975 = load ptr, ptr %974, align 8, !tbaa !218
  %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 !144
  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 !219
  %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 !201
  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 !155
  %998 = getelementptr inbounds i8, ptr %.pre506, i64 80
  %999 = load float, ptr %998, align 8, !tbaa !192
  %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 !172
  %1004 = getelementptr inbounds i8, ptr %.pre506, i64 104
  %1005 = load float, ptr %1004, align 8, !tbaa !173
  %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 !220
  %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 !203
  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 !157
  %1023 = getelementptr inbounds i8, ptr %1010, i64 84
  %1024 = load float, ptr %1023, align 4, !tbaa !204
  %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 !174
  %1029 = getelementptr inbounds i8, ptr %1010, i64 108
  %1030 = load float, ptr %1029, align 4, !tbaa !175
  %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 !221
  %1039 = getelementptr inbounds i8, ptr %1035, i64 132
  %1040 = load float, ptr %1039, align 4, !tbaa !222
  %1041 = fsub float %1038, %1040
  %1042 = getelementptr inbounds i8, ptr %1035, i64 80
  %1043 = load float, ptr %1042, align 8, !tbaa !192
  %1044 = getelementptr inbounds i8, ptr %1035, i64 92
  %1045 = load float, ptr %1044, align 4, !tbaa !158
  %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 !223
  %1051 = getelementptr inbounds i8, ptr %1049, i64 508
  %1052 = load float, ptr %1051, align 4, !tbaa !194
  %1053 = getelementptr inbounds i8, ptr %1049, i64 136
  %1054 = load float, ptr %1053, align 4, !tbaa !224
  %1055 = fsub float %1052, %1054
  %1056 = getelementptr inbounds i8, ptr %1049, i64 84
  %1057 = load float, ptr %1056, align 4, !tbaa !204
  %1058 = getelementptr inbounds i8, ptr %1049, i64 92
  %1059 = load float, ptr %1058, align 4, !tbaa !158
  %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 !225
  %1065 = getelementptr inbounds i8, ptr %1063, i64 536
  %1066 = load float, ptr %1065, align 8, !tbaa !223
  %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 !119
  %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 !143
  %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 !119
  %1080 = load <2 x float>, ptr %1075, align 4, !tbaa !119
  %1081 = fsub <2 x float> %1079, %1080
  %1082 = load <2 x float>, ptr %1076, align 8, !tbaa !119
  %1083 = fadd <2 x float> %1081, %1082
  %1084 = load <2 x float>, ptr %1077, align 8, !tbaa !119
  %1085 = fadd <2 x float> %1083, %1084
  store <2 x float> %1085, ptr %1078, align 8, !tbaa !119
  %1086 = getelementptr inbounds i8, ptr %1063, i64 72
  %1087 = load float, ptr %1086, align 8, !tbaa !219
  %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 !155
  %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 !173
  %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 !226
  %1105 = getelementptr inbounds i8, ptr %1063, i64 76
  %1106 = load float, ptr %1105, align 4, !tbaa !220
  %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 !157
  %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 !175
  %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 !227
  %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 !228
  %1131 = getelementptr inbounds i8, ptr %1063, i64 328
  store <2 x float> zeroinitializer, ptr %1131, align 8, !tbaa !119
  %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 !125
  %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 !229
  %1185 = getelementptr inbounds i8, ptr %1177, i64 348
  store i16 %1184, ptr %1185, align 4, !tbaa !230
  store i16 0, ptr %1183, align 2, !tbaa !229
  %1186 = getelementptr inbounds i8, ptr %1177, i64 352
  store i8 1, ptr %1186, align 8, !tbaa !231
  %1187 = getelementptr inbounds i8, ptr %1177, i64 353
  store i8 0, ptr %1187, align 1, !tbaa !232
  %1188 = getelementptr inbounds i8, ptr %1177, i64 144
  %1189 = load float, ptr %1188, align 4, !tbaa !205
  %1190 = fcmp ogt float %1189, 0.000000e+00
  %1191 = getelementptr inbounds i8, ptr %1177, i64 354
  %1192 = zext i1 %1190 to i8
  store i8 %1192, ptr %1191, align 2, !tbaa !233
  %1193 = getelementptr inbounds i8, ptr %1177, i64 355
  store i8 0, ptr %1193, align 1, !tbaa !234
  %1194 = getelementptr inbounds i8, ptr %1177, i64 364
  %1195 = load float, ptr %406, align 4, !tbaa !161
  call void @_ZN16ImGuiMenuColumns6UpdateEfb(ptr noundef nonnull align 4 dereferenceable(26) %1194, float noundef %1195, i1 noundef zeroext %.0295.in440)
  %1196 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds i8, ptr %1196, i64 392
  store i32 0, ptr %1197, align 8, !tbaa !235
  %1198 = getelementptr inbounds i8, ptr %1196, i64 396
  store i32 0, ptr %1198, align 4, !tbaa !236
  %1199 = getelementptr inbounds i8, ptr %1196, i64 400
  call void @_ZN8ImVectorIP11ImGuiWindowE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1199, i32 noundef 0)
  %1200 = load ptr, ptr %4, align 8, !tbaa !5
  %1201 = getelementptr inbounds i8, ptr %1200, i64 624
  %1202 = getelementptr inbounds i8, ptr %1200, i64 416
  store ptr %1201, ptr %1202, align 8, !tbaa !237
  %1203 = getelementptr inbounds i8, ptr %1200, i64 424
  store ptr null, ptr %1203, align 8, !tbaa !238
  %1204 = getelementptr inbounds i8, ptr %1200, i64 436
  store i32 1, ptr %1204, align 4, !tbaa !239
  br i1 %135, label %1208, label %1205

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

1208:                                             ; preds = %1119, %1205
  %1209 = phi i32 [ %1207, %1205 ], [ 1, %1119 ]
  %1210 = getelementptr inbounds i8, ptr %1200, i64 440
  store i32 %1209, ptr %1210, align 8, !tbaa !240
  %1211 = getelementptr inbounds i8, ptr %1200, i64 616
  %1212 = load float, ptr %1211, align 8, !tbaa !200
  %1213 = getelementptr inbounds i8, ptr %1200, i64 444
  store float %1212, ptr %1213, align 4, !tbaa !241
  %1214 = getelementptr inbounds i8, ptr %1200, i64 448
  store float -1.000000e+00, ptr %1214, align 8, !tbaa !242
  %1215 = getelementptr inbounds i8, ptr %1200, i64 456
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1215, i32 noundef 0)
  %1216 = load ptr, ptr %4, align 8, !tbaa !5
  %1217 = getelementptr inbounds i8, ptr %1216, i64 472
  call void @_ZN8ImVectorIfE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1217, i32 noundef 0)
  %1218 = load ptr, ptr %4, align 8, !tbaa !5
  %1219 = getelementptr inbounds i8, ptr %1218, i64 208
  %1220 = load i8, ptr %1219, align 8, !tbaa !176
  %1221 = icmp sgt i8 %1220, 0
  br i1 %1221, label %1222, label %1224

1222:                                             ; preds = %1208
  %1223 = add nsw i8 %1220, -1
  store i8 %1223, ptr %1219, align 8, !tbaa !176
  br label %1224

1224:                                             ; preds = %1222, %1208
  %1225 = getelementptr inbounds i8, ptr %1218, i64 209
  %1226 = load i8, ptr %1225, align 1, !tbaa !177
  %1227 = icmp sgt i8 %1226, 0
  br i1 %1227, label %1228, label %1230

1228:                                             ; preds = %1224
  %1229 = add nsw i8 %1226, -1
  store i8 %1229, ptr %1225, align 1, !tbaa !177
  br label %1230

1230:                                             ; preds = %1228, %1224
  br i1 %.2308.shrunk, label %1231, label %1233

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

1233:                                             ; preds = %1231, %1230
  %.pre510 = phi ptr [ %.pre510.pre, %1231 ], [ %1218, %1230 ]
  br i1 %.not361, label %1234, label %1245

1234:                                             ; preds = %1233
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #14
  %1235 = load float, ptr %33, align 8, !tbaa !243
  %1236 = getelementptr inbounds i8, ptr %.pre510, i64 92
  %1237 = load float, ptr %1236, align 4, !tbaa !158
  %1238 = fadd float %1235, %1237
  %1239 = getelementptr inbounds i8, ptr %33, i64 4
  %1240 = load float, ptr %1239, align 4, !tbaa !244
  %1241 = load float, ptr %798, align 8, !tbaa !245
  %1242 = fsub float %1241, %1237
  %1243 = getelementptr inbounds i8, ptr %33, i64 12
  %1244 = load float, ptr %1243, align 4, !tbaa !246
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %40, float noundef %1238, float noundef %1240, float noundef %1242, float noundef %1244)
  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 %1245

1245:                                             ; preds = %1234, %1233
  %1246 = phi ptr [ %.pre509, %1234 ], [ %.pre510, %1233 ]
  %1247 = getelementptr inbounds i8, ptr %1246, i64 602
  store i16 0, ptr %1247, align 2, !tbaa !247
  %1248 = getelementptr inbounds i8, ptr %1246, i64 600
  store i16 0, ptr %1248, align 8, !tbaa !248
  %1249 = getelementptr inbounds i8, ptr %1246, i64 124
  %1250 = load i32, ptr %1249, align 4, !tbaa !249
  %1251 = getelementptr inbounds i8, ptr %41, i64 18256
  %1252 = load i32, ptr %1251, align 8, !tbaa !250
  %1253 = 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)
  %1254 = zext i1 %1253 to i32
  call void @_ZN5ImGui15SetLastItemDataEjiiRK6ImRect(i32 noundef %1250, i32 noundef %1252, i32 noundef %1254, ptr noundef nonnull align 4 dereferenceable(16) %33)
  %1255 = getelementptr inbounds i8, ptr %41, i64 18260
  %1256 = load i32, ptr %1255, align 4, !tbaa !251
  %.not381 = icmp eq i32 %1256, 0
  br i1 %.not381, label %1267, label %1257

1257:                                             ; preds = %1245
  %1258 = load ptr, ptr %4, align 8, !tbaa !5
  %1259 = getelementptr inbounds i8, ptr %1258, i64 16
  %1260 = load i32, ptr %1259, align 8, !tbaa !122
  %1261 = icmp eq i32 %1260, %1256
  br i1 %1261, label %1266, label %1262

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

1266:                                             ; preds = %1262, %1257
  call void @_ZN5ImGui34DebugLocateItemResolveWithLastItemEv()
  br label %1267

1267:                                             ; preds = %1266, %1262, %1245
  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 %1270

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

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

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

1279:                                             ; preds = %1270
  br i1 %137, label %1280, label %.critedge433

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

1282:                                             ; preds = %1280
  call void @__assert_fail(ptr noundef nonnull @.str.135, ptr noundef nonnull @.str.3, i32 noundef 6765, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui5BeginEPKcPbi) #13
  unreachable

1283:                                             ; preds = %1280
  %1284 = and i32 %.1, 64
  %.not383 = icmp eq i32 %1284, 0
  br i1 %.not383, label %1285, label %1328

1285:                                             ; preds = %1283
  %1286 = load ptr, ptr %4, align 8, !tbaa !5
  %1287 = getelementptr inbounds i8, ptr %1286, i64 208
  %1288 = load i8, ptr %1287, align 8, !tbaa !176
  %1289 = icmp slt i8 %1288, 1
  br i1 %1289, label %1290, label %1328

1290:                                             ; preds = %1285
  %1291 = getelementptr inbounds i8, ptr %1286, i64 209
  %1292 = load i8, ptr %1291, align 1, !tbaa !177
  %1293 = icmp slt i8 %1292, 1
  br i1 %1293, label %1294, label %1328

1294:                                             ; preds = %1290
  %1295 = and i32 %.1, 8388608
  %.not384 = icmp eq i32 %1295, 0
  br i1 %.not384, label %1309, label %1296

1296:                                             ; preds = %1294
  %1297 = getelementptr inbounds i8, ptr %41, i64 18672
  %1298 = load i8, ptr %1297, align 8, !tbaa !254, !range !78, !noundef !79
  %1299 = trunc nuw i8 %1298 to i1
  br i1 %1299, label %1300, label %1309

1300:                                             ; preds = %1296
  %1301 = getelementptr inbounds i8, ptr %41, i64 18608
  %1302 = load ptr, ptr %1301, align 8, !tbaa !217
  %.not385 = icmp eq ptr %1302, null
  br i1 %.not385, label %1309, label %1303

1303:                                             ; preds = %1300
  %1304 = getelementptr inbounds i8, ptr %1302, i64 912
  %1305 = load ptr, ptr %1304, align 8, !tbaa !255
  %1306 = getelementptr inbounds i8, ptr %1286, i64 912
  %1307 = load ptr, ptr %1306, align 8, !tbaa !255
  %1308 = icmp eq ptr %1305, %1307
  br label %1309

1309:                                             ; preds = %1296, %1300, %1303, %1294
  %1310 = phi i1 [ false, %1294 ], [ false, %1300 ], [ false, %1296 ], [ %1308, %1303 ]
  %1311 = getelementptr inbounds i8, ptr %41, i64 23640
  %1312 = load i8, ptr %1311, align 8, !tbaa !256, !range !78, !noundef !79
  %1313 = trunc nuw i8 %1312 to i1
  %brmerge431 = select i1 %1313, i1 true, i1 %1310
  br i1 %brmerge431, label %1328, label %1314

1314:                                             ; preds = %1309
  %1315 = getelementptr inbounds i8, ptr %1286, i64 488
  %1316 = load float, ptr %1315, align 8, !tbaa !257
  %1317 = getelementptr inbounds i8, ptr %1286, i64 496
  %1318 = load float, ptr %1317, align 8, !tbaa !258
  %1319 = fcmp ult float %1316, %1318
  br i1 %1319, label %1320, label %1326

1320:                                             ; preds = %1314
  %1321 = getelementptr inbounds i8, ptr %1286, i64 492
  %1322 = load float, ptr %1321, align 4, !tbaa !259
  %1323 = getelementptr inbounds i8, ptr %1286, i64 500
  %1324 = load float, ptr %1323, align 4, !tbaa !260
  %1325 = fcmp ult float %1322, %1324
  br i1 %1325, label %1328, label %1326

1326:                                             ; preds = %1320, %1314
  %1327 = getelementptr inbounds i8, ptr %1286, i64 216
  store i8 1, ptr %1327, align 8, !tbaa !152
  br label %1328

1328:                                             ; preds = %1326, %1320, %1309, %1290, %1285, %1283
  br i1 %135, label %.critedge433, label %1329

1329:                                             ; preds = %1328
  %1330 = getelementptr inbounds i8, ptr %134, i64 185
  %1331 = load i8, ptr %1330, align 1, !tbaa !171, !range !78, !noundef !79
  %1332 = trunc nuw i8 %1331 to i1
  br i1 %1332, label %.thread461, label %1335

.thread461:                                       ; preds = %1329
  %1333 = load ptr, ptr %4, align 8, !tbaa !5
  %1334 = getelementptr inbounds i8, ptr %1333, i64 216
  store i8 1, ptr %1334, align 8, !tbaa !152
  br label %1345

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

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

.thread460:                                       ; preds = %1335, %1339
  %1342 = getelementptr inbounds i8, ptr %134, i64 217
  %1343 = load i8, ptr %1342, align 1, !tbaa !140
  %1344 = icmp sgt i8 %1343, 0
  br i1 %1344, label %.thread460._crit_edge, label %.critedge433

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

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

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

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

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

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

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

.thread462:                                       ; preds = %.thread532, %1350, %1356, %1352
  %.not475 = phi i1 [ false, %1352 ], [ true, %1356 ], [ false, %1350 ], [ false, %.thread532 ]
  %1361 = phi i8 [ 1, %1352 ], [ %1360, %1356 ], [ 1, %1350 ], [ 1, %.thread532 ]
  %1362 = getelementptr inbounds i8, ptr %.pre512, i64 189
  store i8 %1361, ptr %1362, align 1, !tbaa !262
  %1363 = getelementptr inbounds i8, ptr %.pre512, i64 219
  %1364 = load i8, ptr %1363, align 1, !tbaa !263
  %1365 = icmp sgt i8 %1364, 0
  br i1 %1365, label %1366, label %1371

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

1371:                                             ; preds = %1366, %.thread462
  %1372 = getelementptr inbounds i8, ptr %.pre512, i64 185
  %1373 = load i8, ptr %1372, align 1, !tbaa !171, !range !78, !noundef !79
  %1374 = trunc nuw i8 %1373 to i1
  br i1 %1374, label %1379, label %1375

1375:                                             ; preds = %1371
  %1376 = getelementptr inbounds i8, ptr %.pre512, i64 182
  %1377 = load i8, ptr %1376, align 2, !tbaa !141, !range !78, !noundef !79
  %1378 = trunc nuw i8 %1377 to i1
  %brmerge435.not = and i1 %.not475, %1378
  br i1 %brmerge435.not, label %1391, label %1379

1379:                                             ; preds = %1375, %1371
  %1380 = getelementptr inbounds i8, ptr %.pre512, i64 208
  %1381 = load i8, ptr %1380, align 8, !tbaa !176
  %1382 = icmp slt i8 %1381, 1
  br i1 %1382, label %1383, label %1391

1383:                                             ; preds = %1379
  %1384 = getelementptr inbounds i8, ptr %.pre512, i64 209
  %1385 = load i8, ptr %1384, align 1, !tbaa !177
  %1386 = icmp slt i8 %1385, 1
  br i1 %1386, label %1387, label %1391

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

1391:                                             ; preds = %1387, %1375, %1379, %1383
  %.0 = phi i8 [ 0, %1383 ], [ 0, %1379 ], [ 0, %1375 ], [ %spec.select436, %1387 ]
  %1392 = getelementptr inbounds i8, ptr %.pre512, i64 187
  store i8 %.0, ptr %1392, align 1, !tbaa !264
  br label %1393

1393:                                             ; preds = %._crit_edge515, %1391
  %1394 = phi ptr [ %.pre516, %._crit_edge515 ], [ %.pre512, %1391 ]
  %1395 = getelementptr inbounds i8, ptr %1394, i64 190
  %1396 = load i8, ptr %1395, align 2, !tbaa !98, !range !78, !noundef !79
  %1397 = trunc nuw i8 %1396 to i1
  br i1 %1397, label %1424, label %1398

1398:                                             ; preds = %1393
  %1399 = getelementptr inbounds i8, ptr %41, i64 132
  %1400 = load i8, ptr %1399, align 4, !tbaa !265, !range !78, !noundef !79
  %1401 = trunc nuw i8 %1400 to i1
  %brmerge439.demorgan = and i1 %58, %1401
  br i1 %brmerge439.demorgan, label %1412, label %1402

1402:                                             ; preds = %1398
  %1403 = getelementptr inbounds i8, ptr %41, i64 133
  %1404 = load i8, ptr %1403, align 1, !tbaa !266, !range !78, !noundef !79
  %1405 = trunc nuw i8 %1404 to i1
  br i1 %1405, label %1406, label %1424

1406:                                             ; preds = %1402
  %1407 = getelementptr inbounds i8, ptr %41, i64 23754
  %1408 = load i8, ptr %1407, align 2, !tbaa !267
  %1409 = sext i8 %1408 to i32
  %1410 = load i32, ptr %72, align 8, !tbaa !96
  %1411 = icmp eq i32 %1410, %1409
  br i1 %1411, label %1412, label %1424

1412:                                             ; preds = %1398, %1406
  %1413 = getelementptr inbounds i8, ptr %1394, i64 208
  %1414 = load i8, ptr %1413, align 8, !tbaa !176
  %1415 = icmp sgt i8 %1414, 0
  br i1 %1415, label %1416, label %1418

1416:                                             ; preds = %1412
  %1417 = add nuw i8 %1414, 1
  store i8 %1417, ptr %1413, align 8, !tbaa !176
  br label %1418

1418:                                             ; preds = %1416, %1412
  %1419 = getelementptr inbounds i8, ptr %1394, i64 209
  %1420 = load i8, ptr %1419, align 1, !tbaa !177
  %1421 = icmp sgt i8 %1420, 0
  br i1 %1421, label %1422, label %1429

1422:                                             ; preds = %1418
  %1423 = add nuw i8 %1420, 1
  store i8 %1423, ptr %1419, align 1, !tbaa !177
  br label %1429

1424:                                             ; preds = %1406, %1402, %1393
  %1425 = getelementptr inbounds i8, ptr %1394, i64 187
  %1426 = load i8, ptr %1425, align 1, !tbaa !264, !range !78, !noundef !79
  %1427 = trunc nuw i8 %1426 to i1
  %1428 = xor i1 %1427, true
  br label %1429

1429:                                             ; preds = %1418, %1422, %1424
  %.0293 = phi i1 [ %1428, %1424 ], [ false, %1422 ], [ false, %1418 ]
  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 15924}
!11 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !13, i64 8, !20, i64 14288, !6, i64 15360, !16, i64 15368, !16, i64 15372, !21, i64 15376, !24, i64 15904, !14, i64 15912, !14, i64 15916, !14, i64 15920, !12, i64 15924, !12, i64 15925, !12, i64 15926, !12, i64 15927, !12, i64 15928, !6, i64 15936, !25, i64 15944, !25, i64 15960, !17, i64 15976, !14, i64 15980, !26, i64 15984, !26, i64 16000, !26, i64 16016, !27, i64 16032, !28, i64 16048, !14, i64 16064, !15, i64 16068, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !6, i64 16112, !15, i64 16120, !14, i64 16128, !16, i64 16132, !15, i64 16136, !15, i64 16144, !14, i64 16152, !14, i64 16156, !14, i64 16160, !12, i64 16164, !12, i64 16165, !16, i64 16168, !16, i64 16172, !14, i64 16176, !14, i64 16180, !16, i64 16184, !12, i64 16188, !12, i64 16189, !12, i64 16190, !12, i64 16191, !12, i64 16192, !12, i64 16193, !15, i64 16196, !6, i64 16208, !30, i64 16216, !14, i64 16220, !14, i64 16224, !12, i64 16228, !12, i64 16229, !6, i64 16232, !14, i64 16240, !16, i64 16244, !7, i64 16248, !31, i64 17928, !14, i64 18240, !12, i64 18244, !14, i64 18248, !14, i64 18252, !14, i64 18256, !14, i64 18260, !33, i64 18264, !34, i64 18284, !36, i64 18344, !37, i64 18456, !38, i64 18472, !39, i64 18488, !40, i64 18504, !41, i64 18520, !42, i64 18536, !43, i64 18552, !43, i64 18568, !14, i64 18584, !44, i64 18592, !6, i64 18608, !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, !14, i64 18652, !14, i64 18656, !30, i64 18660, !45, i64 18664, !12, i64 18668, !12, i64 18669, !12, i64 18670, !12, i64 18671, !12, i64 18672, !12, i64 18673, !12, i64 18674, !14, i64 18676, !35, i64 18680, !12, i64 18696, !12, i64 18697, !12, i64 18698, !14, i64 18700, !14, i64 18704, !14, i64 18708, !14, i64 18712, !14, i64 18716, !14, i64 18720, !35, i64 18724, !35, i64 18740, !14, i64 18756, !14, i64 18760, !14, i64 18764, !46, i64 18768, !46, i64 18816, !46, i64 18864, !46, i64 18912, !14, i64 18960, !14, i64 18964, !6, i64 18968, !6, i64 18976, !6, i64 18984, !16, i64 18992, !16, i64 18996, !12, i64 19000, !15, i64 19004, !15, i64 19012, !16, i64 19020, !14, i64 19024, !12, i64 19028, !12, i64 19029, !12, i64 19030, !14, i64 19032, !14, i64 19036, !14, i64 19040, !47, i64 19048, !35, i64 19112, !14, i64 19128, !14, i64 19132, !16, i64 19136, !14, i64 19140, !14, i64 19144, !14, i64 19148, !14, i64 19152, !48, i64 19160, !7, i64 19176, !14, i64 19192, !49, i64 19200, !6, i64 19216, !14, i64 19224, !50, i64 19232, !51, i64 19248, !53, i64 19288, !54, i64 19304, !6, i64 19320, !55, i64 19328, !57, i64 19368, !58, i64 19384, !14, i64 19400, !14, i64 19404, !16, i64 19408, !16, i64 19412, !15, i64 19416, !59, i64 19424, !63, i64 23152, !64, i64 23176, !14, i64 23296, !14, i64 23300, !14, i64 23304, !14, i64 23308, !16, i64 23312, !16, i64 23316, !14, i64 23320, !22, i64 23324, !66, i64 23340, !16, i64 23388, !16, i64 23392, !12, i64 23396, !12, i64 23397, !16, i64 23400, !16, i64 23404, !16, i64 23408, !16, i64 23412, !18, i64 23416, !18, i64 23418, !60, i64 23424, !40, i64 23440, !67, i64 23456, !67, i64 23472, !7, i64 23488, !12, i64 23489, !16, i64 23492, !68, i64 23496, !69, i64 23512, !70, i64 23528, !71, i64 23544, !72, i64 23560, !14, i64 23576, !7, i64 23584, !12, i64 23640, !73, i64 23644, !6, i64 23648, !68, i64 23656, !6, i64 23672, !6, i64 23680, !16, i64 23688, !12, i64 23692, !14, i64 23696, !14, i64 23700, !14, i64 23704, !14, i64 23708, !68, i64 23712, !74, i64 23728, !7, i64 23752, !7, i64 23753, !7, i64 23754, !12, i64 23755, !7, i64 23756, !14, i64 23760, !75, i64 23764, !76, i64 23784, !7, i64 23824, !14, i64 24064, !14, i64 24068, !16, i64 24072, !14, i64 24076, !14, i64 24080, !14, i64 24084, !60, i64 24088}
!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, !17, i64 3608, !12, i64 3612, !12, i64 3613, !12, i64 3614, !12, i64 3615, !14, i64 3616, !7, i64 3620, !12, i64 14052, !15, i64 14056, !7, i64 14064, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !12, i64 14189, !7, i64 14192, !7, i64 14212, !7, i64 14232, !16, i64 14252, !12, i64 14256, !12, i64 14257, !7, i64 14258, !12, i64 14259, !18, i64 14260, !19, i64 14264}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!18 = !{!"short", !7, i64 0}
!19 = !{!"_ZTS8ImVectorItE", !14, i64 0, !14, i64 4, !6, i64 8}
!20 = !{!"_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 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !14, i64 0, !14, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !14, i64 0, !14, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !14, i64 0, !14, i64 4, !6, i64 8}
!30 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!31 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !32, i64 280, !32, i64 296}
!32 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!33 = !{!"_ZTS17ImGuiNextItemData", !14, i64 0, !16, i64 4, !14, i64 8, !14, i64 12, !12, i64 16}
!34 = !{!"_ZTS17ImGuiLastItemData", !14, i64 0, !14, i64 4, !14, i64 8, !35, i64 12, !35, i64 28, !35, i64 44}
!35 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!36 = !{!"_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, !35, i64 60, !6, i64 80, !6, i64 88, !16, i64 96, !15, i64 100}
!37 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !14, i64 0, !14, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !14, i64 0, !14, i64 4, !6, i64 8}
!39 = !{!"_ZTS8ImVectorIP6ImFontE", !14, i64 0, !14, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorIjE", !14, i64 0, !14, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIiE", !14, i64 0, !14, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!44 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !14, i64 0, !14, i64 4, !6, i64 8}
!45 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!46 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !14, i64 8, !14, i64 12, !35, i64 16, !14, i64 32, !16, i64 36, !16, i64 40, !16, i64 44}
!47 = !{!"_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}
!48 = !{!"_ZTS8ImVectorIhE", !14, i64 0, !14, i64 4, !6, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!50 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !14, i64 0, !14, i64 4, !6, i64 8}
!51 = !{!"_ZTS6ImPoolI10ImGuiTableE", !52, i64 0, !28, i64 16, !14, i64 32, !14, i64 36}
!52 = !{!"_ZTS8ImVectorI10ImGuiTableE", !14, i64 0, !14, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorIfE", !14, i64 0, !14, i64 4, !6, i64 8}
!54 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !14, i64 0, !14, i64 4, !6, i64 8}
!55 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !56, i64 0, !28, i64 16, !14, i64 32, !14, i64 36}
!56 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !14, i64 0, !14, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !14, i64 0, !14, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !14, i64 0, !14, i64 4, !6, i64 8}
!59 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !19, i64 24, !60, i64 40, !60, i64 56, !12, i64 72, !14, i64 76, !16, i64 80, !61, i64 84, !16, i64 3712, !12, i64 3716, !12, i64 3717, !12, i64 3718, !14, i64 3720}
!60 = !{!"_ZTS8ImVectorIcE", !14, i64 0, !14, i64 4, !6, i64 8}
!61 = !{!"_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, !62, i64 32}
!62 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !18, i64 3582, !18, i64 3584, !14, i64 3588, !14, i64 3592}
!63 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !14, i64 0, !60, i64 8}
!64 = !{!"_ZTS6ImFont", !53, i64 0, !16, i64 16, !16, i64 20, !19, i64 24, !65, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !18, i64 80, !18, i64 82, !18, i64 84, !18, i64 86, !16, i64 88, !16, i64 92, !12, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !14, i64 112, !7, i64 116}
!65 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !14, i64 0, !14, i64 4, !6, i64 8}
!66 = !{!"_ZTS21ImGuiComboPreviewData", !35, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !14, i64 44}
!67 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !15, i64 4, !16, i64 12}
!68 = !{!"_ZTS15ImGuiTextBuffer", !60, i64 0}
!69 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !14, i64 0, !14, i64 4, !6, i64 8}
!70 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !60, i64 0}
!71 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !60, i64 0}
!72 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !14, i64 0, !14, i64 4, !6, i64 8}
!73 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!74 = !{!"_ZTS14ImGuiTextIndex", !41, i64 0, !14, i64 16}
!75 = !{!"_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}
!76 = !{!"_ZTS14ImGuiStackTool", !14, i64 0, !14, i64 4, !14, i64 8, !77, i64 16, !12, i64 32, !16, i64 36}
!77 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !14, i64 0, !14, i64 4, !6, i64 8}
!78 = !{i8 0, i8 2}
!79 = !{}
!80 = !{!11, !14, i64 15916}
!81 = !{!11, !14, i64 15912}
!82 = !{!83, !14, i64 608}
!83 = !{!"_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, !18, i64 194, !18, i64 196, !18, i64 198, !18, i64 200, !18, 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, !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, !14, i64 608, !16, i64 612, !16, i64 616, !28, i64 624, !88, i64 640, !16, i64 656, !14, 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, !14, i64 968, !14, i64 972, !14, i64 976, !12, i64 980}
!84 = !{!"_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, !85, i64 68, !85, i64 72, !85, i64 76, !15, i64 80, !45, i64 88, !18, i64 92, !18, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !15, i64 100, !86, i64 108, !14, i64 136, !14, i64 140, !26, i64 144, !6, i64 160, !6, i64 168, !14, i64 176, !14, i64 180, !14, i64 184, !16, i64 188, !16, i64 192, !53, i64 200, !53, i64 216}
!85 = !{!"_ZTS6ImVec1", !16, i64 0}
!86 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !18, i64 8, !18, i64 10, !18, i64 12, !18, i64 14, !18, i64 16, !7, i64 18}
!87 = !{!"_ZTS8ImVec2ih", !18, i64 0, !18, i64 2}
!88 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !14, i64 0, !14, i64 4, !6, i64 8}
!89 = !{!"_ZTS10ImDrawList", !90, i64 0, !19, i64 16, !91, i64 32, !14, i64 48, !14, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !92, i64 88, !93, i64 104, !23, i64 120, !94, i64 136, !95, i64 168, !16, i64 192}
!90 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !14, i64 0, !14, i64 4, !6, i64 8}
!91 = !{!"_ZTS8ImVectorI10ImDrawVertE", !14, i64 0, !14, i64 4, !6, i64 8}
!92 = !{!"_ZTS8ImVectorI6ImVec4E", !14, i64 0, !14, i64 4, !6, i64 8}
!93 = !{!"_ZTS8ImVectorIPvE", !14, i64 0, !14, i64 4, !6, i64 8}
!94 = !{!"_ZTS15ImDrawCmdHeader", !22, i64 0, !6, i64 16, !14, i64 24}
!95 = !{!"_ZTS18ImDrawListSplitter", !14, i64 0, !14, i64 4, !54, i64 8}
!96 = !{!11, !14, i64 16032}
!97 = !{!11, !12, i64 15925}
!98 = !{!83, !12, i64 190}
!99 = !{!11, !14, i64 18568}
!100 = !{!83, !14, i64 204}
!101 = !{!102, !14, i64 0}
!102 = !{!"_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}
!103 = !{!102, !6, i64 8}
!104 = !{!83, !12, i64 188}
!105 = !{!83, !14, i64 20}
!106 = !{!11, !24, i64 15904}
!107 = !{!83, !16, i64 612}
!108 = !{!83, !18, i64 198}
!109 = !{!11, !14, i64 16064}
!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, !14, i64 240}
!116 = !{!11, !6, i64 16080}
!117 = !{i64 0, i64 4, !118, i64 4, i64 4, !118, i64 8, i64 4, !118, i64 12, i64 4, !119, i64 16, i64 4, !119, i64 20, i64 4, !119, i64 24, i64 4, !119, i64 28, i64 4, !119, i64 32, i64 4, !119, i64 36, i64 4, !119, i64 40, i64 4, !119, i64 44, i64 4, !119, i64 48, i64 4, !119, i64 52, i64 4, !119, i64 56, i64 4, !119}
!118 = !{!14, !14, i64 0}
!119 = !{!16, !16, i64 0}
!120 = !{!11, !14, i64 18584}
!121 = !{!83, !6, i64 880}
!122 = !{!83, !14, i64 16}
!123 = !{!11, !14, i64 18252}
!124 = !{!83, !14, i64 968}
!125 = !{!83, !45, i64 344}
!126 = !{!102, !14, i64 24}
!127 = !{!11, !14, i64 18344}
!128 = !{!11, !14, i64 18348}
!129 = !{!11, !14, i64 18352}
!130 = !{!11, !16, i64 18376}
!131 = !{!11, !16, i64 18380}
!132 = !{!11, !16, i64 18392}
!133 = !{!83, !16, i64 148}
!134 = !{!83, !16, i64 156}
!135 = !{!11, !16, i64 18396}
!136 = !{!83, !16, i64 152}
!137 = !{!83, !16, i64 160}
!138 = !{!11, !12, i64 18400}
!139 = !{!11, !14, i64 18356}
!140 = !{!83, !7, i64 217}
!141 = !{!83, !12, i64 182}
!142 = !{!83, !12, i64 192}
!143 = !{i64 0, i64 4, !119, i64 4, i64 4, !119, i64 8, i64 4, !119, i64 12, i64 4, !119}
!144 = !{!83, !6, i64 664}
!145 = !{!83, !14, i64 432}
!146 = !{!83, !12, i64 980}
!147 = !{!11, !6, i64 18984}
!148 = !{!83, !6, i64 8}
!149 = !{!83, !14, i64 120}
!150 = !{!151, !151, i64 0}
!151 = !{!"long", !7, i64 0}
!152 = !{!83, !7, i64 216}
!153 = !{!83, !7, i64 218}
!154 = !{!83, !16, i64 48}
!155 = !{!83, !16, i64 40}
!156 = !{!83, !16, i64 52}
!157 = !{!83, !16, i64 44}
!158 = !{!83, !16, i64 92}
!159 = !{!20, !16, i64 48}
!160 = !{!20, !16, i64 12}
!161 = !{!20, !16, i64 76}
!162 = !{!11, !16, i64 18444}
!163 = !{!83, !16, i64 356}
!164 = !{!11, !16, i64 18448}
!165 = !{!83, !16, i64 360}
!166 = !{!11, !6, i64 16088}
!167 = !{!11, !14, i64 16156}
!168 = !{!11, !14, i64 16160}
!169 = !{!18, !18, i64 0}
!170 = !{!83, !12, i64 186}
!171 = !{!83, !12, i64 185}
!172 = !{!83, !16, i64 96}
!173 = !{!83, !16, i64 104}
!174 = !{!83, !16, i64 100}
!175 = !{!83, !16, i64 108}
!176 = !{!83, !7, i64 208}
!177 = !{!83, !7, i64 209}
!178 = !{!83, !12, i64 211}
!179 = !{!15, !16, i64 4}
!180 = !{!83, !14, i64 212}
!181 = !{!83, !14, i64 400}
!182 = !{!83, !16, i64 224}
!183 = !{!83, !16, i64 88}
!184 = !{!83, !6, i64 888}
!185 = !{!11, !12, i64 126}
!186 = !{!11, !16, i64 15368}
!187 = !{!83, !7, i64 193}
!188 = !{!83, !12, i64 181}
!189 = !{!83, !12, i64 180}
!190 = !{!15, !16, i64 0}
!191 = !{!20, !16, i64 116}
!192 = !{!83, !16, i64 80}
!193 = !{!83, !16, i64 520}
!194 = !{!83, !16, i64 508}
!195 = !{!83, !16, i64 524}
!196 = !{!83, !16, i64 512}
!197 = !{!83, !16, i64 528}
!198 = !{!83, !16, i64 516}
!199 = !{!83, !16, i64 532}
!200 = !{!83, !16, i64 616}
!201 = !{!83, !16, i64 56}
!202 = !{!83, !16, i64 140}
!203 = !{!83, !16, i64 60}
!204 = !{!83, !16, i64 84}
!205 = !{!83, !16, i64 144}
!206 = !{!89, !14, i64 0}
!207 = !{!208, !14, i64 32}
!208 = !{!"_ZTS9ImDrawCmd", !22, i64 0, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !6, i64 40, !6, i64 48}
!209 = !{!11, !6, i64 15360}
!210 = !{!64, !6, i64 64}
!211 = !{!212, !6, i64 8}
!212 = !{!"_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, !39, i64 88, !213, i64 104, !214, i64 120, !7, i64 136, !6, i64 1160, !14, i64 1168, !14, i64 1172, !14, i64 1176}
!213 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !14, i64 0, !14, i64 4, !6, i64 8}
!214 = !{!"_ZTS8ImVectorI12ImFontConfigE", !14, i64 0, !14, i64 4, !6, i64 8}
!215 = !{!89, !14, i64 32}
!216 = !{!11, !6, i64 18968}
!217 = !{!11, !6, i64 18608}
!218 = !{!83, !6, i64 904}
!219 = !{!83, !16, i64 72}
!220 = !{!83, !16, i64 76}
!221 = !{!83, !16, i64 504}
!222 = !{!83, !16, i64 132}
!223 = !{!83, !16, i64 536}
!224 = !{!83, !16, i64 136}
!225 = !{!83, !16, i64 540}
!226 = !{!83, !16, i64 592}
!227 = !{!83, !16, i64 596}
!228 = !{!83, !16, i64 324}
!229 = !{!83, !18, i64 350}
!230 = !{!83, !18, i64 348}
!231 = !{!83, !12, i64 352}
!232 = !{!83, !12, i64 353}
!233 = !{!83, !12, i64 354}
!234 = !{!83, !12, i64 355}
!235 = !{!83, !14, i64 392}
!236 = !{!83, !14, i64 396}
!237 = !{!83, !6, i64 416}
!238 = !{!83, !6, i64 424}
!239 = !{!83, !14, i64 436}
!240 = !{!83, !14, i64 440}
!241 = !{!83, !16, i64 444}
!242 = !{!83, !16, i64 448}
!243 = !{!35, !16, i64 0}
!244 = !{!35, !16, i64 4}
!245 = !{!35, !16, i64 8}
!246 = !{!35, !16, i64 12}
!247 = !{!83, !18, i64 602}
!248 = !{!83, !18, i64 600}
!249 = !{!83, !14, i64 124}
!250 = !{!11, !14, i64 18256}
!251 = !{!11, !14, i64 18260}
!252 = !{!83, !12, i64 184}
!253 = !{!83, !18, i64 194}
!254 = !{!11, !12, i64 18672}
!255 = !{!83, !6, i64 912}
!256 = !{!11, !12, i64 23640}
!257 = !{!83, !16, i64 488}
!258 = !{!83, !16, i64 496}
!259 = !{!83, !16, i64 492}
!260 = !{!83, !16, i64 500}
!261 = !{!20, !16, i64 0}
!262 = !{!83, !12, i64 189}
!263 = !{!83, !7, i64 219}
!264 = !{!83, !12, i64 187}
!265 = !{!11, !12, i64 132}
!266 = !{!11, !12, i64 133}
!267 = !{!11, !7, i64 23754}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass